Service · AI
LLM applications, agents and retrieval pipelines — built on your data, measured by evals, running in your own accounts.
Most demos stop at the middle column. What survives real users is everything after it.
ingest index retrieve generate
────── ───── ──────── ────────
documents ────► chunks ────► top-k ────► model ────► answer
database + vectors + rerank + tools
API feeds + metadata + filters + guardrails
│ │
│ ▼
│ fallback when
│ the answer is
│ not good enough
▼
┌───────────────────────────────────────────────────────────────────┐
│ evals a fixed set of cases with known-good answers, │
│ replayed on every change before it reaches users │
└───────────────────────────────────────────────────────────────────┘
The reranking, the fallbacks and the eval set are the parts that get skipped in a demo and then rebuilt in a panic. Here they are scoped from the start, not added after the first complaint.
Scope
Which decision this augments, what data exists, and what “working” would have to mean. If a model is not needed, that comes up here.
Prototype on real data
Two to three weeks to something running on your actual documents or database, not sample text. This is where most assumptions die cheaply.
Evals before scale
The case set is written from the failures the prototype produced, so quality becomes a number instead of an opinion.
Production
Auth, rate limits, logging, cost controls — the unglamorous parts that decide whether it survives its first real month.
Handover
Your repositories, your accounts, written down so the next engineer can carry it without a phone call.
Optional: keep going
A retainer if you would rather the same hands stayed on it while it grows. Decided before the build, not after.
Prototype
2–3 weeks
To production
6–12 weeks
Engagement
Fixed scope, quoted after the first call
Stack
TypeScript, Python, Postgres, pgvector
Fine-tune, or use retrieval?
Retrieval first, almost always. Fine-tuning changes how a model behaves, not what it knows, and it ties you to a model version you will want to leave. Most problems that look like fine-tuning problems are retrieval problems with a bad chunking strategy.
How long does a prototype take?
Two to three weeks for something running on your data, not a demo on sample text. Production usually lands between six and twelve weeks, depending on integrations and how clean the data turns out to be.
How do you know it is actually working?
The eval harness is part of the build, not an extra line item. Cases with known-good answers, replayed on every change, so a prompt edit that quietly breaks a feature is caught before your users find it.
Who owns the code and the accounts?
You do, from the first commit. Everything runs in your repositories and your provider accounts. Nothing to migrate off later, because nothing ever lived somewhere else.
What if we do not actually need AI?
Then that is what the first call concludes, and it costs nothing. A rules engine, a search index or one good query often beats a model — cheaper to run, easier to debug, and it does not hallucinate.
Can it run on our own infrastructure?
Yes. Open-weight models can be served on your hardware or private cloud when data cannot leave. It costs more engineering and usually some quality — that trade-off gets priced before you commit to it.
Three sentences is enough: what the task is, what data exists, and when it needs to work. You get an honest read on whether it is worth building — including if the answer is no.