Your Chatbot Just Quoted a Price You Never Set
A shopper asks your chatbot whether the jacket is on sale. The chatbot says yes, 30 percent off, this weekend only. The jacket is not on sale. There is no sale this weekend. The chatbot made it up, confidently, in your brand voice, and the shopper has a screenshot. The store now has a choice: honor a discount that never existed, or tell a shopper the store's own assistant lied to them.
How it happens
A chatbot that answers from a language model rather than from your catalog will invent facts when it does not have them. The model is trained to be helpful, and helpful, in the absence of data, looks like an answer. It does not say it does not know. It produces a price, a discount, a stock level, or a shipping date that sounds right, because the pattern of a price is easier to produce than the fact of one. The failure is worst on prices and promotions, because those are the facts shoppers act on immediately, and the facts that change most often.
The trigger is usually a gap in the data the bot can see. A product with no price in the feed the bot reads, a promotion that lives only in an email, a sale that ended yesterday and was never removed from the training material. The bot fills the gap with a plausible number, and the shopper acts on it before anyone checks. The first sign is usually a support ticket, and by then the screenshot exists.
What it costs
The cost is not the discount. The cost is the choice it forces. Honor a price that never existed and the margin is gone, plus the precedent is set: every shopper who saw the screenshot expects the same. Refuse it and the shopper has proof, in your own brand voice, that the store quoted one price and charged another. That is a chargeback risk, a refund, and a complaint that travels further than any ad. The chatbot that invents a price is not a conversion tool. It is a liability that answers questions.
The second cost is quieter. Every hallucinated answer trains the shopper to distrust the bot, and a bot nobody trusts is a bot nobody uses, which means the investment in it is dead. The team that built it stops maintaining it, the bot gets worse, and the store is left with a widget that actively harms the shoppers who try it.
The guardrail that actually works
Ground the bot in the catalog, not in the model. Every price, promotion, stock level, and shipping date the bot states must come from a live lookup against the product feed or the store's own data, and if the lookup fails, the bot must say it does not know. That is the whole guardrail: no lookup, no answer. A bot that says I do not have that price, let me check is a bot that can be trusted. A bot that invents one is not. Test it the way a shopper would: ask for a price on a product, a discount that does not exist, and a delivery date for a postcode you know is out of range. If the bot answers all three confidently, it is hallucinating, and the guardrail is missing. For the feed errors that create the gap in the first place, see how AI shopping assistants read a feed you never checked, and for the descriptions that invent features, when AI product descriptions invent features.
Frequently asked questions
Why do chatbots invent prices?
Because a language model answers from pattern, not from your catalog. When it does not have the price, it produces a plausible one rather than saying it does not know. The fix is to ground every price in a live lookup against the product feed.
What should the bot say when it does not know a price?
That it does not know, and offer to check. A bot that says I do not have that price is trustworthy. A bot that invents one creates a refund, a chargeback, and a screenshot.
Is this a real risk or an edge case?
Real. Prices and promotions are the facts shoppers act on immediately, and they change most often. A hallucinated discount forces a choice between honoring a price that never existed and telling a shopper the store's own assistant lied.
How do I test whether our bot hallucinates?
Ask for a price, a discount that does not exist, and a delivery date for an out-of-range postcode. If the bot answers all three confidently, it is hallucinating and the guardrail is missing.