Backend • Data • Python • FastAPI • SQL • ETL

About me

I build Java backend services and user-facing workflows, plus Python data/ML pipelines and grounded AI/RAG features. My projects emphasize clear documentation, reproducible runs, and tests where they add real confidence.

John Doan
Quick summary
Target roles: Associate Software Engineer (Backend/API) or Data Engineering. Open to adjacent roles focused on shipping, reliability, and clear documentation.

  • Strengths: FastAPI + OpenAPI, SQL/ETL, reproducible runs, clear READMEs.
  • Learning focus: testing depth, evaluation practices, and clean “run” workflows.
  • Style: practical, measurable, reviewer-friendly projects.

Backend & API Delivery

I deliver backend APIs in Java and Python with production-minded defaults.

  • Service/repository layering with SQLite/JDBC persistence and REST endpoints.
  • FastAPI + Pydantic APIs with consistent validation and error handling.
  • Review-ready docs with OpenAPI/Swagger and clear run paths.

Data Pipelines & Quality

I build practical ETL pipelines that are easy to reproduce and review.

  • Raw-to-curated table flows for KPI reporting in DuckDB/SQLite.
  • Versioned artifacts with sanity checks to catch regressions early.
  • Simple scripted runs so reviewers can reproduce outputs quickly.

ML Prototypes (Project Work)

I prototype small, explainable ML and retrieval flows with transparent limits.

  • Clear inputs/outputs and logged runs for debuggable experiments.
  • Lightweight evaluation for quality checks and failure-case tracking.
  • Grounded responses with explicit limitations and reviewer clarity.

Toolbox

Python FastAPI Pydantic SQL DuckDB SQLite Pandas scikit-learn Dash/Plotly Streamlit Git/GitHub YAML

I emphasize reviewer-friendly delivery: consistent repo structure, clear READMEs, scripted runs, and (where applicable) lightweight tests and basic CI checks.

Currently learning

  • Java backend patterns: service/repository layering, persistence, and REST endpoints (Spring Boot-style).
  • Testing discipline: JUnit 5 for Java and pytest for Python (API contracts + data transforms).
  • Grounded AI/RAG: retrieval quality, citations, and simple evaluation harnesses.
  • Reproducible delivery: tight run steps (1–3 commands), Docker when it reduces friction.
  • Operational habits: logging, configuration hygiene, and lightweight runbooks.

  • Grounding answers with citations and clear source passages.
  • Simple evaluation: failure cases, query coverage, and run logs.
  • Small UIs to make prototypes easy to demo.

  • Dependency pinning and safer configuration patterns.
  • Input validation and consistent error handling.
  • Keeping secrets out of code and using environment configs.
I keep projects intentionally scoped, but implemented with “real engineering” habits: clarity, structure, and reproducibility.
View Projects Credentials Contact

Open to associate backend/data roles and structured, engineering-focused teams.