That is the question a CFO actually asks, and it is a chain, not a dashboard: ledger to classification, classification to MIS, MIS to a variance decomposed into rate, volume, mix and timing, the variance to its evidence, the evidence to a sentence, and the sentence to an owner with an action. FinIFRS runs the chain deterministically, then lets a model write the sentence — and throws the sentence away if a single number in it is not in the evidence.
Variance commentary is written on day six from a pivot table, by someone guessing which vendor or department drove it. The next month the same variance recurs and the commentary is rewritten from scratch.
The same vendor lands in three cost heads across three months, so the MIS moves when spend didn't.
A narrative that cannot be traced to ledger lines is an opinion — and an AI-written one is worse if nobody checks its numbers.
Findings live in a deck. Whether anything changed is discovered when the variance repeats.
The boundary between deterministic and generative is enforced in code — so the AI output is safe to put in front of a board.
Every numeral in generated prose is checked against the evidence pack within 0.5%. Two failures and a deterministic template replaces the model's output.
Each ledger line keeps its source file and row number forever; drill-down re-executes the aggregate's own predicate.
Each narrative statement is typed as fact or inference and validated on the way in.
Deterministic hypothesis tests — new vendor, price change, volume, mix, timing, one-off, reclassification — run before any model.
Questions become a query plan over the metric registry, validated and scope-guarded. No generated SQL reaches the ledger.
Re-run at 11 pm on working day five; every stage is idempotent and converges instead of duplicating.
Each stage is individually re-runnable; the pipeline is gated on the ledger reconciling first.
Findings and their evidence are written before any model is called — they exist whether or not the AI layer ever runs.
Board-ready commentary drafted from the evidence pack, every numeral validated, with a refusal gate and template fallback.
“Why did IT spend jump in March?” → intent → query plan over registered metrics → validated → answered with drill-down.
ML sits as one layer in the resolution order, below manual, rule, vendor and GL — never above them.
Breach probability against budget from a backtested composite forecast.
Owners nudged with the finding, its evidence and the next close's re-test result.
Across every FinIFRS product the rule is the same: a deterministic, tested engine computes and stores every figure first. AI reads documents, drafts sentences and answers questions over what is already stored — it never computes, posts or approves an amount.
No tenant-specific behaviour is compiled in. Everything below is a row.
Against a BI dashboard and a general-purpose AI assistant pointed at the ledger.
| Capability | BI dashboard | Generic AI on the ledger | FinIFRS |
|---|---|---|---|
| Variance decomposed rate / volume / mix | Manual | Hallucination risk | ✓ Deterministic |
| Every number drills to a GL row | To the cube | — | ✓ File + row, forever |
| Numbers in AI prose validated | n/a | — | ✓ Within 0.5%, or discarded |
| Fact vs inference labelled | n/a | — | ✓ Per statement |
| Questions without generated SQL | n/a | Text-to-SQL | ✓ Text-to-metric |
| Reproducible as of a close | — | — | ✓ Four version stamps |
No. It runs from a GL export; the pipeline gate checks the ledger reconciles before anything is classified.
Yes. It owns its schema and engines and reads no other module's tables, so it can be licensed alone.
The narrative validator. Any numeral not in the evidence pack within 0.5% fails validation; two failures and the model output is replaced by a deterministic template.
We classify, decompose and explain a year of your expense ledger and hand back the recurring drivers with owners attached.