LLM app development
LLM apps that hold up.
A demo that works once is easy. I build LLM features that keep working on real inputs, with evals, latency budgets, and guardrails, on top of OpenAI or Anthropic.
It behaves on real data
I write evals against your actual inputs before I ship, so you know how the feature does on the messy cases, not just the happy path in a demo.
Fast enough to use
Streaming, caching, and a latency budget from the start. The response shows up while people are still paying attention.
Grounded, not guessing
Retrieval over your own content, with citations and guardrails, so answers come from your data instead of the model making things up.
From prompt to production.
The hard part of an LLM feature is everything around the model call. I handle retrieval, tool use, retries, cost tracking, and the evals that tell you a change made things better and not worse.
- Retrieval with a real vector store and good chunking
- Tool calling and agents that stay on task
- Cost and quality tracking, so nothing drifts quietly
Models
OpenAI and Anthropic, picked per task on cost and quality. Not married to one, and easy to swap.
The stack
TypeScript, Next.js, Node, and PostgreSQL with pgvector or a dedicated vector store when the corpus is large.
Retrieval
Embeddings, chunking, and reranking tuned to your content, with citations so answers stay checkable.
Handover
Your repo, your API keys, your prompts and evals. The system is yours to run and extend without me.
What I usually build.
Pick the closest fit, or we scope the real feature on a call.
Chat and assistants
Grounded chat with memory, tool use, and streaming, wired into your product and data.
Retrieval and search
Ask questions over your docs, tickets, or catalog and get answers that cite the source.
Agents and automation
Multi step agents that call tools and finish a task, with limits so they stay predictable.
Tell me the use case.
Fifteen minutes and I come back with a scope, a price, and a date. If an LLM is the wrong tool for the job, I will say so.