Services

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.

  1. 01

    Retrieval-augmented generation

    Clean ingestion, hybrid search (BM25 + vector), reranking, and answer synthesis. Grounded, citable, fast.

  2. 02

    Structured outputs + typed pipelines

    Pydantic / Zod schemas, JSON-mode, function calling. Outputs you can validate, route, and store.

  3. 03

    Eval-driven development

    Task-scoped eval sets, pairwise comparisons, and CI gates. Prompt changes don't ship unless numbers improve.

  4. 04

    Observability + cost control

    Langfuse / OpenTelemetry tracing, per-feature budgets, prompt caching, and graceful degradation.

(02)How we work

  1. 01

    Scope

    Pick the narrowest useful feature. Define success with a shipped eval set before we write the first prompt.

  2. 02

    Build

    Iterate on prompts + retrieval against the eval set. Fast feedback loops, no vibes-based tuning.

  3. 03

    Integrate

    FastAPI service, typed contracts, idempotent jobs, feature flags, and a rollback that works.

  4. 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.

Let’s talk about your project.