The most dangerous screen in an ERP is a beautiful dashboard full of numbers nobody can trace. It looks authoritative. It is presented with charts and confident totals and green arrows. And if you ask the obvious question — where does this figure come from and does it reconcile to the books — half the time the honest answer is a shrug. That dashboard is not an asset. It is a liability with good design, and I would rather ship no number than ship that one.
A confident wrong number is the worst output
There is a hierarchy of report quality, and most people get it backwards. They rank a pretty confident number above an ugly caveated one. The correct ranking, in order of how much I trust it to run a business:
- A reconciled number, shown with its sourcing.
- No number, with an honest “we can’t compute this reliably yet.”
- A confident number that cannot be defended.
The third one is last, below showing nothing, and that ordering offends people’s intuitions until they get burned. A confident wrong number does not just mislead. It actively destroys trust in every other number in the system, because once a user catches one figure lying, they stop believing all of them. One undefended metric poisons the whole platform’s credibility.
An ERP earns the right to be believed one reconciled report at a time, and loses it all at once the first time a confident number turns out to be fiction.
I learned the literal version of this watching an assistant report a figure as $34,000 that was actually $340 — cents rendered as dollars. The number was presented with total confidence. It was off by a hundred-fold. A user who acts on that makes a hundred-fold wrong decision, and worse, learns never to trust the assistant again. The fix was not a better disclaimer. It was fixing how money was represented and sourced so the number could not be wrong in that way.
What a vanity metric actually is
A vanity metric is not just a number that flatters. It is any number that cannot survive the question “prove it.” In ERP these cluster in predictable places.
The pre-aggregated cache that drifted. Someone built a fast dashboard by maintaining a running total updated on write. A few writes missed the update path. Now the cached figure and the truth diverge, and the dashboard shows the cache. It is fast and it is wrong.
The metric with no definition. “Active customers” — active by what rule, over what window, counting or excluding whom? If two people compute it and get different answers, it is not a metric, it is an opinion with a number attached.
The figure that double-counts. Revenue that includes refunded orders. Pipeline that counts a deal in two stages. AR that includes invoices already paid because the payment didn’t flip the status.
The estimate dressed as a fact. A projection shown in the same font, same color, same confidence as an actual. The user cannot tell the modeled number from the measured one.
| Vanity metric | Why it lies | The truthful version |
|---|---|---|
| Cached running total | Drifts from source on missed writes | Computed from ledger on read, or reconciled cache |
| ”Revenue” incl. refunds | Double-counts reversed money | Net of refunds, definition shown |
| AR balance from stale status | Paid invoices still counted open | Recomputed from actual payments |
| Projection shown as actual | No visual distinction | Labeled, sourced, separated |
How I build reports that defend themselves
The discipline is to make every number traceable and reconcilable by construction, not by audit after the fact.
Compute from the source of truth, not a convenience copy. Financial figures derive from the actual transactional records — the invoices, the payments, the ledger entries — not from a denormalized total that someone hoped stayed in sync. When I do cache for performance, the cache is reconcilable: I can recompute from source and assert they match, and I do, on a schedule. A cache you cannot reconcile is a lie you have not caught yet.
Every metric has a definition, and the definition is visible. “Outstanding AR” carries its rule: unpaid and partially-paid invoices, net of recorded payments, as of this date, in this currency. If you cannot write the definition in one sentence, you do not understand the metric well enough to show it.
Money is typed and unambiguous end to end. Currency and unit are explicit at every boundary, from storage through the action layer to the display. This is the structural fix for the cents-as-dollars class of error. The number cannot be misread by a hundred-fold if its unit travels with it and is enforced at every hop. The same typed-money discipline that keeps my AI tools from misapplying a payment keeps my reports from misstating a balance — it is one property, applied everywhere.
Estimates look like estimates. A projected figure is visually and semantically distinct from a measured one. Different treatment, explicit label, sourcing that says “modeled, not measured.” The user always knows whether they are looking at the world or at a guess about the world.
Reconciliation is a first-class report, not a back-office chore. The system can show you, on demand, that its summary figures tie to its detail. AR summary equals the sum of open invoice balances. Cash position equals the sum of recorded payments minus disbursements. When they don’t tie, the report says so and points at the gap rather than smoothing it over.
A report is trustworthy only if it can answer, for every number:
- what is the exact definition?
- what source rows produce it?
- does the summary reconcile to that detail right now?
If any answer is "unclear," the number does not ship.
The discipline costs something
Reconciled reporting is slower to build and less flashy to demo than a dashboard of confident totals pulled from a fast cache. You give up a little speed and a little visual punch. What you buy is the only thing that matters in financial software: the user can act on the number without checking it by hand, because they have learned, report by reconciled report, that the system does not lie to them. That is the standard I hold every financial surface in Vontra to.
That earned trust is the entire value proposition of an ERP. Companies do not adopt operational software to look at charts. They adopt it to make decisions — who to pay, who to chase, whether they can afford the hire — and a decision is only as good as the number under it. An ERP that shows numbers it cannot defend has inverted its own purpose. It manufactures false confidence, which is more dangerous than the spreadsheet it replaced, because the spreadsheet at least looked uncertain.
I would rather ship a report that says “we can’t reconcile this yet” than one that says $34,000 when the answer is $340. The first preserves trust. The second spends it all, and you do not get it back by being right the next ten times. Truth in reporting is not a feature you add at the end. It is the foundation, poured one reconciled report at a time, and it is the only foundation an operating business can stand on.