- Try it. Paste one sales table into two chats and ask for the board pack numbers.
- What changed between them? At least six accounting decisions the chatbot made without asking. Each one moves the total.
- Why does it happen? Your data records what happened. It doesn’t record what it means, and a better model can’t guess what isn’t written down.
- What fixes it? A governed warehouse and semantic layer: the rules decided once, and every report and assistant using the same ones.
- Where Zap fits. Zap builds that foundation from your ERP, and Zap AI works from it.
For twenty years, business software has done one thing so reliably that nobody thinks about it. Run a saved report today, run it again tomorrow on the same data, and you get the same numbers.
An AI chatbot that builds the report itself doesn’t work that way. You can see it for yourself in five minutes, and it’s worth doing before anyone puts a chatbot’s numbers in front of the board.
Try it: one table, two chats
You don’t need your own data for this, and you shouldn’t paste company numbers into a public tool.
Open ChatGPT, Claude, Copilot or Gemini. Start a new chat, paste the prompt below, and note the answer. Then start a second new chat and paste it again. For a stronger test, try a second assistant as well. The table is invented, but every row in it is the kind of thing your ledger contains.
You are preparing the Q3 sales section of our Australian board pack.
Using the transactions below, report:
- Total sales by region and for the business, in our reporting currency
- The best-performing region
- Average deal size by region
- Services as a percentage of total sales
Round sensibly and keep it to one page. Don't ask me any questions, I need a draft now.
Ref | Date | Region | Customer | Product line | Type | Currency | Amount
INV-0811 | 14/01/2026 | North | Harbour Logistics | Hardware | Invoice | AUD | 48,000
INV-0815 | 03/02/2026 | North | Harbour Logistics | Services | Invoice | AUD | 15,500
INV-0822 | 19/02/2026 | South | Kestrel Mining | Hardware | Invoice | USD | 36,000
INV-0822 | 26/02/2026 | South | Kestrel Mining | Hardware | Invoice | USD | 36,000
INV-0826 | 06/03/2026 | | Online store | Hardware | Invoice | AUD | 8,700
INV-0830 | 11/03/2026 | West | Pinnacle Health | Support | Invoice | NZD | 21,000
CN-0107 | 27/03/2026 | North | Harbour Logistics | Services | Credit note | AUD | -4,200
PF-0031 | 30/03/2026 | West | Pinnacle Health | Hardware | Pro forma | AUD | 52,000
INV-1104 | 08/07/2026 | North | Coastal Freight | Hardware | Invoice | USD | 42,000
INV-1117 | 22/07/2026 | South | Kestrel Mining | Services | Invoice | GBP | 9,800
INV-1129 | 14/08/2026 | West | Pinnacle Health | Hardware | Invoice | AUD | 61,500
INV-1135 | 05/09/2026 | North | Coastal Freight | Support | Invoice | USD | 7,400
CN-0142 | 18/09/2026 | South | Kestrel Mining | Services | Credit note | GBP | -2,100
INV-1141 | 29/09/2026 | West | Pinnacle Health | Services | Invoice | AUD | 18,000
INV-1146 | 30/09/2026 | | Online store | Hardware | Invoice | AUD | 9,900
INV-1150 | 02/10/2026 | South | Kestrel Mining | Hardware | Invoice | USD | 31,200
“Don’t ask me any questions” is there on purpose. A careful assistant might ask what you mean, which is the right instinct. Most people asking for a board pack draft don’t want a conversation, and they take what comes back.
Now put the answers side by side and compare three numbers.
Did both chats land on the same figure?
Did both name the same one?
Is it nearer 8%, 21% or 26%?
Then read the notes, if there are any. Better assistants list their assumptions. Look closely: the assumptions themselves are likely to differ from one chat to the next, and assumptions are the first thing cut when a draft becomes a board paper.
What changed between the two chats?
Before a chatbot can add anything up, it has to make accounting decisions. The prompt doesn’t say how, so it decides for itself, and it doesn’t have to decide the same way twice.
Every switch below is one of those decisions. Each option is a reading a reasonable person could defend. Flip them and watch the board pack change.
Orange line marks the governed figure. The star marks the best-performing region. The smaller figure is average deal size.
The same data, three defensible board packs
| Reading | Total sales | Best region | Services |
|---|---|---|---|
| Chat A: calendar quarter, Support kept separate | A$181,755 | West | 18.6% |
| Chat B: duplicate counted twice, Support kept separate | A$198,500 | South | 5.7% |
| Chat C: no conversion, pro forma in, credits out | A$181,200 | West | 20.1% |
| Governed definitions | A$142,700 | North | 21.2% |
None of these chats made an arithmetic mistake. Each one added up correctly from the rules it chose. That’s what makes the problem hard to spot: every version looks finished, confident and internally consistent. Two of them even agree on the best region, for different reasons.
What a wrong number costs
A hypothetical, but not an unusual one. The board pack names West as the best-performing region, as Chat C did. The business acts on it: two sales hires go to West, and next year’s marketing budget follows them. Two quarters later, finance rebuilds the quarter under the agreed rules. West’s lead was a pro forma quote counted as a sale and New Zealand dollars added as if they were Australian. North was ahead all along.
By then the hires are in place and the budget is spent. Fixing the number takes an afternoon. Unwinding the decision made on it takes far longer.
The question for a CFO isn’t whether the AI can add up. It’s who decided what counts.
Why does this happen?
There are two causes, and the second one matters more.
The chatbot writes every answer fresh
An AI assistant builds its reply from predictions about what text should come next. Those predictions can come out differently from one run to the next, so wording, layout and emphasis vary. The technical word is probabilistic. On its own, this is a nuisance more than a risk: you can read past different wording.
Your data doesn’t carry its own meaning
The table records what happened. It doesn’t say that your financial year starts in July, that a pro forma is a quote, that INV-0822 was re-issued, or that support contracts report as services. Those rules live in your accounting policies, your chart of accounts and the heads of your finance team.
An AI given raw data has to fill those gaps every time it’s asked. Because it writes each answer fresh, it can fill them differently each time. Your real ledger has hundreds of these gaps, against the six in this table.
Won’t a better model fix it?
A better model makes fewer slips and is more likely to list its assumptions. It still can’t know your fiscal calendar or your revenue rules, because they aren’t in the data. More intelligence applied to an undefined question gives you a more articulate guess.
Can’t we just put the rules in the prompt?
You can fix one rule that way. Write “Q3 means January to March” and that gap closes. A complete set of reporting rules runs as long as your accounting policies, every person would write it slightly differently, and nothing stops the next person leaving it out. A template fixes the layout of a report. It doesn’t decide which transactions count.
Where does “exactly” come from?
From deciding the rules once, writing them down where every report and every assistant reads them, and letting the AI ask for a defined number instead of composing one.
That foundation has two parts, and they do different jobs.
A governed data warehouse holds what happened. Transactions from your ERP and the systems around it, cleaned up once: a re-issued invoice is one document, a quote is marked as a quote, and history is kept, so last quarter’s report can be reproduced as it stood at the time.
A semantic layer holds what it means. Which months make up Q3. What net sales includes. Which exchange rate applies, and for which period. Which product lines count as services, and which region each customer belongs to. Each rule is decided once by the people accountable for it.
With both in place, the AI’s job changes. It no longer decides what counts. It works out which defined measure you are asking for, the platform calculates it under your rules, and the AI explains the result.
The governed answer
Q3 FY26, January to March 2026. Net sales in AUD.
| Region | Net sales | Invoices | Average deal |
|---|---|---|---|
| North | A$59,300 | 2 | A$29,650 |
| South | A$55,800 | 1 | A$55,800 |
| West | A$18,900 | 1 | A$18,900 |
| Online | A$8,700 | 1 | A$8,700 |
| Total | A$142,700 | 5 | A$28,540 |
North is the best-performing region. Services, including Support, are 21.2% of sales.
- Financial year July to June
- AUD at the quarter’s average rate
- Each document counted once
- Pro formas are quotes, not sales
- Sales reported net of credit notes
- Support reports within Services
Two further things follow, and both matter in a finance function.
When a number changes, there’s a reason you can point to. A late posting, a correction, a new month’s exchange rate. The figure moves because the data moved, never because the question was read differently this time.
When something isn’t defined, a well-built system says so. If nobody has decided whether a new product line is services, the right answer is “that isn’t defined yet”, rather than a confident guess. An assistant that answers everything is worse than the report it replaces, because the report at least fails visibly. Hold any AI to that standard.
Where is “probably” fine?
Wherever a person is going to read, check and rewrite the result anyway.
| “Probably” is fine | You need “exactly” |
|---|---|
| Exploring a question nobody has asked before | The board pack and the management accounts |
| Drafting commentary a person will edit | Any number that goes to a customer, a bank or an auditor |
| Summarizing a document someone will check against the source | Figures used to approve a payment or sign off a decision |
A governed foundation doesn’t take AI out of the right-hand column. It makes the right-hand column safe for AI: the assistant brings the speed and the explanation, and the platform brings the numbers.
Where Zap fits
The Zap AI Data Platform is that foundation, built from your ERP.
Zap Data Hub brings the data from your ERP and the systems around it into one governed data warehouse, with pre-built models for Sage, Syspro, Microsoft Dynamics, SAP Business One and Xero. On top of the warehouse sits the semantic model: your measures, your calendar and your hierarchies, defined once. We’ve been building that for more than fifteen years.
Everything reads from the same model. Zap Analytics reports, Excel through Zap Live, Power BI and Zap AI all use the same definitions under the same access rules. So when someone asks Zap AI for Q3 sales, it works from the measure your finance team defined, rather than a rule it improvised for the occasion.
The AI layer will be open as well. When MCP access is released, Zap will expose the same governed tools to other assistants through the Model Context Protocol (MCP), so an assistant your business already uses can ask for the defined measure in the same way Zap AI does.
What the assistant writes around the figures will still vary from run to run. That’s the draft, and it’s yours to read. The figures underneath won’t vary, because nobody is improvising them.
Ask the same question twice and get the same answer. Bring the report your team rebuilds every month, and we’ll show it running on your definitions.








