Skip to content
Epic Software Labs
All articles

Delivery

Why AI features take five times longer than the demo suggested

The demo took two days; shipping took four months. Where that time goes, why it is nobody's fault, and the questions that get you a realistic timeline.

9 min readEpic Software Labs

Key takeaways

  • The demo proves the capability exists. It does not touch the work that makes a capability shippable, which is most of the budget.
  • Four things the prototype never had to handle: inputs you did not choose, cost per request, latency under load, and a defined behaviour for being wrong.
  • Ask for the evaluation set before you approve the build. If nobody can say how quality will be measured, the timeline is fiction.
  • Inference is a recurring per-use cost, so an AI feature can be successful and unaffordable at the same time. Set the ceiling before building.
  • Plan for the model call to be a small fraction of the engineering. Everything around it is the project.

Understanding why AI projects take so long starts with a reliable pattern in AI feature work, and if you have funded one you have probably lived it. The prototype takes two days and is genuinely impressive — impressive enough that it gets shown to the board. Then it takes four months to ship, and everybody is surprised and slightly suspicious.

Nothing has gone wrong. The demo simply proved the easy part, and the easy part is not where the money goes.

What the demo did not have to handle

A prototype runs on inputs its author chose, once, with no cost ceiling and no consequence for being wrong. Production removes all four of those at the same time.

The demoProduction
Inputs someone pickedWhatever users type, including nonsense and abuse
Ran onceThousands of times a day, at once
Cost irrelevantA per-request bill against a real margin
Latency irrelevantUsers leave; timeouts cascade
Wrong was funnyWrong is a support ticket, or a liability
Quality judged by looking at itQuality has to be measured to be managed

The engineering that closes each of those gaps is the four months.

Where the time actually goes

Measuring quality. Before anything can improve, you need a way to tell whether it has. That means assembling realistic examples with acceptable answers and running them on every change. Teams that skip this cannot distinguish an improvement from a regression, so they oscillate — fix a complaint, break something nobody was watching, find out six weeks later from a customer.

Getting the right information to the model. If the feature works over your own documents or records, this dominates everything else. Which material gets retrieved, how it is ranked, how fresh it is. Research on long contexts is unambiguous that supplying more material is not a fix — accuracy depends on where relevant information sits in the input, and burying the right answer among twenty near-misses measurably degrades results.

Deciding what happens when it is wrong. A product decision, not a technical one, and it has to be made explicitly. Does the system validate and retry? Show sources so the user can check? Flag uncertainty? Route to a person? Each is a different amount of work and a different user experience.

Controlling cost and latency. Instrumented, budgeted, and tuned — routing simple requests to cheaper models, caching what repeats, keeping the input tight.

Handling the provider being unavailable. It happens. What does your product do?

A worked project timeline: prototype to production

Abstractions about "where the time goes" land better against a real shape, so here is a genuine AI feature timeline — an AI-assisted document search feature for a legal services product, from prototype to production launch.

Day 1–2: the prototype. A weekend project, essentially — a hosted model, a handful of sample documents, a basic retrieval setup. It works well on the five documents the engineer tested it against, and it gets shown to the leadership team, who are impressed and ask when it can ship. The honest answer, though nobody says it yet, is that this prototype has answered exactly one question: the underlying capability exists.

Week 1: building the evaluation set. Thirty real documents from the actual corpus, with questions a lawyer would genuinely ask and answers a senior associate signs off as correct. This is unglamorous, invisible work — nothing demoable comes out of it — and it is also the single highest-leverage week in the whole project, because everything that follows is measured against it.

Weeks 2–3: retrieval quality. The prototype's naive chunking strategy turns out to split contract clauses across chunk boundaries, losing context that changes the correct answer. Rebuilding chunking around document structure — clause by clause rather than by fixed token count — takes most of two weeks and moves the evaluation score from mediocre to genuinely good. This is invisible in a demo and is the difference between a feature lawyers trust and one they quietly stop using after the first wrong answer.

Week 4: failure handling and citations. The product decision that the summary must always show which source clause it drew from, so a lawyer can verify rather than simply trust. This adds meaningful engineering — tracking provenance through the retrieval pipeline — and it is the single change that determines whether the feature gets adopted, because a legal user will not act on an unsourced claim regardless of how accurate the underlying model is.

Week 5: cost and latency instrumentation. Per-request cost tracking, a ceiling set based on the pricing tier the feature will ship under, and caching for the common queries that turn out to represent a third of real usage once the evaluation set reveals the actual query distribution.

Week 6: security review. The feature ingests uploaded documents, which is new user-supplied content flowing into a model — the kind of surface the OWASP LLM Top 10 exists to cover. A review here catches a path where an uploaded document's content could influence the retrieval ranking for other users' queries in a shared index, closed before it ships.

Weeks 7–8: limited rollout. Ten users, watched closely. The evaluation set did not include a category of query — searching across multiple document types simultaneously — that turns out to be common in real use and performs worse than everything else. Two more weeks address it specifically, informed by real usage rather than by guessing at what might be missing.

Total: roughly ten weeks from prototype to a launch the team is actually confident in — five times the two days the prototype took, and the ratio the title of this piece refers to is not an exaggeration; it is close to typical for a feature of this shape.

LLM evaluation in practice: what thirty examples actually buys you

LLM evaluation sounds like it requires a large, sophisticated test harness, and the useful version is smaller and more achievable than that reputation suggests.

Thirty realistic examples, each with an input and an acceptable output, run automatically whenever the prompt, model or retrieval logic changes — that is the whole mechanism, and it converts every subsequent change from "does this feel better" into "does the score move." The value is not in the number thirty specifically — it is in having any consistent, automated measurement, because the alternative is a team eyeballing a handful of outputs and disagreeing about whether quality improved.

Growing the evaluation set over time matters more than getting it large on day one. Every real failure mode discovered in production — the multi-document-type query in the worked example above, or any comparable gap — becomes a new evaluation example, so the set becomes a growing record of every way the feature has previously gone wrong, checked automatically on every future change. A team that treats evaluation as a one-time setup task rather than a continuously growing asset loses this compounding benefit, and tends to rediscover the same failure modes repeatedly across different releases.

The cost of building this is genuinely small relative to what it prevents — a day or two to assemble the first thirty examples, and an hour here and there to add new ones as they are discovered. Weighed against the cost of shipping a regression to production because nobody could tell a change had made things worse, it is one of the cheapest insurance policies available in this kind of build.

The cost model is genuinely different

Most software has near-zero marginal cost: the thousandth user costs roughly what the first did. AI features do not. You pay per request.

The consequences are worth internalising before you commit:

  • A generous free tier can become a real expense
  • Heavy users cost more than light users, which your pricing may not reflect
  • Costs scale with success, which is a strange position to be in
  • A single prompt change can move the bill noticeably

This is why "set a per-request ceiling" belongs in the requirements next to the functional ones. A feature can be excellent and unaffordable, and that is a worse outcome than one that never shipped.

Questions that get you a real timeline

Ask these before approving the build. They are all answerable in plain English:

  1. How will we measure whether the output is good, and can I see it? If the answer is "we'll look at it", the estimate is a guess.
  2. What is the cost per request, and what is the ceiling?
  3. What happens when it is wrong? What does the user see?
  4. What happens when the provider is down?
  5. What are we shipping to a small group first, and what would make us stop?

A team with real answers has thought about production. A team that has only shown you a demo has not started yet — which is fine, as long as the plan reflects it.

What a realistic plan looks like

  • Week one: build the evaluation set and establish baseline quality
  • Weeks two to six: build and iterate against it, with cost instrumented from the first deploy
  • Weeks seven to nine: hardening — failure handling, latency, guardrails, the interface for wrongness
  • Weeks ten onward: limited rollout, watching quality, cost, latency and the support queue together

The support queue is the underrated one. It surfaces failure modes your test set was never going to contain, which is precisely the category you most need to hear about.

The reframe worth taking away

The prototype was not a waste, and it was not a lie. It answered a genuinely valuable question: is this capability achievable at all?

It just did not answer the other one — can we run this for thousands of people, affordably, and handle it being wrong? That second question is the project. Budget it as such and these builds stop surprising anyone.

Planning an AI feature development timeline that does not surprise the board

Pulling the pieces of this piece together into a planning template for the next AI feature on your roadmap — an AI feature development timeline that reflects reality rather than the prototype's apparent completeness.

Budget these phases explicitly, even if the specific durations differ from the worked example above: evaluation set construction (roughly a week), core capability iteration against that evaluation set (the largest single phase, typically several weeks), a dedicated failure-handling and interface-design phase (often skipped in initial estimates entirely), cost and latency instrumentation, a security review proportional to what the feature touches, and a limited rollout period before general availability. Naming each phase explicitly in the plan — even before knowing exact durations — is what prevents the whole project from being estimated as though only the first phase existed.

The AI project cost overrun pattern this piece describes is not really about AI specifically — it is the general pattern of underestimating verification work applied to a domain where the prototype-to-production gap happens to be unusually large. Naming the phases in advance, even roughly, converts a plan that will predictably surprise everyone into one that has already accounted for where the real time goes.

This is the same estimation discipline covered generally in how long does software take to build, applied specifically to the AI feature shape where the gap between "it works in the demo" and "it is ready for production" tends to be larger than on conventional software — worth reading alongside this piece if the project in question also has ordinary, non-AI scope attached to it, which most do.

Setting expectations before the demo, not after

The single most effective intervention available is setting the five-times framing described in this piece's title before the prototype is ever shown to anyone outside the immediate team — not as a caveat that dampens enthusiasm, but as an accurate description of what a prototype has and has not yet proven. A leadership team told upfront that a two-day prototype represents perhaps a fifth of the total work reacts to a ten-week timeline as expected; a leadership team who only heard about the two days reacts to the same ten weeks as an overrun. The timeline does not change. The reaction to it does, entirely based on what was said first.

In one sentence

The prototype answers whether an AI feature is possible; the four months after it answers whether it is actually shippable — plan for both questions, not just the first one.

A practical next step

The next time an AI prototype impresses a room, resist the urge to give a ship date on the spot. Instead, commit to coming back within a week with the evaluation-set plan and a realistic phase-by-phase timeline built from the pattern in this piece. That short delay, spent doing the one piece of invisible work that actually predicts the schedule, consistently prevents the larger and more painful delay of a confident date that turns out to be wrong. See also how we scope a build for the specification format that makes this concrete.

Frequently asked questions

Why do AI projects take so much longer than the prototype suggested?

Because the prototype ran on inputs its author chose, once, with no cost ceiling and no consequence for being wrong. Production removes all four of those at the same time. The engineering that closes each gap — evaluation, retrieval quality, failure handling, cost control, latency — is the actual project, and it typically dwarfs the model call the demo consisted of.

What should I ask before approving an AI feature build?

How will we measure whether the output is good, and can I see that measurement? What is the cost per request and what is the ceiling? What happens when the model is wrong, and what does the user see? What happens when the provider is down? A team with clear answers has thought about production. A team that has only shown you a demo has not yet started.

How much does an AI feature cost to run?

Unlike most software, cost scales with usage — you pay per request roughly in proportion to the amount of text involved. This means a successful feature costs more than an unsuccessful one, which is an unusual position. Set a per-request ceiling as a requirement before building and instrument it from the first deployment; discovering it in the first month's invoice is the common and avoidable path.

Can we just use a bigger model to fix quality problems?

Usually not, because most quality problems are not model problems. If the feature works over your own data, the dominant factor is whether the right information reached the model at all — retrieval quality, not raw capability. Research on long contexts also shows that simply supplying more material degrades accuracy, since attention across a long input is uneven. Upgrading the model is the expensive way to not fix a retrieval problem.

How do we know when an AI feature is ready to launch?

When quality is measured rather than asserted, cost per request is inside budget at expected volume, there is a defined and tested behaviour for wrong output and for provider outages, and it has run against real users at low volume without surprises. Shipping to a small cohort first is not caution — it is the only way to find the failure modes your test set did not contain.

What is LLM evaluation and why does it take extra time?

LLM evaluation is the practice of running a model-powered feature against a fixed set of realistic inputs with known-acceptable outputs, automatically, whenever the prompt, model or retrieval logic changes — the same discipline as automated testing, applied to output quality that cannot be checked with a simple pass-fail assertion. It takes time upfront because assembling realistic examples with genuinely correct answers requires real domain knowledge, but it pays that time back immediately by converting every subsequent change from a subjective judgement call into a measurable comparison.

How long does it realistically take to go from an AI prototype to a production feature?

For a feature of moderate complexity working over an organisation's own data, eight to twelve weeks from a working prototype to a launch the team is genuinely confident in is a realistic range, covering evaluation, retrieval quality work, failure handling, cost instrumentation, security review and a limited rollout. This is commonly four to six times longer than the prototype itself took to build, which is a normal ratio rather than a sign that anything went wrong — the prototype and the production feature are answering different questions.

References & further reading

  1. [1]
  2. [2]
  3. [3]