What breaks when an AI feature meets real users
The moment an AI feature meets real users is the moment you discover what you actually built. Everything that felt solid in your own testing gets pressed on by people who do not behave the way you assumed. I have shipped AI into real products and watched it happen. The good news is that it breaks in a fairly predictable order, and knowing that order ahead of time is the difference between building the guardrails now and scrambling to add them after something embarrassing happens in front of a customer.
Users send inputs you never imagined
The first thing to break is your assumption about input. In testing you feed the model reasonable things, because you are reasonable and you understand the feature. Real users are not working from your mental model. They paste in half a spreadsheet. They write in a language you did not plan for. They upload a photo of the wrong thing, leave fields blank, and try inputs designed specifically to see if they can break it. Your demo handled the inputs you chose, but production has to handle the ones nobody chose, including the hostile ones. The first week of real traffic will show you inputs you would never have invented on your own.
Cost scales with usage in ways that surprise you
When you are the only user, the cost of each model call is invisible. When thousands of people use the feature all day, that cost becomes a line on your budget. It can grow faster than your revenue. Founders are regularly shocked the first time they see a real bill, because a per-call cost that felt trivial multiplies into something serious at volume. Worse, the heaviest users are often the ones who cost you the most, and they are exactly the ones you most want to keep. If you did not model this before launch, you can find yourself in the strange position of losing money every time someone loves your product.
The model is confidently wrong, and now what
In testing, when the model returns something wrong, you shrug and run it again. In production you cannot do that. A real user is on the other end, and they cannot tell the difference between a confident right answer and a confident wrong one. This is the failure mode founders underestimate most. The model will be wrong sometimes, and it will be wrong in a tone of total certainty. The product question is not "how do we make it never wrong," which is impossible. The real question is what happens when it is wrong, how the user notices, and how they recover. A feature with no answer to that is a feature that quietly erodes trust every time it slips.
You cannot tell if it is working without evaluation
With a handful of test cases, you could read every output and judge it yourself. At real scale you cannot read everything. That means you genuinely do not know whether quality is holding up unless you built a way to measure it. Without evaluation, you are blind. Quality can drift downward for weeks, and the first you hear of it is an angry customer or a cancelled subscription. Evaluation is the unglamorous infrastructure that tells you the truth about your own product, and it is almost always the thing that got skipped because the demo did not need it.
Latency you did not feel alone becomes latency everyone feels
A two-second response is fine when it is you, once, marvelling at the magic. It is a different experience for a user doing the task for the tenth time today and waiting each time. Real usage exposes how the feature feels under repetition and impatience, not under the generous attention of its creator. What read as acceptable in a demo can read as sluggish in daily use, and a feature people find slow is a feature they route around.
Trust is fragile and easy to lose
Underneath all of these is trust. Trust is asymmetric. It is built slowly and lost instantly. One confidently wrong answer at the wrong moment, one mishandling of data a user considered private, one stretch of degraded quality, and a person quietly decides the feature cannot be relied on. Getting that trust back is far harder than earning it the first time. Real users do not grade on a curve, and they do not give the feature the second chances your own optimism gave it during development.
The fix is to assume real users from the start
None of this is a reason to avoid shipping AI. It is a reason to design as if real users are already there, before they are. In practice that means a short list you decide on up front:
- Assume strange and hostile inputs.
- Model the cost at volume.
- Decide in advance what happens when the model is wrong.
- Build evaluation before you need it.
- Treat trust as the fragile asset it is.
None of it is glamorous, and none of it shows up in the demo. But it is the difference between the two outcomes that matter. The teams that do this ship AI that survives contact with the public. The teams that do not ship a demo to production and find out all of this the hard way, in front of the people they were trying to win.
Notes on building things that last
Occasional writing on product, engineering, and building a company, sent when I have something worth saying. No noise.
No spam. Unsubscribe anytime.