The pressure to add AI to everything
Every software roadmap now carries pressure to include AI. Investors ask about it on calls, competitors announce it in press releases, and customers have started to half-expect it. The result is a wave of features added because the technology is visible and available, not because a problem in the product actually demanded them. A chatbot appears on a site that really needed a clearer contact form. A summary feature lands on a screen nobody struggled to read.
This gets the question backwards. AI is not a strategy or a destination. It is a tool with specific strengths and specific costs, like a database or a message queue, and no competent team adds a queue to a product because queues are fashionable. They add one when a particular problem calls for it.
The useful question, then, is never how to add AI. It is which problems in this particular product are a genuine fit for it, and which are better solved the way they have always been solved. Answering that honestly is worth more than any model, because it is the difference between a feature that earns its place and one that quietly costs money and trust.
What AI is genuinely good at
AI earns its place on a recognizable set of problems. The clearest is understanding unstructured input: free text, images, audio, scanned documents. A model can read a customer email and route it to the right team, pull the total from a photographed receipt, or transcribe a recorded call. Conventional code is hopeless at this, because the rules are effectively infinite.
It is also strong at generation and summarization. Drafting a first version of a product description, condensing a long support thread into three lines, turning rough notes into clean prose: these are tasks where a good-enough draft, produced quickly, genuinely saves time. And it is useful for fuzzy classification, where the boundary between categories is real but impossible to write down as explicit rules.
The common thread in all of it is ambiguity. When the input is messy and the rules cannot be fully specified in advance, a model can do what a deterministic function cannot. That is the real boundary worth drawing. It is not modern versus old-fashioned, or clever versus simple. It is ambiguous versus well-defined, and AI belongs firmly on the ambiguous side of that line.
What it quietly makes worse
The same flexibility that makes AI powerful on ambiguous problems makes it a liability on well-defined ones. Calculating a price, applying a discount, enforcing a permission, moving money between accounts, checking that an email address is formatted correctly: these problems have exactly one correct answer. A system that produces the right answer most of the time is not a helpful feature here. It is a defect with a friendly name.
Using a model for this kind of work trades a guaranteed result for a probabilistic one, and pays latency and per-request cost for the downgrade. It is the software equivalent of replacing a calculator with a very well-read colleague who is usually right. Nobody would choose that on purpose, yet products do it whenever AI is treated as an upgrade rather than a tool with a specific job.
There is a subtler cost too. AI makes systems harder to reason about. A deterministic function fails the same way every time, so it can be tested exhaustively and then trusted. A model can return a different answer to the same input on different days, which makes debugging slower, support harder, and accountability genuinely murky. When a customer asks why the system did something and nobody can answer, that is a real cost, even though it never appears on an invoice.
The cost that does not show up in the demo
An AI feature has an unusual cost shape. It is remarkably cheap to prototype and surprisingly expensive to run. A convincing demo can be built in an afternoon, which is exactly why so many get approved. What the demo hides is everything that only appears at scale.
Three hidden costs matter most. The first is money: inference is charged per request, so a feature that is free in a demo becomes a line item that grows with every active user. The second is latency: a model can take noticeable seconds to respond, and users feel every one of them. The third is accuracy: a model has a ceiling below one hundred percent, and the gap between that ceiling and perfection has to be designed around rather than wished away.
This is why the decision belongs at the design stage rather than the marketing stage. The questions that actually matter are concrete. What does a wrong answer cost here? Who notices it when it happens? What does this feature cost per use once real volume arrives? If those answers are uncomfortable, the honest conclusion is usually that the feature belongs in conventional code.
A simple test before you build
Before committing to an AI feature, one question separates the good ideas from the expensive ones: what happens when it is wrong? Not if, but when, because it will be. If the answer is that a user sees a slightly weaker draft and edits it, the feature is a fine fit. If the answer is that money moves incorrectly, one customer is shown another customer's data, or a binding commitment is made, the feature does not belong to a model at all.
A second question is almost as useful. Would a careful person, given the same input, also find this genuinely hard? If yes, the ambiguity is real and AI may be the right tool. If a competent person would find the task obvious and mechanical, then obvious and mechanical code will do it faster, cheaper, and correctly every single time. Asked early, these two questions prevent most of the regret.
Designing for a model that is sometimes wrong
Where AI does belong, the system has to be built around the certainty that it will sometimes be wrong, not the hope that it will not. In practice that means a few firm rules. Keep a human in the loop for any consequential decision, so the model proposes and a person disposes. Make the model's output trivially easy to review and correct. And never let a model silently take an action that cannot be undone.
These constraints are not a lack of ambition. They are what lets the feature be ambitious safely. A summarization tool that drafts text and lets the user edit it is genuinely useful and carries almost no risk. The same model wired to send that summary to a client automatically is a liability waiting for its first bad day.
Treated this way, AI stops being the point of the product and becomes one component among many. It is used wherever ambiguity makes it the best available tool, and bounded everywhere else by ordinary, predictable, testable code. A product designed on that principle is both more useful and more trustworthy than one where adding AI was the goal and finding a justification came second.