Contextflo Blog

Why AI gives you the wrong number from your own data

AI gives confident, wrong answers from your data when it is missing one of four things: meaning, permission, a check, and a receipt. Here is what that means.

July 18, 20264 min readVivek Sah

You asked a simple question. What was revenue last week? The AI thought for a moment, wrote some SQL, and handed you a number with total confidence. It was wrong by thirty percent, and nobody in the room knew.

This is the failure that makes people quietly stop trusting AI for data. Not the dramatic hallucination, the calm, plausible, wrong number that looks exactly like a right one. And the reflex, when it happens, is to blame the model. The model is fine. The model did precisely what you gave it the means to do. The problem is what it was missing.

It is not the model. It is four missing things.

When an AI answers a question from your data, four things have to be true for the answer to be trustworthy. Take any one away and you get a number that is confident and wrong. Most bad answers are not a reasoning failure. They are one of these four, quietly absent.

  • Meaning. What your words actually refer to. What “revenue” means, which users count as “active,” whether “last week” is calendar or fiscal.
  • Permission. What the AI is allowed to see, so it answers from the right data and never the data it shouldn't touch.
  • A check. Whether the answer was verified, or whether you got the first query that happened to run without an error.
  • A receipt. Whether you can trace where the number came from, so a wrong one can be caught instead of shipped.

Meaning is the one that bites first

Your database was not built to be read by a stranger. Columns get abbreviated. Tables accumulate over years. Half the important logic lives in someone's head, not the schema. So when the AI sees a column called amt_net, it guesses. Does that include tax? Refunds? Is “revenue” booked or recognized? It picks the reading that looks reasonable and moves on, and reasonable is not the same as correct.

This is why two people can ask the same question and get two different numbers. Each conversation guesses fresh. Nothing is wrong with the SQL. The SQL runs perfectly. It is just answering a slightly different question than the one you asked, because it never learned what you meant.

A query that runs is not the same as an answer that is right. The first is about syntax. The second is about meaning, and meaning lives in your business, not in the model.

Permission, a check, and a receipt

The other three are quieter but they compound. Permission is what keeps the AI answering from the tables it should, and out of the ones it should not, which matters the moment more than one person is asking. A check is the difference between an answer and a guess that cleared the syntax bar: did anything confirm the number makes sense, or did it just not error? And a receipt, the trail of what query ran and on what, is the only thing that lets you catch a wrong answer after the fact instead of finding out in a board meeting.

None of these are things the model can supply on its own. They are things the setup around it either has or doesn't. The AI is only ever as good as the four things you hand it.

Do you need to build all this?

If you are one technical person exploring your own database, honestly, no. You know what your columns mean, you read the SQL before you trust it, and you are your own check and receipt. A direct connection is fine. Keep it simple.

It changes the moment other people rely on the answers, especially people who cannot read the SQL to sanity-check it. That is when the four missing things stop being an annoyance and start being decisions made on wrong numbers. Giving the AI those four, shared meaning, scoped permission, a check, and a receipt, is exactly what a context layer like Contextflo is for. Not to make the model smarter. To stop handing it questions it has no honest way to answer.