From AI prototype to production product: the eval-driven path

Every prototype demoed beautifully. Six months later nothing has shipped, and "our AI strategy is basically a list of pilots" stops being a confession and starts being a diagnosis. Here are the eight stages that move a prototype into production.

Share
A dark-mode AI evaluation dashboard on a monitor showing a case table with verdict columns, red FAIL indicators, a rising pass-rate sparkline, and a commit-history sidebar
From AI prototype to production product: the eval-driven path

The pattern arrives in board meetings now, and the executive sitting across the table can hear it before the slide deck loads. The first AI prototype demoed beautifully in week two. The second one demoed beautifully in week four. The third was deemed "production-ready" in week six. Six months later, the same executive is being asked why nothing has actually shipped, why the dashboard says "active pilots: 14" and the user-facing product surface looks exactly as it did before any of it started.

I keep coming back to a sentence I've heard from heads of engineering, CIOs, and AI transformation directors more times than I can count: "Our AI strategy is basically a list of pilots." It is meant as a confession. It always lands as a diagnosis. Somewhere between the prototype that demoed well and the production system that nobody trusts enough to give real users, the work falls into a gap that classical software development never had, and most product orgs do not yet have the operating discipline to cross it.

The internal narrative shifts from "we're building AI" to "we're stuck building AI", and the team itself starts to lose the thread on why. This article is about the discipline that closes the gap. It is not a tools list. It is not a vendor comparison. It is the operating model: eight stages of work, each with a load-bearing artifact, an exit criterion you can name out loud, and a failure mode that quietly kills products at exactly that stage if you skip it. In the R&D team I lead, this is the sequence I keep coming back to. The teams that ship treat each of the eight stages as non-negotiable. The teams that stall almost always skipped one of them, usually the second.

Scoping is where most AI products silently fail

The first stage is scoping the use case. It sounds trivial. It is the stage where the most ambitious AI initiatives quietly fall apart, because scope drift in AI work is not the same as scope drift in classical software. In classical software you build the wrong feature. In AI you build a system whose behavior nobody can predict, including the people who built it, because the behavior changes with every input.

A scoped AI use case has a one-page spec. The spec names three things: the inputs the system will accept, the outputs it will produce, and the decision boundary it will respect. The boundary names what the system will refuse to do, defer to a human on, or escalate. A non-technical reviewer should be able to read the spec and predict, for any given input, what the system should do. If they can't, the scope is not yet tight enough to build against.

The exit criterion is that prediction test. Hand the spec to someone outside the team (a senior product manager, a domain expert, a service-design partner) and run them through five sample inputs. If they can predict the system's response on all five, the scope is real. If they hedge on more than one, the scope is still narrative, not specification.

The failure mode is the sentence "we'll figure out which use case as we go." It is almost always said with the best intent: a desire to stay flexible, to let the model surprise the team. What actually happens is the opposite. The team writes prompts that work for the demo, then discovers six months in that the demo input distribution covered maybe 20% of what real users send. Every prompt change after that point becomes a negotiation between fixing the new failure and breaking the old success. Without a scoped use case, there is no eval set worth building, no baseline worth measuring against, and no release criterion that could ever fire.

Most AI products fail in production not because the model is wrong but because nobody built an eval set

This is the gravitational center of the article. It is also the discipline that separates teams that ship AI products from teams that ship AI demos.

In the prototypes I have watched make it to production versus the ones I have watched stall, the single most reliable predictor was not the model choice, the framework, the prompt-engineering sophistication, or the team's machine-learning background. It was whether the team had an eval set before they had a prompt, and whether they treated that eval set as the team's most important shared artifact rather than one engineer's side project.

A real eval set contains six distinct kinds of cases. Typical cases are the inputs that represent the most common user behavior the system will see. These are easy to gather and they are necessary, but they are the floor, not the ceiling. Edge cases are the inputs near the decision boundary, where reasonable humans might disagree about the correct answer. These are where most production failures actually happen. Adversarial cases are the inputs a hostile or careless user might construct, including prompt injection attempts, malformed inputs, and cases designed to elicit the system's most embarrassing failure mode. Drift cases are inputs that look slightly different from anything in the original training or design context, anticipating the gradual change in user behavior the production system will encounter. Cost cases are inputs that are unusually expensive to process, because cost-out-of-distribution is its own production risk you can't see until the invoice arrives. And ground truth is the explicit, agreed-upon correct answer for each of the cases above, written down by a human and reviewable by another human.

Most teams ship something else entirely. They ship vibes. Or, more charitably, they ship a handful of cases somebody on the team remembered from the last demo and ran by hand before the release call. There is no curation, no coverage discipline, no ground truth document, and certainly no shared artifact the team can look at together to decide whether a proposed prompt change is an improvement or a regression. When the prompt is changed, somebody runs the same three or four examples by hand, eyeballs the output, and ships. This is not evaluation. It is hope with a Git commit attached.

What surprises me, every time, is how late this discipline arrives. The teams that eventually build a real eval set almost always build it after a production incident the team could not explain: a regression they couldn't reproduce, a customer complaint they couldn't triage, a prompt update that fixed one thing and broke another invisibly. The eval set, in other words, gets built when the absence of it has become impossible to ignore. The teams that ship cleanly build it before that incident, on the strength of having watched another team go through it first.

The discipline shift here is the part executives find surprising, and it is the part that matters most for the operating model. The eval set is a team artifact, not an engineer's artifact. The QA who used to write test cases against deterministic acceptance criteria now curates eval cases against probabilistic behavior. The business analyst who used to write user stories now specifies ground truth: what the right answer actually is, under what definition of right, with what tolerance for variance. The data scientist who used to build models now generates adversarial cases and drift cases the rest of the team would never think of. The product manager who used to triage bugs now triages eval failures, deciding which are real defects, which are scope changes, and which are ground-truth errors. Eval set construction is the work that re-routes half a product organization's existing roles into new shapes, and it is the work most orgs are still treating as something the engineers will figure out on their own.

Built right, the eval set pays compounding dividends. Every prompt change runs against it. Every model swap runs against it. Every drift event triggers an eval run that tells the team which slice of behavior has regressed before users get to find out. Every release criterion can refer to it by score and by case coverage. The eval set is the only artifact in the AI product development lifecycle that gets more valuable with every shipped version. It is also the only artifact that, once you have one, makes every subsequent question about the AI product answerable in evidence rather than vibes.

The exit criterion for this stage is direct: the eval set can disqualify a prompt change before a human reviews it. If a junior engineer can submit a prompt update and have it automatically scored against a suite of cases, with the result blocking merge below a threshold, the eval set is real. If the team is still emailing prompt diffs around for review by Slack consensus, the eval set is not yet the load-bearing artifact.

The baseline isn't the answer, it's the floor

Once the eval set exists, the third stage is the baseline. The team picks a model, writes a system prompt, drafts the few-shot exemplars, and runs the first end-to-end pass. The scores come back. They are almost certainly mediocre, and that is entirely the point.

The artifact this stage produces is a reproducible first-eval-passing configuration: model name and version, system prompt, exemplars, generation parameters, and the recorded baseline scores on the eval set. The exit criterion is that any team member can reproduce those baseline scores from the configuration alone. If they can't, if the only way to get the baseline scores back is to ask the one engineer who originally ran it, there is no baseline. There is a screenshot of one engineer's afternoon.

The failure mode at this stage is treating the baseline configuration as the final configuration. Teams that fall into this pattern build all of their subsequent infrastructure around the assumption that the model and prompt are now fixed. Then the model changes (a new version ships, an old version is deprecated, a cost-cutting decision swaps the baseline model for a cheaper one) and the team discovers that the entire harness, the entire telemetry layer, the entire monitoring approach was built against a model that no longer exists. The baseline is meant to be a starting line, not a destination. The whole point of having an eval set is that you can swap the model and immediately know whether the swap helped or hurt. Teams that skip this discipline turn every model change into a months-long re-validation project.

A VS Code editor showing a baseline.yaml config with model, temperature, max_tokens and version fields, a file tree, and green passing test-run checks

A harness is what makes the system a product, not a notebook

The fourth stage is where the AI system stops being a notebook somebody can run on their laptop and starts being a system the team can operate. The artifact is the harness: a test and evaluation CI that runs the eval set against any proposed configuration change, structured logging on every production request, per-request telemetry that captures the inputs, the outputs, the model version, the cost, the latency, and the eval-relevant metadata. The full discipline behind that artifact is quality harness engineering, the emerging reliability stack.

The exit criterion is simple to state and surprisingly hard to meet: any team member should be able to take a production failure (a real user's real failed interaction) and replay it offline against the eval set within an hour. They should be able to reproduce the failure, modify the prompt or swap the model, re-run the case, and see the score change. If a production failure is an opaque event that only the engineer who built the system can investigate, the harness does not yet exist as a product artifact.

The failure mode is the demo that lives in someone's notebook while production runs blind. Telemetry is either absent or so unstructured that nobody can answer simple questions like "how often does the model refuse to answer?" or "what does an average user session cost us?" When a user complains, the team has nothing to work with except the user's screenshot and their own apologies. The system is in production by every formal definition, but the team is operating it the way they would operate a research demo: by intuition, by recent memory, and by hoping the same problem won't reappear before they have time to think about it.

The harness is the stage where the AI work most resembles classical engineering operations, and it is also the stage where AI teams who come from a pure research background most often underinvest. The instinct is to treat operability as something you will add later, once the system is "really working." The pattern I keep seeing is that systems without a harness never really work, because the team never builds the muscle of investigating, fixing, and verifying production behavior in a disciplined way.

User beta is where the eval set learns what you didn't think of

The fifth stage puts the system in front of real users: a small, deliberate group, with explicit communication about the system's limitations and an open feedback channel back to the team. The artifact is the flow of real user traces feeding back into the eval set. Every interesting interaction, every failure, every near-miss, every unexpected use of the system gets considered as a candidate case for the eval set, with the right ones added.

The exit criterion is bidirectional. Every new failure mode that surfaces in beta gets a corresponding eval case AND a corresponding prompt or model fix. Beta users have a channel to raise issues. Not "email someone if it breaks", but a real, observed, triaged channel that closes the loop back to them. If failures from beta go into a backlog that nobody works through, the beta is not actually informing the system. It is just inconveniencing the users who agreed to help.

The failure mode is putting beta users in the role of patient-zero in production. The team learns about failures the same way the users do: through the failures themselves, often through public escalation, often only after the same failure has hit several users. The beta then stops generating value and starts generating risk, and the team's confidence in the broader release erodes without any structured signal about what to actually fix.

The right disposition for beta is humility plus instrumentation. The team should expect to be surprised, and the system should be built so that the surprise is captured, analyzed, and converted into a permanent artifact (an eval case) within days, not weeks. Beta is where the eval set you built in stage two actually learns the shape of the world.

Drift is what kills the AI product after launch, not at launch

The sixth stage is what most teams discover they did not build until the AI product has been live for several months and the scores everybody was so proud of at release are no longer the scores the system is achieving in production.

The artifact is a drift monitoring layer with three signals at minimum. Input distribution shift: the inputs users are sending now look meaningfully different from the inputs the system was designed and evaluated against. Model output quality regression: the outputs are still being generated, but they are subtly worse, on a dimension the eval set can measure. Downstream user behavior change: users are abandoning sessions earlier, escalating to human agents more often, retrying more frequently, or simply using the product less. Each of these signals is a kind of drift, and each has a different root cause and a different remediation.

The exit criterion is that the drift detector fires before users complain. If the first time anybody on the team learns that the AI product has regressed is when a customer-support ticket lands, drift monitoring is not yet operational. It is also a criterion that the team has a rollback playbook: a defined sequence for what to do when drift is detected, including which version of the configuration to revert to, what the communication to affected users looks like, and what the criterion will be for declaring the regression understood and resolved.

The failure mode is quality regressing silently while nobody owns the regression. Drift is hard to notice from the inside. The team that built the system is the team most acclimated to its current behavior; they will adapt to the regression before they perceive it as one. Without an owner (a person whose explicit job it is to look at the drift dashboards weekly, ask the awkward questions, and escalate when the numbers move), drift detection becomes a piece of infrastructure that exists in the system architecture diagram but is functionally absent from the operating model.

A Grafana-style drift dashboard with an eval-score time-series, a red adversarial regression and a Drift detected 0.18 tile, beside a Slack alert in an #ai-prod-alerts channel

Cost is a first-class metric, not an afterthought

The seventh stage is the one finance teams ask about first and AI teams remember last. The artifact is per-request cost telemetry. The system records, for every interaction, how much it cost to serve. A dashboard surfaces this in aggregate, broken down by user segment, by feature, by model version, by time window. Budget alerts fire when the system's spend trends materially away from the modeled unit economics. A cost-quality tradeoff view lets the team reason explicitly about which interactions are worth what cost, and where the budget headroom for adding capability lives.

The exit criterion is that the team can answer one specific question to within a 20% confidence band: "what does one user interaction cost us?" If the team cannot answer this, and it is astonishing how many teams cannot, then the unit economics of the AI product are not yet legible to anyone, including the executives who will eventually be asked to defend them.

The failure mode is the surprise invoice. The team ships the product, the product gets used more than expected, and the next month's bill from the model provider arrives at a number nobody had modeled. There is no relationship between any individual feature the team built and the cost it generates, no view of which user segments are profitable and which are not, no understanding of which prompt changes also changed the cost basis of the product. Cost lives in a separate domain from quality, and decisions about quality are made without reference to their cost implications.

Cost as a first-class metric does not mean cheapest-wins. It means that quality decisions and cost decisions are made in the same conversation, by people looking at the same dashboard, with the same eval-set context informing both. Teams that treat cost as something the finance team will worry about later end up with AI products that get pulled in a quarterly cost review long before they get pulled for quality reasons.

Release is the discipline, not the milestone

The eighth and final stage of the operating model is the one most organizations treat as the celebration and least as the discipline. The artifact is a release-criteria checklist. The eval-set pass thresholds the system must clear for each release. The drift baseline the system establishes at release, against which subsequent drift will be measured. The cost ceiling the team commits to operating within. The user-trust calibration: what the system is and is not allowed to claim, how it handles low-confidence answers, how it escalates. The rollback path that names the exact configuration the system reverts to if the release fails any criterion within the first week.

The exit criterion is that each item on the checklist has a numeric or behavioral pass/fail, the same checklist is reused for every subsequent release, and the team treats a failing criterion as a release block rather than a release footnote. If release criteria are a recommendation, they are theater. If they block ship, they are discipline.

The failure mode is the release as ceremony. The team gathers, somebody pushes the deploy, the product is now "in production", but nobody can name the criteria the release actually satisfied. When the product breaks two weeks later, the team has no baseline to compare against, no rollback target to revert to, no agreed definition of what "working" means. This is the inverse of the prototype-to-product gap I described in the opener. It is the gap where the team has all the engineering substance of a real product but none of the operational rigor that lets a real product be operated.

This is also where the prototype-versus-product distinction lands most sharply. Vibe-coding an AI feature in two weeks does not mean you have an AI product. The two-week demo and the eighteen-month production system share the same model, often the same prompt, sometimes even the same code. What they do not share is the operating discipline that surrounds them. The demo can be impressive without any of stages one through eight. The product cannot exist without all of them.

The teams I have watched cross this gap successfully have one quiet trait in common: they stopped talking about the moment of release and started talking about the criteria of release. The vocabulary shift is small. The org consequences are significant.

Frequently Asked Questions

Doesn't eval-driven development slow us down?

No. It slows down the first release, then it speeds up every release after that. The first eval set takes real work to build (a few engineering-weeks for the initial 30–50 cases). After that, every prompt change, every model swap, and every drift event runs against the same eval set in minutes, not days. The teams that ship AI products fast are the teams that built the eval set early. The teams that "saved time" by skipping it spend that saved time many times over on incidents they cannot reproduce.

What actually slows teams down is shipping the second, third, and fourth changes without a way to know whether each one helped or hurt. That is the cost the eval set is paying down.

What if we're already in production without an eval set?

Build the eval set against current production behavior, and treat the next prompt change as the first gate. Start by sampling 30–50 real user interactions from the last few weeks of production logs. For each one, agree (as a team, including QA and a domain expert) on what the correct answer should have been. That is your initial ground truth.

From the moment the eval set exists, every proposed change runs against it before merge. You do not need to retrofit eval discipline backward across the history of the product. You just need to install it as the gate from this point forward. Most teams find that the first eval run on the existing system surfaces several latent defects nobody had noticed; those become the first batch of high-priority fixes.

How small can the eval set be?

Start at 30–50 cases covering the six case types in the article: typical, edge, adversarial, drift, cost, and ground truth. Grow to 200+ as real user traces accumulate. Below 30 cases you cannot meaningfully detect regressions; above 50 in the initial set you spend too long curating and not long enough operating. The right sequence is start small, get the harness running, then add cases from production traces as they reveal new failure modes.

What matters more than the case count is the coverage discipline. A 30-case eval set with all six case types represented is more useful than a 200-case eval set that is 200 variations of typical cases.

Doesn't a better model fix the production quality problem?

Sometimes. But you cannot tell whether it did without an eval set. A new model may improve quality on the cases you remember and regress on the cases you have forgotten. Without an eval set that scores every change against a documented suite, "the new model is better" is a feeling, not a measurement.

The deeper issue is that model upgrades happen on the vendor's cadence, not yours. A team whose only quality discipline is "switch to the next-generation model when it ships" inherits every regression that model introduces along with every improvement. The eval set is what lets you keep the improvements and reject the regressions.

Does this apply to RAG-based or fine-tuned AI products?

Yes. The discipline is architecture-independent. RAG products need eval cases for retrieval quality (did the right documents come back?) AND for final answer quality (given those documents, did the model produce a good answer?). Fine-tuned products need eval cases that span the fine-tuning distribution AND held-out drift cases that test whether the model still generalizes.

In both cases, the same eight stages apply. The artifacts inside each stage just have additional layers. A RAG harness logs both retrieval traces and generation traces. A fine-tuning workflow versions the training data alongside the model artifact. The operating-model discipline does not change; the artifacts get richer.

Where does this framework break for very small teams?

It does not break. The artifacts shrink. A 3-person AI-product team still has a one-page use-case spec, a 30-case eval set, structured telemetry on every production call, and release criteria that block ship. What changes is the breadth of curation: one person plays multiple roles (the engineer also curates eval cases; the founder also writes ground truth). What does NOT change is the existence of each artifact and each exit criterion.

The framework actually scales DOWN better than it scales up. Small teams have less room for operational sloppiness and benefit most from the discipline. The teams that break under this framework are not small teams. They are mid-sized teams that have enough engineers to feel they can move fast without it, and then discover they cannot.

What this means for your operating model

The reader who has gotten this far is, most likely, an executive with prototypes stuck in R&D and a board update coming up. The temptation will be to read this as a tools checklist: pick an eval framework, buy an observability platform, hire an AI engineer who has done this before, and tick the boxes one by one.

That reading misses the structural claim of the article. An AI product is not a classical product with a model added to it. It is a different product-development discipline, and the discipline requires a different operating model. Eval-driven from the first day of scoping, not as a phase that happens "before launch". Governance and standards as foundational artifacts, not as a compliance overlay. Cost as a first-class metric that lives alongside quality in every release conversation, not as a finance team's problem. User trust calibration as a deliberate design decision the product makes about itself, not as marketing copy added later.

The org structures that produce shipped AI products look different from the ones that produce AI strategies that are basically lists of pilots. The QA function is partly eval curation. The business analyst function is partly ground-truth specification. The product manager function includes drift triage and cost tradeoff calls. The release process has criteria that block ship. The board update can answer the question, "what does one user interaction cost us, and how do we know it is getting better?", without anybody having to leave the room to ask.

I have watched the prototypes that made it across the gap, and I have watched the ones that did not. The difference is never the model. It is whether the team built the operating model around the model: eight stages, each with its artifact, each with its exit criterion, each with its failure mode acknowledged out loud. The teams that build that operating model ship AI products. The teams that don't build it keep adding pilots to the list, and the executive sitting across the table at the next board meeting hears the same sentence again: our AI strategy is basically a list of pilots.

The first step out of the pattern is not another pilot. It is the operating model itself.