AI Engineering
AI features that survive contact with production.
I ship LLM integrations end-to-end: retrieval, structured outputs, evals, and the unglamorous infra that keeps them reliable. Python, FastAPI, Postgres, pgvector.
(01)What you get
I help teams turn LLM ideas into features that actually ship and stay up. RAG pipelines that handle messy data, structured outputs you can trust, evals that catch regressions, and the observability that tells you when a prompt change breaks something.
- 01
Retrieval-augmented generation
Clean ingestion, hybrid search (BM25 + vector), reranking, and answer synthesis. Grounded, citable, fast.
- 02
Structured outputs + typed pipelines
Pydantic / Zod schemas, JSON-mode, function calling. Outputs you can validate, route, and store.
- 03
Eval-driven development
Task-scoped eval sets, pairwise comparisons, and CI gates. Prompt changes don't ship unless numbers improve.
- 04
Observability + cost control
Langfuse / OpenTelemetry tracing, per-feature budgets, prompt caching, and graceful degradation.
(02)How we work
- 01
Scope
Pick the narrowest useful feature. Define success with a shipped eval set before we write the first prompt.
- 02
Build
Iterate on prompts + retrieval against the eval set. Fast feedback loops, no vibes-based tuning.
- 03
Integrate
FastAPI service, typed contracts, idempotent jobs, feature flags, and a rollback that works.
- 04
Monitor
Tracing, cost dashboards, drift detection, and a weekly eval re-run. Surprise is the enemy.
(03)Stack and engagement
Python 3.12, FastAPI, Pydantic, OpenAI, Anthropic Claude, Postgres + pgvector, Qdrant, Langfuse
Typical engagements: 2-week PoC, 6-12 week build. Fixed-scope or day rate. Data access and eval-set co-development start week one.
(04)Frequently asked
Do you do fine-tuning?
Rarely as a first move. Most 'we need fine-tuning' problems are actually retrieval, prompt, or schema problems in disguise. When real fine-tuning is warranted, I do LoRA / QLoRA on open weights or use OpenAI's fine-tuning API, but only after baselines prove it's the right lever.
Can you work with our existing data?
Yes. Most of my projects involve ingesting messy internal documents, DB tables, or API data into a retrieval system. I'm comfortable with ETL, schema design, and the data-cleaning work that actually makes LLMs useful.
How do you pick models?
Evals decide. I benchmark at least 2-3 models per task against your data, score on latency + cost + quality, and route traffic accordingly. Defaults I reach for: Claude Sonnet for reasoning, GPT-4o-mini for classification, embedding models per domain.
Do you also own the frontend?
I can ship the API and minimal React/Next.js frontend for proof-of-concepts. For production UI, I prefer to pair with your frontend team and own the backend + AI layer end-to-end.
What does good look like at the end of an engagement?
A documented eval set in CI, traced in Langfuse, with clear cost + latency SLOs, a rollback path, and a weekly review ritual. Your team can ship prompt changes confidently after I leave.