Prompt Engineering as Product Architecture: The 5-Layer Stack

· 27 min read

A 5,600-word builder’s guide to why AI products break in production and how to architect prompts so they survive model updates, messy inputs, and the cascading failures nobody demos. Built on the context engineering shift of 2025, eval-driven development practice, and three years of shipping AI features that mostly did not break.

Table of Contents

  1. The Demo Worked. The Product Did Not.
  2. Why AI Products Break When Nothing Changed
  3. The Prompt Architecture Stack
  4. Layer 1: The Contract
  5. Layer 2: The Context
  6. Layer 3: The Instruction
  7. Layer 4: The Evaluation
  8. Layer 5: The Governance
  9. Where Did It Break? A Diagnostic
  10. The Contrarian Take: Prompt Tips Are Mostly Noise
  11. What to Do Monday Morning: The Brittleness Audit
  12. Frequently Asked Questions

The Demo Worked. The Product Did Not.

The demo was clean. A founder I was advising had built an AI tool that read inbound sales emails and drafted replies. In the meeting it handled six emails in a row, each reply sharp and on brand. The room was sold. They shipped it three weeks later.

It broke on day two.

Not dramatically. No error page, no crash. It just started doing slightly wrong things. It replied to an angry refund request with a cheerful upsell. It quoted a price that had changed in March. It addressed a customer named Mr. Patel as “Hi there” because the email had no signature block. None of these were bugs in the traditional sense. The code ran fine. The model answered every time. The product was just quietly, confidently wrong about one email in twelve.

By the end of week one the founder had turned it off. His conclusion was the one almost everyone reaches first: the model is not good enough yet. We will wait for the next version.

That conclusion is wrong about 90 percent of the time, and it is expensive, because waiting for a better model is a way of not fixing the actual problem. The model was fine. What he had built was not a product. It was a prompt that happened to work on six emails in a conference room.

The reply quality lived in a single block of text he had tuned for an afternoon. There was no schema enforcing what a valid reply looked like. There was nothing feeding the model the current price list. There was no test set that would have caught the refund-to-upsell failure before a customer saw it. There was no log telling him which emails were going wrong or why. When you build like that, the demo is the best your product will ever be. Production only goes downhill from there.

I have built AI features inside two companies and I have watched dozens of founders ship them. The pattern is the same every time. The teams whose AI products hold up are not the ones with cleverer prompts. They are the ones who stopped thinking of the prompt as a string and started thinking of it as architecture. This post is the architecture.

Why AI Products Break When Nothing Changed

Start with the numbers, because they are worse than most founders think. MIT’s 2025 research on enterprise AI put the failure rate of generative AI pilots at 95 percent. RAND found up to 80 percent of AI projects fail. S&P Global reported that nearly half of AI initiatives get scrapped before they ever reach production. These are not stories about bad models. GPT-class and Claude-class models in 2026 are extraordinary. These are stories about bad architecture around good models.

Here is the mechanism nobody demos. A traditional software function is deterministic. Same input, same output, every time. An AI call is not. Same input can give you a slightly different output, and a slightly different input can give you a very different one. That is not a flaw you can patch. It is the nature of the thing. So the question is never “will the model be wrong sometimes.” It will. The question is what your product does when it is.

Now stack those calls. Say each step in your workflow is 85 percent reliable, which sounds healthy. Read the email, classify the intent, pull the right data, draft the reply, check the tone. Five steps. The math is not 85 percent. It is 0.85 to the fifth power, which is about 44 percent. Add two more steps and you are near 20 percent. A widely cited version of this calculation showed a multi-step AI workflow where each step is 85 percent reliable succeeds end to end only about one time in five. Founders feel this as “it works sometimes” and assume the model is flaky. It is not flaky. It is multiplication.

The second mechanism is drift. Your demo inputs were clean because you picked them. Real inputs are not. Emails with no signature, customers who paste their whole order history, messages in three languages, the one prospect who writes entirely in lowercase with no punctuation. Every one of those is an input your prompt never saw. The model does its best, and its best on an input it was not designed for is a coin flip.

The third mechanism is the one founders fear most and understand least: the model itself changes. You called the API pointed at “the latest model.” The provider shipped an update. Your prompt that depended on a specific quirk of the old model now behaves differently. Enterprises that hit this discovered that rewriting and revalidating an entire prompt library takes weeks, far longer than swapping a database or a queue. A prompt is not a config value. It is a dependency, and you did not pin it.

None of these three are model problems. Non-determinism, input drift, and version drift are properties of the system you are building. You cannot wordsmith your way out of any of them. You have to build for them. That is what architecture means here, and it has five layers.

The Prompt Architecture Stack

I think about a production prompt the way I think about a building. Most founders build the part you can see, the visible structure, the instruction text. They skip the foundation, skip the inspection, skip the operations. Then they are surprised when it does not hold up in weather.

The Prompt Architecture Stack has five layers. Each one is load bearing. Each one, when missing, produces a specific and predictable failure. Here is the whole thing.

The Prompt Architecture StackFive load-bearing layers. Most founders build only one of them.5GovernanceVersioning, model pinning, rollback, observability, escalationMissing: a model update silently changes your product4EvaluationGolden test set, eval scores, regression detectionMissing: changes ship and break things with no one noticing3Instruction.Role, task, constraints, examples. The classic prompt.Missing: the model does the wrong job, confidently2ContextWhat the model knows: retrieval, memory, state, toolsMissing: the model invents the facts it was never given1ContractThe output schema. The shape your code depends on.Missing: your code crashes parsing free textFOUNDATION AT THE BOTTOMMostfoundersstop here

Read the stack bottom to top. Layer 1, the Contract, is the foundation, because everything your application code does depends on the shape of what the model returns. Layer 2, Context, is what the model knows when it answers. Layer 3, Instruction, is the visible part, the actual prompt text, the layer everyone obsesses over. Layer 4, Evaluation, is the inspection that tells you whether a change helped or hurt. Layer 5, Governance, is the operations layer that keeps the thing alive as models and inputs change underneath it.

The founder with the sales-email tool had built one layer, the instruction. A one-layer building falls down. The rest of this post is each layer in turn, what it does, how it fails, and what the minimum viable version looks like for a solo founder who does not have an ML team.

Before the layers, the mindset shift in one table. The column on the left is how most founders treat a prompt. The column on the right is what shipping a real AI product actually asks for. If you have read the vertical AI SaaS playbook, this is the same jump from feature to product, applied to the prompt itself.

Question Prompt as a string Prompt as architecture
What is it? A block of text in a code file A five-layer system with a contract and tests
How do you improve it? Reword it and eyeball the result Change one layer, run the eval, compare scores
What happens on a model update? You hope nothing broke You re-run evals and upgrade on purpose
Who can debug it? Whoever wrote the text, by memory Anyone, by walking the five layers
When does it fail? In production, silently, on a real user In the eval suite, loudly, before shipping
What is the moat? None. Anyone can copy the text. The context, the eval set, the operational discipline

Layer 1: The Contract

The output of an AI call is an API. Your code consumes it. And the first rule of consuming an API is that you do not parse it with hope.

Most early AI products treat the model’s reply as free text and then go fishing in it. They search for a price with a regular expression. They split on newlines and assume the third line is the customer name. This works in the demo because the demo outputs were shaped the way the developer expected. It fails the first time the model phrases something differently, which is to say it fails almost immediately, because phrasing differently is the one thing a language model is guaranteed to do.

The Contract layer fixes this by deciding, before the model ever runs, exactly what a valid output looks like. Modern model APIs support structured outputs, where you hand the model a JSON schema and the response is constrained to fit it. You define the fields, their types, and which ones are required. Structured outputs are now considered a core best practice in production AI for a simple reason. They move failure from a vague place, somewhere in your parsing code at 2 AM, to a sharp one: either the response matches the schema or it does not, and you know instantly.

The contract is also a safety boundary, and this is the part founders miss. Take the sales-email tool. Suppose one field is the email category. If that field is free text, the model gives you “Refund”, “refund request”, “Angry customer”, and “billing??” across four emails, and your routing logic, which expected one of five clean values, quietly misroutes all of them. Now make that field an enum with exactly six allowed values. The model literally cannot return a seventh. You have not just made parsing easier. You have made an entire class of failure impossible. A good contract removes failure modes by construction, not by checking for them later.

There is a versioning trap here worth naming. The day you change your schema, you have a migration problem. Old cached prompts may still reference the version-one field names. Downstream consumers may expect the old format. An A/B test may be running both at once. The discipline that experienced teams use is to keep keys stable across versions and add rather than rename, so a schema change is additive and nothing downstream breaks. Treat the schema the way you would treat a public API, because to your own code, that is exactly what it is.

The minimum viable Contract layer for a solo founder: every model call that feeds code returns JSON against a schema you wrote down, required fields are marked required, and anything with a fixed set of values is an enum. If you do this and nothing else from this post, you have removed the most common production crash in AI products.

Layer 2: The Context

In June 2025 two well-known builders, Tobi Lutke of Shopify and Andrej Karpathy, both publicly pushed the same idea in the same week: the real skill is not writing prompts, it is engineering context. By July, Gartner had published research headlined, more or less, “context engineering is in, prompt engineering is out.” By early 2026, a State of Context Management report found that 82 percent of IT and data leaders agreed prompt engineering alone was no longer enough to run AI at scale, and 95 percent of data teams planned to invest in context engineering training that year.

I think the framing of “out with one, in with the other” is a little dramatic, which is why context is a layer in this stack and not a replacement for it. But the underlying point is correct and it is the single most useful thing to understand about AI products. Most production failures are not the model being dumb. They are the model being asked to answer without the information it needed.

Anthropic’s engineering team put it cleanly in a September 2025 post on building agents. The question to ask, they wrote, is “what configuration of context is most likely to generate the model’s desired behavior.” Not what words to use. What information to assemble.

The Context layer is everything the model can see at the moment it answers that is not your instruction. Retrieved documents. The user’s account state. Conversation memory. The current price list. The definitions of the tools it can call. And, just as important, what you deliberately leave out, because a model drowning in irrelevant context performs worse, not better.

The clearest cautionary tale is the Air Canada chatbot. A grieving customer asked the airline’s chatbot about bereavement fares. The bot described a refund policy that did not actually work the way it said. The customer relied on it, booked, and was refused the refund. The case went to a tribunal in British Columbia, which in early 2024 ruled the airline liable and ordered it to pay. The direct damages were small, around 812 Canadian dollars. The precedent was not small at all: a company is responsible for what its AI tells customers, full stop. And here is the architecture lesson. The correct bereavement policy existed on Air Canada’s own website. The chatbot simply did not have it grounded in context. That is not a model failure. That is a missing Layer 2. The model was asked a question and given nothing reliable to answer it from, so it did what models do with a gap, which is fill it.

For longer-running AI features, the Context layer also has to handle the fact that context is finite. Anthropic’s guidance on long-horizon agent tasks leans on compaction, summarizing earlier steps so the important information survives while the token count stays manageable, and on sub-agents that each carry only the context their narrow job needs. You do not need agents to use the idea. Any AI feature that runs over multiple steps has to decide what to carry forward and what to drop, and that decision is engineering, not luck. If you are building anything that runs in a loop, my post on building AI agents that make money goes deeper on where that loop earns its keep.

Minimum viable Context layer: before every important call, you can answer the question “what does the model need to know to get this right, and am I actually giving it that.” If the answer involves a fact that lives in your database, retrieve it and put it in the prompt. Do not hope the model remembers.

Layer 3: The Instruction

This is the layer everyone means when they say “prompt engineering.” It is real, it matters, and it is one fifth of the job.

The Instruction layer is the text that tells the model what role to play, what task to do, what rules to follow, and what good looks like. The reason it gets all the attention is that it is the only layer you can see and edit in a text box, so it feels like the whole product. It is not. But done badly it still sinks you, so here is what done well looks like.

Instructions should be specific and testable. “Be helpful and professional” is neither. You cannot test it, two people will read it two ways, and the model will too. “If the customer asks for a refund, do not suggest other products in the same reply” is specific, and you can write a test that checks it. Every instruction you write should be something a colleague could grade as followed or not followed by reading one output. If they cannot, the model cannot reliably follow it either.

Examples are the highest-impact tool in this layer. A few well-chosen input-output pairs teach the model more than three paragraphs of description. The skill is choosing examples that cover the edges, not the easy middle. Show it the angry refund email and the ideal restrained reply. Show it the email with no signature and how you want the greeting handled. The examples are where you encode judgment that is hard to write as a rule.

Now the trap, and it is the most expensive habit in AI product development. When something goes wrong, the instinct is to go edit the instruction. The model upsold an angry customer, so you add a line saying “never upsell angry customers.” It quoted a stale price, so you add “always use current prices.” The instruction grows into a wall of patches, and it still breaks, because most of those failures did not live in Layer 3 at all. The stale price was a Context failure. The crash on a weird output was a Contract failure. You cannot write your way out of a missing layer. When you find yourself adding the fifth “always remember to” line to a prompt, stop. The bug is almost certainly downstairs.

Minimum viable Instruction layer: a prompt where every rule is specific enough to grade, three to five examples that cover the hard cases, and a discipline that you do not fix non-instruction bugs by adding instruction text.

Layer 4: The Evaluation

Here is a question that exposes whether someone has a real AI product or a demo. You change the prompt. How do you know the change made it better?

If the answer is “I tried a few examples and they looked good,” there is no Layer 4, and without Layer 4 every other layer is guesswork. You are tuning a system with no instrument. You will fix one case and silently break three, and you will not find out until a customer does.

The practice that fixes this is eval-driven development, and the mental shift it asks for is to treat evaluation as infrastructure rather than as a final quality check. You define what good output looks like, you encode those definitions as evaluations, and from then on the eval score is your oracle. A change that raises the score is an improvement. A change that lowers it is a regression, and you catch it before you ship instead of after.

The foundation is a golden set: real cases, drawn from real traffic, with the output you actually want. Twenty to fifty is enough to start, and it should include the failures. The refund-to-upsell email. The no-signature email. The three-language email. Every time production surprises you, that case joins the golden set, so the same failure can never reach a customer twice. Your eval set is the institutional memory of everything that ever went wrong.

You grade against it three ways. Code checks: does the output parse, does it match the schema, are required fields present. This is cheap and you should run it on everything. Human review: a person reads a sample and judges quality, because some things are still hard to grade automatically. And model-as-judge: another model call grades the output against a rubric you wrote, which scales the judgment that is too expensive to do by hand on every case. Vercel’s v0 product, one of the more visible AI products of this era, runs exactly this blend, fast automated code checks, human feedback from users and staff, and model-based grading for the calls that need judgment.

The tooling has matured. Open-source frameworks like DeepEval, which ships dozens of research-backed metrics, plug into your CI so evals run on every change. Managed platforms like Braintrust, Langfuse and LangSmith add dashboards, production monitoring, and human-review workflows on top. Pick one. The choice matters far less than the decision to have a Layer 4 at all.

One caution. A January 2026 paper from Fudan University researchers tested 11 models across 15 public benchmarks and found the benchmarks themselves varied wildly in quality, independent of the models. The lesson: do not outsource your judgment of “good” to a generic leaderboard. Your golden set, built from your real traffic and your real definition of a good answer, is worth more than any public benchmark, because it measures the thing you actually ship.

Minimum viable Evaluation layer: a file of 20-plus real cases with desired outputs, a script that runs your prompt against all of them and scores the results, and a rule that you do not ship a prompt change until you have seen what it does to the score.

Layer 5: The Governance

The top layer is the one that keeps the product alive after launch, when the world underneath it keeps moving. Prompts are code. They deserve the same operational respect as code, and almost no early AI product gives it to them.

Start with versioning. Your prompts belong in version control with everything else, with a history, with the ability to roll back. When quality drops, “revert to last week’s prompt” should be a one-line operation, not an archaeology project through Slack messages and screenshots. Prompt versioning as a discipline means change tracking, performance attribution, reproducibility, and rollback. Teams that have been burned treat each prompt as a first-class asset with its own version history, the same way they treat a database schema.

Then model pinning, which is the fix for the version-drift failure from the start of this post. If your API call points at “the latest model,” you have signed up for your product changing without your consent every time the provider ships an update. Pin to a specific model version. When a new one comes out, treat it as a dependency upgrade: point your eval suite at it, run the golden set, compare the scores, and promote it deliberately only when it wins. A model upgrade should be an event you run on your schedule, not a surprise your customers report.

Then observability. In production you log inputs, outputs, which prompt version ran, and the eval scores of live traffic, sampled. This is how you learn what is actually breaking instead of guessing. The sales-email founder had none of this, which is why his answer to “which emails are going wrong” was a shrug. With observability the answer is a query.

Finally, the escalation path. A well-architected AI product knows when it is unsure and hands off to a human instead of guessing. Low confidence, high stakes, an action that cannot be undone: route it to a person. The cost of skipping this showed up late in 2025 when a developer asked an AI coding assistant to clear a cache and it reportedly wiped the user’s actual cache folder. That is a governance failure. A destructive action with no guardrail and no human in the loop. For anyone building in a serious domain, this layer is not optional, and my post on building AI in regulated industries treats it as the starting point rather than a feature.

Minimum viable Governance layer: prompts in version control, the model version pinned and upgraded on purpose, basic logging of production calls, and a confidence threshold below which the product asks a human instead of acting.

Where Did It Break? A Diagnostic

The practical value of the stack is that it turns “the AI is acting weird” into a diagnosis. When something goes wrong in production, you do not guess and you do not start editing the prompt. You walk the layers and find the one that failed. This flow is the routine I run.

Where Did It Break?Your AI product produced a bad outputDid your code crash or misread the response?YESL1 Contractno, keep goingDid the model lack a fact it needed to be right?YESL2 Contextno, keep goingDid it ignore a clear rule you actually wrote down?YESL3 Instructionno, keep goingDid a change ship that no test would have caught?YESL4 Evaluationno, keep goingDid a model update or version change cause it?YESL5 GovernanceIf you still cannot tell which layer failed,the missing layer is Evaluation. You are flying blind.Notice that only one of these five questions is fixed byediting the prompt text. The other four are architecture.

The diagnostic does one more thing for you. It tells you that “the AI is acting weird” is almost never an instruction problem, even though the instruction is the only part you can see. Four of the five failure routes lead somewhere else. If your reflex when something breaks is to open the prompt and start rewording, you will spend most of your debugging time in the one layer least likely to be at fault.

The Contrarian Take: Prompt Tips Are Mostly Noise

There is a whole genre of content promising magic words. Tell the model it is an expert. Offer it a 200 dollar tip. Ask it to take a deep breath. Threaten it. Flatter it. Every few months a thread goes viral claiming one of these unlocks a step change in quality.

Most of it is noise, and here is the uncomfortable reason. These tricks are all micro-optimizations inside Layer 3. They are tweaks to the instruction text. And once you have built the other four layers, Layer 3 tweaks stop mattering very much, because the contract is constraining the output shape, the context is supplying the facts, the evals are catching the regressions, and the governance is keeping the model stable. The product is reliable because of the architecture, not because you found the right incantation. The teams chasing magic words are usually the teams that have not built anything else, so the instruction is the only knob they have, so they turn it obsessively.

There is a sharper version of this, and it is about the fear founders carry around model updates. I hear it constantly. “What happens when the next model comes out and breaks all our prompts?” It is treated as an existential risk, a reason to delay, a reason to wait.

Flip it. If a routine model update breaks your product, you did not have a product. You had a prompt that happened to work, balanced on a specific quirk of one model version, and you mistook the balance for a foundation. A product built on the full stack does not fear the update. The contract still constrains the output. The context is still grounded in your data. The eval suite runs against the new model and tells you, in an afternoon, exactly what changed and whether it is better. Model pinning means the update never even reaches customers until you have promoted it on purpose.

For a properly architected AI product, a new model is not a threat. It is a free performance upgrade you opt into when your evals say it is safe. The founders panicking about model updates and the founders excited about them are not using different models. They are using different architectures. One built five layers. The other built one and called it a product. This is the same discipline gap I wrote about in the AI wrapper trap: the moat was never the prompt.

What to Do Monday Morning: The Brittleness Audit

Concrete steps. If you have an AI feature in production or close to it, this is a 7-day plan to find out how fragile it is and fix the worst of it.

Monday: run the Brittleness Audit. Score your product on each of the five layers, 0, 1, or 2. Zero means the layer does not exist. One means a partial version exists. Two means it is genuinely built. Use the table below. Add up the score out of 10.

Layer Score 0 Score 1 Score 2
1. Contract You parse free text JSON, no strict schema Schema enforced, enums used
2. Context Model answers from memory Some facts injected Needed facts retrieved every call
3. Instruction Vague, no examples Specific rules, few examples Testable rules, edge-case examples
4. Evaluation You eyeball a few cases A small golden set exists Evals run on every change
5. Governance No versioning, model unpinned Versioned, some logging Pinned, logged, escalation path

Below 5 out of 10, you have a demo that will break in production, and the only question is when. Between 5 and 7, you have a real product with known weak spots. Above 8, you have something durable that a model update cannot scare. Most AI features I audit score between 2 and 4 on the first pass, almost always with all their points concentrated in Layer 3.

Tuesday and Wednesday: fix the lowest layer, not the prompt. Whatever scored lowest is your week. If it is the Contract, write a JSON schema and convert your calls to structured outputs. If it is Context, list the facts each call needs and wire up retrieval for the ones living in your database. Resist the pull toward Layer 3. The lowest layer is the one bleeding the most reliability, by definition.

Thursday: build the golden set. Pull 25 real inputs from your logs or your inbox. Include every weird one. Write the output you actually want for each. This file is the most valuable artifact in your AI product, because it is the only thing that converts opinion into measurement.

Friday: write the eval script. A script that runs your prompt against all 25 cases and scores them, by code check, by a model-as-judge call, or by your own eye, whatever you can do in a day. Run it. Write the number down. That number is now your baseline, and from here every change is measured against it.

Ongoing: pin your model and version your prompts. Change your API call from “latest” to a specific version. Put your prompts in version control. These two take an hour combined and they remove the single scariest failure mode in AI products, the silent change you did not authorize.

One week. Five layers audited, the weakest one repaired, and a measurement system standing where guesswork used to be. That is the difference between an AI feature that survives contact with real users and one that gets quietly switched off in week one. Before you build the feature at all, make sure the idea is worth it with the 48-hour validation method. If you want the broader context of where AI features are worth building, start with the AI opportunity map for 2026, and if you are turning the feature into a business, the revenue models for AI products playbook picks up where this one ends.

Frequently Asked Questions

Is prompt engineering dead now that context engineering exists?

No. The “prompt engineering is out” headlines from mid-2025 overstated it. Writing the instruction is still a real layer of the stack, Layer 3. What changed is the recognition that it is one layer of five, not the whole job. Context engineering, assembling what the model knows, is genuinely more important than instruction wording for most production failures. But a product that nails context and skips the contract or the evals still breaks. Think addition, not replacement.

What is the single most common reason AI products break in production?

The model being asked to answer without the information it needed. Most failures that founders blame on the model are actually missing context: a stale price, an ungrounded policy, a fact that lives in the database but never made it into the prompt. The Air Canada chatbot is the textbook case. The correct policy existed on the company’s own site; the bot just was not given it. That is a Layer 2 failure, not a model failure.

Do I need all five layers for a small AI feature?

You need all five before you put it in front of paying customers, but the minimum viable version of each is small. The Contract is a JSON schema. The Context is retrieving the few facts that matter. The Instruction is a tested prompt. The Evaluation is 25 cases in a file and a script. The Governance is a pinned model and prompts in version control. A solo founder can stand up a basic version of the full stack in about a week. Skipping layers does not save time, it defers the cost to production where it is far more expensive.

How do I stop a model update from breaking my product?

Two moves. First, pin your API call to a specific model version instead of “latest,” so updates never reach customers automatically. Second, build the evaluation layer, so when you do choose to upgrade you can run your golden set against the new model and see exactly what changed in an afternoon. With both in place, a model update becomes a deliberate, measured upgrade rather than a surprise. If a routine update can break your product, the real problem is missing architecture, not the update.

What is eval-driven development and do I really need it?

Eval-driven development treats evaluation as infrastructure rather than a final check. You define what good output looks like, encode it as automated evaluations, and use the eval score as the oracle for whether a change helped or hurt. You need it because without it you cannot tell whether a prompt edit improved the product or quietly broke three other cases. It is the difference between tuning with an instrument and tuning blind. Start with a golden set of 20 to 50 real cases.

Should I use a structured output schema for every model call?

For every call whose output is consumed by code, yes. Structured outputs against a JSON schema move failure from a vague place in your parsing logic to a sharp, immediate one: the response either matches the schema or it does not. Use enums for any field with a fixed set of values, because that makes an entire class of failure impossible by construction. For calls whose output goes straight to a human as free text, a schema matters less, though even then a light structure usually helps.

How big should my golden test set be?

Start with 20 to 50 real cases and grow it from there. The cases should come from real traffic, not invented examples, and should over-represent the failures and edge cases rather than the easy middle. Every time production surprises you, add that case to the set so the same failure cannot reach a customer twice. Over months the golden set becomes the institutional memory of everything that ever went wrong, which is exactly what you want it to be.

Can I just wait for better models to fix my reliability problems?

Almost never. Model quality in 2026 is already excellent, and the failures founders blame on the model are usually architecture failures: non-determinism with no contract, missing context, no eval to catch regressions, no governance to absorb change. A better model run through the same broken architecture produces the same broken product. Waiting for a better model is usually a way of avoiding the actual fix, which is building the four layers around the prompt that you skipped.