AI Adoption GuideFinanceReport
Conversational financial Q&A
Natural-language interface returns drilldowns and explanations from the financial model, using tools like Cube AI Analyst or Datarails Genius.
Finance processPlanBudgetInvoiceCollectPayCloseReportAudit
By Don, DoneThat’s AI coach · updated
The quality bar: version, account, period
A complete conversational answer cites three things before it shows a figure: the published model version, the account, and the period. If any of those is missing, the reply is not ready to leave the cube.
Tools in this class (Cube, Datarails, Anaplan, Workday) accept natural-language questions against a planning model. Treat them as retrieval over a locked version, not as a second close. Fluency is not the quality test. The test is whether the number maps to a cell you can reopen.
FP&A still owns what leadership hears. Chat is a query surface. It is not the source of record, and it is not the board pack. When someone pastes a chat reply into a slide, the failure is already in motion: the room now has a number with no version stamp and no owner.
Quality also means refusing to fill gaps. If the cube does not contain the cut, the answer stays empty. Inventing a figure, a mix, or a driver to be helpful is a quality break, not a feature.
Pin the published model before anyone asks
Lock the model version before the first question. Name it the way you name a close: published forecast, board case, or working file, plus the timestamp or version ID your cube already uses. Every question runs against that pin. None of them should silently follow whoever last saved.
If two people ask the same question against different versions, you will get two numbers that both look official. Pinning is the control that prevents that. Bind the session to the published version if the tool allows it. If it does not, state the version in every prompt so the thread cannot drift.
A pinned version also bounds what the interface is allowed to explain. Commentary belongs to cells that exist in that version. If someone asks why travel moved, the system may return the travel account and period in the pinned model. It may not invent a headcount or rate story that lives only in a sidebar spreadsheet.
Changing version mid-thread is a failure mode. A follow-up that quietly switches from the board case to a sandbox forecast looks like a drilldown and is actually a different close. Restart the thread, or restate the pin, when the version changes.
Scenario work is a different job. If the question is what happens if you cut hiring, send it to natural-language scenario generation on an explicit working version. Do not answer a what-if as if it were a retrieved cell on the published pin.
Cite the cut or return empty
Every returned figure should carry the cite: model version, account (or the exact cube member), and period. Prefer the cube's own labels over paraphrases. "Revenue" is not a cite if the cell is recurring revenue, product, Q2.
If the requested cut is not in the cube, return empty. Do not roll a parent down. Do not allocate. Do not average adjacent periods. Do not reuse last year's mix. Those are invented numbers wearing a chat tone.
The main failure mode is answering a cut that is not in the cube. A question can sound specific and still have no member. If the geography, product, or account is not in the pinned version, there is no cell. The correct reply is that the cut is not in this model. You may name the nearest published member as a different question. You may not return a fabricated child number.
Cite-or-empty also blocks a second failure: inventing a driver. A variance question is not a license to narrate. If the cube has no driver tree for that account, say so. Point the reader to a variance report with driver attribution when that report exists for the same version. Do not let chat guess price versus volume.
Instruct the session to refuse completion: answer only from members in the pinned version, name those members, and return no figure if the member is absent. Human review still catches tone. The empty rule catches the number.
Resolve the members, then stop
A regional lead asks in chat: "What was EMEA professional services revenue in March on the latest forecast?"
First confirm the pin. "Latest" is not a version. Resolve it to the published forecast your team named this cycle.
Then resolve the members. Account: professional services revenue, not a blended services line. Geography: EMEA as a cube region, not a sales overlay. Period: March of the forecast year, in the model's calendar.
If those three members exist in the pinned version, return the cell and the cite. Stop there. Do not add a story about pipeline or staffing unless those drivers are cells in the same version.
If EMEA is missing, or professional services is not a child in this cube, return empty for the figure. Say which member is absent. Offer the published parent (global professional services, or EMEA total revenue) only as a named, different cut, never as a substitute that looks like the original ask.
That empty result is the quality outcome. Filling it would be the failure: a number leadership might repeat that no one can tie back to the model.
The same pattern applies to time. A question for "this quarter to date" is not a period unless the cube has that as-of cut. If it does not, return empty. Do not annualize a month.
FP&A relays; chat does not brief the room
The last control is who speaks. A cited answer can still be the wrong thing to say in the room. Materiality, embargo, and comparison basis are FP&A judgment. Chat does not know which number is in the pack.
Do not treat the chat transcript as the official number. Copying a reply into Slack, a slide, or a verbal update without restating version, account, and period is how unofficial figures become what finance said. The human relay restates the cite, checks it against the published cube, and decides whether it belongs in the narrative.
Use chat to find the cell. Use your reporting stack to publish it. A board-pack narrative draft should pull from the same pinned version, not from a thread. If the question was really about assumptions rather than a retrieved actual or forecast cell, send it to driver-tree assumption suggestions instead of forcing a Q&A shape.
When you relay, keep empty results empty. Telling leadership you do not have that cut in the published forecast is a complete answer. Guessing a driver or a region mix so the conversation can continue is how quality dies.
Run a short checklist before anything leaves the team: pinned version named; account and period match the cube; figure present only if the cell exists; no invented driver; a person, not the chat window, owns the sentence leadership hears.
Is this worth automating for you?
Whether this pays back depends on how much time it takes your team today. Most teams estimate that from memory, and the estimate is usually wrong in one direction or the other.
DoneThat reconstructs where the time actually went, with no timers to forget, so you can measure the baseline before committing to a project and check the gain afterward.
Measure the baseline first