AI for FP&A KPI Analysis
and Querying
Nobody disputes the arithmetic. They dispute the population, and the deck rarely says which one it used.
- KPI disagreements are definition disagreements. Active customers, headcount, revenue, gross margin and days sales outstanding each split into two or three defensible definitions, and packs rarely state which was used.
- The test of a natural language query layer is not whether it answers. It is whether a controller can tell in under a minute that an answer is wrong.
- Return the row count with the total and the posting status with the figure. A total that looks right on 240 rows and should have been 2,400 is the error that survives review.
- In a worked headcount bridge, 412 and 447 were both correct. They answered different questions, and the failure was presenting one without saying which.
- ChatFin resolves each KPI against a written definition with an effective date, and where two definitions exist it returns both rather than picking one silently.
AI for FP&A KPI analysis means an agent that resolves a metric against a written definition rather than inferring one, shows the filter and the period it used, returns the row count beside the total, and says when the ledger does not support the question. ChatFin does not settle a definition argument. It refuses to answer ambiguously, which is a different and more useful thing.
The reason this matters more than better modelling is that almost every KPI dispute is about population rather than arithmetic. When two decks disagree on headcount or revenue, the calculation is usually identical and the filter is not. A reconciled bridge between the two definitions is a minute of work for an agent and it is almost never run.
Every KPI argument is a definition argument
Nobody disputes the arithmetic. They dispute the population. When sales and finance report different revenue, or two decks show different headcount, the calculation is identical and the filter is not.
| KPI | Where the definition splits | Consequence |
|---|---|---|
| Active customers | Invoiced in the period, or holding a live contract | Two numbers, both defensible, reported as one |
| Headcount | Contracted, paid in the period, or full time equivalent | Contractors move the number by double digits |
| Revenue | Billed, recognised, or booked | Three answers, and the deck rarely says which |
| Gross margin | Whether support and delivery cost sits in cost of sales | Changes the number by several points and never gets restated |
| Days sales outstanding | Count back method or simple average | Diverges most exactly when growth changes, which is when it matters |
An agent cannot settle these. What it can do is refuse to answer ambiguously: state the definition it used, show the filter, and report the alternative when one exists.
ChatFin resolves a KPI against a written definition with an effective date. Where two definitions exist, it returns both and names them rather than picking one silently.
Asking the ledger a question in plain English
Natural language querying demonstrates beautifully and fails quietly. Asking is easy. Knowing whether the answer is right is the entire problem.
Resolve the question against your own structures
West region has to mean the cost centres your hierarchy says it means, on the version in force for that period, not a guess from account descriptions.
Return the query, not just the answer
The filter, the period, the entity and the posting status. An answer with no visible query cannot be reviewed, so it should not enter a pack.
Separate posted, unposted and reversed
Most wrong finance answers include a document class the asker did not mean. Unapproved journals and one half of a reversed pair are the usual two.
Return the row count with the total
A figure that looks right on 240 rows and should have been 2,400 is the failure that survives review. The count catches it in a second.
Say when the data does not support the question
The right answer to a question about a driver the ledger does not hold is to say so, not to answer from a proxy.
A metric layer beats a clever model
The durable fix for KPI disagreement is boring. Write the definitions down, version them with effective dates, and make every tool read from the same place.
ChatFin reads from a versioned definition set rather than inferring intent from a question. That is what makes the same question asked in March and in September comparable.
A worked disagreement, two headcount numbers
The board pack says 412. The people team says 447. Both are produced monthly, both have been produced for two years, and nobody has reconciled them. The bridge takes an agent about a minute and it has never been run.
| Difference | Heads | Which definition includes it |
|---|---|---|
| Contractors paid through payables, not payroll | 21 | People team only |
| Employees on unpaid leave | 6 | People team only |
| Leavers in their notice period | 9 | People team only |
| Part time counted as one rather than as a fraction | 11 | People team counts heads, finance counts full time equivalent |
| Two subsidiaries outside the finance consolidation | 4 | People team only |
| Rounding on full time equivalent | negative 16 | Finance only |
| Net difference | 35 |
Once the bridge exists it can be produced every month at no cost, and the conversation stops recurring. That is the shape of value an agent adds to KPI work: not a better number, a reconciled one.
Trends that survive a restructure
The most common way a KPI trend lies is that the organisation changed underneath it. Four cases, all of which an agent should detect and report before it draws a line.
| Change | What the trend appears to show | What to report instead |
|---|---|---|
| A department is added | A step increase in cost | Population difference, with and without the new department |
| Two entities merge | A discontinuity nobody explains | Restated comparative on a like for like basis |
| A cost is reclassified | One line falls, another rises | Both lines together, with the reclass named |
| A metric definition changes | A permanent shift at one point | The definition change, dated, with both bases shown |
ChatFin checks the population and the definition version before it reports a movement. Where either changed inside the comparison window, that is reported first, because otherwise the reader draws a conclusion about the business from a change in the bookkeeping.
What belongs in a board pack and what does not
The constraint on a board pack is attention, not data. An agent that can produce any metric makes that constraint worse unless somebody decides what earns a place.
Draft from the ledger, edit as a person
The agent assembles the figures, the comparisons and the population notes. A person decides what the board needs to see and writes the sentence.
Keep the working paper separate from the pack
The full detail, with filters and row counts, belongs in a working paper the reviewer can open. The pack carries the conclusion.
Version the pack definitions with the pack
So a board member comparing this quarter to last is comparing the same thing, and any change is visible rather than inferred.
ChatFin drafts the pack figures with the working paper attached to each one. What earns a place on the page is an editorial decision and it stays with the finance lead.
Where a KPI agent underperforms
Three, and all three are organisational rather than technical.
ChatFin will produce the bridge between two competing definitions on request. Deciding which one goes in the board pack is a decision for a person, and it should be written down once rather than remade every month.
Deeper in FP&A KPI analysis
Two use cases sit under this hub, in build and shown rather than linked.
Worked on this page
Natural language querying of finance data · KPI analysis
Questions FP&A teams ask first
Why do two reports of the same KPI disagree?
Because they use different populations, not different arithmetic. Headcount splits into contracted, paid in the period and full time equivalent. Revenue splits into billed, recognised and booked. Each is defensible and each answers a different question. ChatFin resolves a KPI against a written definition with an effective date, and where two definitions exist it returns both and names them instead of choosing silently.
How do you know a plain English answer from the ledger is right?
Make the tool show its working. The filter it applied, the period, the entity, the posting status and the row count behind the total. Most wrong finance answers include a document class the person asking did not mean, usually unapproved journals or one half of a reversed pair. ChatFin returns all of that with every figure, because an answer nobody can check should not enter a board pack.
What stops a KPI trend from being misleading?
Checking the population and the definition version before drawing the line. A department added, two entities merged, a cost reclassified or a definition changed all produce a movement that looks like a business event and is not. ChatFin reports the structural change first, dated, with both bases shown, so a reader does not draw a conclusion about the business from a change in the bookkeeping.
Not a better number. A reconciled one.
ChatFin resolves every KPI against a versioned definition, returns the filter, period, posting status and row count with the figure, and reports when a definition or a population changed inside the comparison window.
Where two definitions compete, it produces the bridge between them line by line. Deciding which one goes in the pack stays with a named person.
Bring two reports of the same KPI that disagree. The bridge takes minutes.
Book a demoAll images are served from the Pexels content network. No third party product screenshots, vendor logos or licensed media are used on this page.
Explore this cluster
Bring two numbers that disagree.
We will build the bridge between them through ChatFin, line by line, and show you which definition each report was actually answering.