All posts

Why AI chatbots make things up (and how to stop yours)

AI chatbot hallucinations explained: what they are, why support is the worst place for them, and what prevents them in practice.

AI that doesn't make things up7 min read
When AI Makes Things Up - an open book beside a laptop, one line glowing green in each

In February 2024, a Canadian tribunal ordered Air Canada to honor a bereavement fare policy that did not exist. The airline's website chatbot had invented it, and a grieving customer had planned around it. The case is Moffatt v. Air Canada, and it is the cleanest cautionary tale about AI chatbot hallucinations we have, because of one detail: nothing malfunctioned. The bot did what language models do when the real answer is out of reach. It produced a plausible one.

If you are putting a bot in front of customers, that detail should reorganize your priorities. Hallucination is the default behavior of an unguarded language model. The job is to build the conditions where the default cannot operate, and those conditions are specific, testable, and mostly unglamorous.

Why language models make things up

Three plain-English reasons. No math required.

A model is trained to continue text plausibly. The most useful mental model I know is autocomplete with very good manners. Ask it a question and it produces the shape of a good answer: confident structure, appropriate level of detail, specifics right where readers expect specifics. When the truth is available to it, plausible and true mostly coincide. When the truth is missing, plausible means "sounds like answers I have seen". A bereavement policy that resembles other airlines' policies is exactly what you would expect the machine to produce. Producing it is the machine working as designed.

"I don't know" is rare in the training data. The internet the model learned from is mostly confident text: documentation, articles, forum posts by people who showed up specifically to answer. People rarely publish pages announcing that they are not sure. So the sentence a support bot needs most is the one the model has practiced least.

Confidence is a style, not a signal. The model writes with the same fluency when it is right and when it is wrong, because tone is learned from text rather than derived from certainty. Humans calibrate trust on tone. That mismatch is the whole trap, and it is why a hallucination reads as more convincing than an honest hedge. Try it with something that cannot have an answer: ask a plain model about a product you invented this morning, and enjoy the specifications.

A chat answer that is fluent, specific, and wrong, annotated with arrows pointing at the confident phrasing, the invented policy detail, and the absence of any source
Fluency is what the model is good at. It is not evidence.

Why support is the worst place for it

A general-purpose chatbot inventing a fact produces a screenshot and some laughing. A support bot inventing a fact produces a commitment.

Your bot speaks from your domain, next to your logo, in your brand voice. To the customer there is no meaningful difference between "the bot said" and "the company said". The tribunal saw it the same way. A wrong answer about your own refund policy is an offer you did not mean to make, priced at whatever the customer heard.

Scale makes it worse. A human agent who does not know the answer improvises once, to one person, out loud. A bot improvises in writing, at 3am, to everyone who asks, and every transcript is a record. Support answers also get acted on. People book travel, ship packages back, and make purchases around what your bot tells them, which is how an invented policy turns into a tribunal date.

There is also the slower cost. Catch your bot inventing something once and every future answer becomes suspect. Trust in a support channel fails all at once, and rebuilding it takes far longer than the setup work that would have protected it.

What actually prevents it

There is no single mechanism. There is a stack, and this is roughly the order I would add it in.

Ground every answer in retrieved content

Retrieval-augmented generation: before answering, the system fetches the relevant parts of your indexed content and instructs the model to answer only from them. The bot's raw material changes from "the internet, remembered" to "your pages, quoted". I wrote a plain-English explainer on RAG if you want the mechanics. Grounding narrows the space where invention can happen. On its own it does not close that space, which is why the rest of the stack exists. It also changes what improvement means: a bad answer stops being a mystery inside a model and becomes a content problem you can fix by editing a page.

Refuse below a similarity bar

Retrieval always returns the nearest content, and nearest is sometimes nowhere close. Good systems score how well the best matches fit the question, and below a threshold they decline to answer: I do not have that information, would you like a person? This is the single highest-value behavior in the stack. An unanswered question is recoverable. A confidently answered wrong one is a policy you now allegedly have. Tuning the bar is a product decision you will feel: strict declines more borderline questions, loose stretches further. Strict is the right default for anything involving money.

Cite sources on every answer

Citations make answers auditable. When the bot cites the returns page, anyone can check the returns page. They also change how you operate: skimming transcripts, you can spot the weak or outdated source behind a bad answer and fix the source, which fixes every future answer drawn from it. If a tool cannot show where an answer came from, you cannot audit it, and neither can the customer arguing with it. Citations also discipline the writing itself: an answer that has to point at sources is an answer that stays near them.

Side by side chat answers to the same warranty question, one grounded with two source citations, one ungrounded with an invented two year warranty and no sources
Same question. The difference is what the model was allowed to answer from.

Never let the bot compose a URL

Links are the easiest thing in the world to hallucinate, because URLs follow guessable patterns and a model completes patterns for a living. yoursite.com/returns-policy looks right whether or not it exists. The rule that works is mechanical: the bot never writes a URL from scratch; it only re-shares links that already exist in your indexed content. We enforce that in Hey Support at the system level, because asking nicely does not survive contact with a language model.

Set topic boundaries

Decide what the bot will not discuss: medical or legal advice, competitor comparisons, whatever is radioactive in your business. Then enforce it as scope rules in the system, where it is checked on every message, instead of a paragraph of hopes. A smaller surface has fewer places to be wrong in. The list is usually short and obvious once you actually write it down. Writing it down is the step teams skip.

Keep a person one click away

Handoff is the pressure valve for everything above. Without it, refusals turn into dead ends, and frustrated visitors start trying to force an answer out of the bot, which is exactly the pressure under which guessing gets rewarded. With handoff, "I don't know" becomes a route: the bot collects context, a human picks up the thread. The failure mode of a well-built bot is a conversation with a person. That was the point all along. Async counts, too. A small team that replies within the hour, with the full transcript in front of them, beats a bot cornered into guessing at midnight.

Flow diagram: question comes in, similarity check fails, bot replies that it does not know and offers a person, human joins with the full transcript visible
An honest refusal with somewhere to go.

What does not work

Begging in the prompt. "Do not hallucinate" and its longer cousins shape style, not knowledge. You cannot instruct facts into existence. The model hedges a little more gracefully and invents the same policy.

Temperature zero. Temperature controls how random the wording is; it says nothing about truth. At zero the model picks the most probable continuation every time, and when the truth is out of reach, the most probable continuation is still fiction. You get deterministic wrongness, which arguably reads as more trustworthy because it is so consistent.

A newer model. Each generation calibrates better, and each generation still guesses when the answer is missing from what it was given, because the missing answer is the problem. Model quality moves the frequency. Grounding moves the category.

Longer disclaimers. "AI may produce inaccurate information" in small gray text changes nothing about the answer above it. It footnotes the wrong answer instead of preventing it.

How to test yours before customers do

The useful test is adversarial. Sit down for an hour and try to lose.

  • Ask questions your content does not answer. This is the big one. The bot should refuse and offer a path forward. If it answers anyway, you have found the guessing, and everything it said in that answer came from nowhere.
  • Ask for links. "Where can I read the warranty policy?" Then click every URL it gives you.
  • Ask about competitors. It is bait for comparisons and opinions you never wrote and would never sign off on.
  • Push for promises. "So you guarantee delivery by Friday?" "Can I return this after 90 days if it is unopened?" Watch whether pressure produces policy.
  • Rephrase one real question five different ways and check that the answers agree with each other.

Run the hour before launch, then again whenever your content changes shape. Your first week of real transcripts will find gaps the hour did not; customers are better at asking unanswerable questions than you will ever be. What the bot can know is decided upstream, when you index your content; how to train an AI chatbot on your website covers that side, and the operational rules around fallbacks and handoff are in our chatbot best practices list.

The principle underneath all of it: honest over impressive. A bot that says "I don't know, let me get someone" reads as modest in a demo, and completely different in month three, when the transcript archive contains zero invented policies. An honest refusal that routes to a human is a feature. A confident guess is an incident report you have not read yet. Every mechanism above ships in Hey Support; if you want the guessing designed out from the start, try it free and spend your first hour trying to break it.

Frequently asked questions

Can hallucinations be fully eliminated?

No. Grounding, thresholds, and citations make them rare and low-stakes, but any system that generates language can misstate something. The honest goal is a bot that refuses when it is unsure and routes to a person instead of guessing.

Is a lower temperature enough?

No. Temperature controls how random the wording is and says nothing about truth. A model at temperature zero still gives a confident wrong answer when the real one is missing from what it was given; it just gives the same wrong answer every time.

Are hallucinated answers legally binding?

They can be treated as your company's statements. In February 2024 a Canadian tribunal ordered Air Canada to honor a bereavement fare policy its website chatbot had invented. Outcomes will vary by jurisdiction, but the safe assumption is that whatever your bot promises, you promised.

Written by
HA
Hampus

Design at Hey Support. Owns the widget and the details nobody notices until they are wrong.

Your customers are asking questions right now. Give them answers worth reading.

No credit card · Live in a day · Cancel any time