A working prototype
Running on your data, in the workflow it would actually live in. Clickable, not imagined.
Tech
Most AI products are not chatbots. They are agents finishing tasks across systems, scoring models behind a single field, tools called from software your team already runs, classifiers inside processes nobody watches.
Four things carry one into daily use: the prototype, the stack under it, the production build, and the rhythm that keeps it current.

// one request
tracedwhich model answered · what was retrieved · what it cost
The first commitment
“Is this worth building properly?”
A prototype is evidence, not a demo. It runs the happy path, on data we prepared, with permissions that come later, against one model with no fallback.
It answers one question, and both answers are useful. Either one arrives in two weeks.
Running on your data, in the workflow it would actually live in. Clickable, not imagined.
What worked, what did not, and what the evidence says about building it properly.
Itemized against the nine decisions below, so the next commitment is priced before you make it.
Two different objects
It is a different thing entirely, and that is the whole answer to why one takes two weeks and the other takes three months. Switch between them and watch what has to change.
Six things change, and every one of them is engineering the prototype was allowed to skip.
The stack
Every AI product is these nine layers, whether or not anyone chose them deliberately. We choose them with you, and we write down why.
Four are worth deciding carefully, because undoing them later costs real money. The rest can change whenever the evidence changes.
// nine layers, one system. The lit plate is the one you are reading.
Our defaultHeadless or embedded. Chat where the task has no defined end.
A chat box is the right answer far less often than it gets specified. Most work has a beginning and an end, and belongs inside the software people already have open.
Our defaultDeterministic backbone, model called at chosen points.
Cheaper to run, easier to debug, and predictable under load. Autonomy is reserved for steps whose path genuinely cannot be known in advance.
Our defaultLangGraph checkpointing under an hour, Temporal beyond it.
Anything that runs long enough to be interrupted needs to survive the interruption. The threshold is roughly an hour of wall-clock work.
Our defaultHybrid search plus reranker before anything exotic.
Retrieval sets answer quality more than the model does. Hybrid search with a reranker resolves most of it without a research project.
Expensive to reverse: the embedding model.
Our defaultpgvector under ten million vectors, Qdrant or Weaviate above.
A dedicated store earns its place when scale, metadata filtering, or tenant isolation calls for it. Below that, it is one more system to operate.
Expensive to reverse: where the data sits.
Our defaultGateway always. It is what makes routing real.
One door out is what turns routing, budget caps, provider fallback, and per-call logging from intentions into mechanisms.
Expensive to reverse: gateway or no gateway.
Our defaultMCP, with auth and per-server permissions in front.
A shared protocol means a new tool is a configuration change rather than a build. The permissions layer in front of it is not optional.
Our defaultSuite gating deploys, same as ordinary tests.
Quality that is only checked by eye drifts silently. A suite on real cases from your work catches the regression before it ships.
Our defaultOpenTelemetry GenAI conventions, into monitoring you already run.
Open conventions mean the traces land in the tooling your team already watches, instead of a second dashboard nobody opens.
Expensive to reverse: whether tool calls are logged.
Why those defaults
Workflows are cheaper, more predictable, and easier to debug than agents. Autonomy earns its place where the number of steps genuinely cannot be known in advance.
Workflows offer predictability and consistency for well-defined tasks, whereas agents are the better option when flexibility and model-driven decision-making are needed at scale.
Anthropic, Building Effective AI Agents, December 2024
It sets answer quality more than the model does. Hybrid search plus a reranker resolves most retrieval work on its own. A dedicated vector store earns its place when scale, metadata filtering, or tenant isolation calls for it.
Cheap fast model for classification and extraction, frontier model for the reasoning that needs it, in the same system. The gateway is what makes that possible.
The build
“What makes it survive real users?”
The prototype earned the decision. This build makes it something your organization runs every day, on records as they actually arrive.
Real records replace the clean sample. Missing fields, duplicates, the twelve-year-old naming convention nobody documented.
Filter by permission before retrieval, so the system only ever reaches what the user is cleared to see.
Schema validation on everything downstream, with defined behavior when a response falls outside it.
Scoped access per tool, and human confirmation on consequential actions.
Caps per user and per workload, sized against real production volumes rather than pilot ones.
Retries, provider fallback, and a rollback that has actually been tested.
Waves, with a measurement at each one, so adoption is observed rather than assumed.
// what you get
“Who keeps it current?”
Models improve, prices fall, providers ship new versions. Re-benchmarking is not maintenance, it is the cheapest performance work available, and it usually pays for itself.
Changing an embedding model means reindexing the corpus. We design for that from day one, so it stays a scheduled operation rather than a crisis.
Monthly, sized to the system: a named senior contact, a re-benchmarking rhythm, a visible backlog, and a cost model held against real spend. Everything documented for handover at any point.
FAQ
Different objects. The prototype runs on data we prepared, for users in the room, one model, no fallback. Production runs on data as it arrives, for users who are not there. The second timeline goes to retrieval quality, entitlements, evaluation, failure handling, and integration.
It depends on volume and routing, and we model it during the prototype rather than estimating it afterward. The prototype reports cost per run on your real data, which extrapolates to production volumes with reasonable accuracy. Budget caps per user and per workload are set before launch.
Yes, after an assessment. We look at how retrieval is evaluated, where permissions are enforced, and what is traced today, then give you a costed path forward with the options side by side.
No. We build on what you run. We give considered input on the four expensive-to-reverse decisions: data location, embedding model, gateway, tool logging.
Usually several in the same system, routed by task. The benchmark sits in the AI pillar; this pillar implements the result.
Both, and the choice is made per step rather than per project. Most systems we ship are a coded workflow that calls a model at specific points, with autonomous behavior reserved for the steps where the path genuinely cannot be known in advance. That mix is cheaper to run and easier to reason about when something needs changing.
Good, that shortens the build. Most of these layers sit on top of infrastructure you already run, and retrieval in particular tends to work better close to the systems where your data already lives. We start from your stack and add what the use case needs.
Yes. Residency and sovereignty are separate questions and we answer both at design time. Residency is where the data physically sits. Sovereignty is whose law reaches it, which depends on who operates the infrastructure rather than where the building is. Both go in the architecture document before the build starts.
An evaluation suite runs in CI on a set of real cases from your work, so a change that moves quality shows up before it ships. In production, tracing shows the full path of any request: which model answered, what was retrieved, which tools were called, what it cost. Your team has the same view we do.
That is the intent. Source, documentation, and the architecture decision record are yours throughout. Where your team wants to own a layer from the start, we build it with them rather than handing it over later.
Yes. Source, documentation, and data are yours.
Related work
Three builds that went into production and stayed there: ERP integration behind a human approval step, two platform APIs behind one workspace, and a quotation pipeline sales actually uses.

Procurement and supply chain
Mismatches surfaced at goods receipt, far too late to act. Extraction, three-way matching, and an exception queue moved the discovery forward to the confirmation stage.
Handwritten extraction droppedRead the case→
Demand generation
Two people ran both ad platforms alongside everything else. A campaign workspace now drafts, tests, and adjusts. Neither ad manager gets opened in normal operation.
Both ad managers retiredRead the case→
Sales and pricing
Pricing logic lived in three people’s heads. Writing it down was most of the project. Sales now checks and sends rather than assembling from scratch.
The pricing logic, written downRead the case→Talk to us
A conversation with the senior team about your markets, your data, and where AI would actually pay back for you. No slides, no obligation, and if the honest answer is that AI is not your next move, you will hear that too.