Gen AI

AI features that survive contact with real users

Most AI features demo beautifully and die in production. The difference is almost never the model — it is what you built around it.

By Shashi Kumar ·

I have shipped a reasonable number of LLM features now, and the pattern is depressingly consistent: the demo is easy, the product is hard, and the gap between them has almost nothing to do with which model you picked.

The demo lies to you

A demo is you, typing a well-formed question, on a good connection, with a forgiving audience. Production is a stranger typing three words with a typo, on a train, who will close the tab if nothing happens in four seconds.

Every AI feature I have seen fail, failed in that gap.

Four things that actually decide whether it survives

1. Decide what happens when it is wrong — first

Not last. First. Before you write a prompt, answer: what does a wrong answer cost this user?

If the answer is "they lose money" or "they make a medical decision", the feature needs a human in the loop and you should design that first. If the answer is "they get a slightly worse draft", you can be much more aggressive.

Teams that skip this question ship a feature with no failure design and then discover the failure mode in a support ticket.

2. Latency is a product decision, not an infrastructure problem

An LLM call takes seconds. That is a fact you design around, not one you optimise away.

  • Stream tokens so something is happening immediately.
  • Show the shape of the answer before the content arrives.
  • If the task genuinely takes 30 seconds, make it asynchronous and tell them you will notify them. Do not put a spinner on a 30-second wait.

3. Constrain the output, always

Free-text output means free-text parsing, which means a parser that breaks at 2am. Ask for structured output. Validate it. Have a fallback for when validation fails, because it will.

The rule I use: if the model's output feeds another system, it must be structured. If it feeds a human, it can be prose.

4. Log the inputs, not just the outputs

You cannot improve a prompt you cannot see failing. Capture what real users actually typed. It will be nothing like your test cases, and that gap is the entire roadmap for the next month.

What I stopped doing

  • Stopped building chat as the default interface. A chat box is an empty room with no instructions. Most tasks are better served by a button that does the specific thing.
  • Stopped chasing model benchmarks. The difference between models is smaller than the difference between a good and bad prompt, and much smaller than the difference between good and bad error handling.
  • Stopped calling it AI in the UI. Users do not want AI. They want the thing done. Label the outcome, not the technology.

The honest summary

The model is a component, and increasingly a commodity one. The product is everything around it: what you do when it is slow, what you do when it is wrong, and whether you had the discipline to ask what the feature was for before you built it.

That is the same job it has always been.

Contact Acquiretech Software Solution: info@acquiretechsoftwaresolution.in · WhatsApp +91 80786 33912 · Send an enquiry