Skip to main content
DoneThat

AI Adoption GuideFinanceReport

Board-pack narrative draft

LLM writes MD&A-style commentary from numbers and KPIs for executive review, using tools like Vena Copilot.

Finance processPlanBudgetInvoiceCollectPayCloseReportAudit

By Don, DoneThat’s AI coach · updated

The draft is commentary on a frozen pack, not the pack itself

A board-pack narrative draft is MD&A-style commentary generated from the numbers and KPIs already in the pack. Each sentence must name the line or KPI it describes. If that number is missing, the sentence stays empty. The model must not invent a variance, a driver, or a cause. FP&A still owns the pack. The draft is a first pass for executive review, not a document that can go to the board on its own.

Platforms in this class (Vena, Datarails, Anaplan, Workday, and similar FP&A tools) can produce that first pass from connected planning or close data. Treat them as drafting assistants. They do not sign the pack, freeze the close, or decide what the board is allowed to read.

The quality bar is narrow. A sentence that restates a cited line is useful. A sentence that fills a hole with plausible language is a failure. A sentence that explains why a variance happened without a cited driver is also a failure, even when the explanation matches last quarter's story.

Treat the draft as the pack and you have swapped a controlled artifact for an unowned narrative. The tables may still be right. The claims around them will not have been checked. Generated commentary that is pasted into the board PDF without a named owner reading every cite is not a pack. It is a draft that escaped.

Freeze the pack before any sentence is written

Generate commentary against a frozen extract, not against a live cube that can change while the model is writing. Snapshot the pack pages you intend to narrate: P&L, KPI scorecard, cash, backlog, or whatever the board actually sees. Record the period, the version (actuals, latest estimate, or board cut), and the timestamp. Freeze units, currency, and rounding with the numbers. A draft that restates a rounded board figure as if it were the unrounded source is still a mismatch. That freeze is the only source the draft is allowed to read.

Do not let the model query a rolling workbook, a chat layer, or an analyst scratch file while it writes board sentences. Those surfaces move. Use conversational financial Q&A for exploration after the pack is locked, not as a second source mixed into MD&A. If you need a forward view in the pack, put the approved forecast on a frozen page first. Do not pull a live ML rolling revenue forecast into commentary unless that forecast is already a labeled line in the pack.

If a KPI is still loading, still in review, or still labeled TBD in the pack, it is missing. The freeze includes the holes. A later refresh of one row after commentary has been generated is a new pack version. Regenerate or rewrite. Do not splice a new number under an old sentence.

Cite the line, then write the sentence

Generation order is cite first, prose second. For each paragraph the model proposes, require a pointer to the pack location: statement, page or schedule, line name, period, and comparison basis (versus prior period, versus budget, or versus forecast). The sentence may only use quantities that sit behind that pointer.

Worked example (illustrative structure, not a real pack and not real figures). Suppose the frozen page has three board-visible lines: revenue with a current-versus-prior comparison, gross margin with the same comparison, and total operating expense with no volume, rate, or headcount split. A valid draft looks like this:

Revenue restates the pack's current-versus-prior movement and cites the revenue line. It does not add product mix, bookings, or a regional story unless those lines are also on the frozen page.

Gross margin restates the pack's margin movement and cites the margin line. It does not attribute the move to price, cost, or mix unless those bridges exist as cited lines.

Operating expense restates the total and cites the opex line. It stops. It does not say the increase was hiring, software, or travel.

That is the entire example. The useful output is three short sentences plus three cites, and a blank where a driver would have been. The unusable output is a fluent paragraph that explains opex with a cause the pack never showed.

If you already produce a variance report with driver attribution, that report is a valid cite only when it is in the frozen pack. A driver that lives in a side file or in a chat thread is not a board cite.

Missing numbers stay blank; missing causes stay unsaid

Empty stays empty. If the pack has no figure for a KPI the template usually covers (net working capital, bookings, headcount, a segment), the draft leaves that slot blank or writes an explicit placeholder such as "[not in pack]". It must not narrate the missing KPI as if the number existed, round a nearby line into a substitute, or reuse last period's figure.

Narrating a missing KPI is the usual leak under template pressure. The MD&A outline has a cash section, the cash page is not in this cut, and the model fills the section from memory of the last pack or from a related liquidity ratio that is present. That sentence will read as if cash had been reported. The board will treat it as reported.

The same rule applies to variance. If the pack shows a level but no comparison, the draft may describe the level and must not invent a variance. If the pack shows a variance but no driver bridge, the draft may restate the variance and must not invent a cause.

Inventing a cause is the usual quality break in fluent drafts. The model completes "margin compressed because" with price, mix, freight, or discounting because those words often follow that clause. None of that is allowed unless the cited line is a driver, not a result. FP&A can add a cause in review. The model cannot.

Blanks are the signal. They tell the reviewer where the pack is silent. Filling them to look complete hides the silence.

FP&A edits the draft, then sends the pack

After generation, a named FP&A owner reads the draft against the freeze. The pass is mechanical first, judgment second.

Mechanical checks: every sentence has a cite; every cited number matches the frozen pack; every blank is still blank; no sentence introduces a comparison or a driver that is not on the page; the draft has not been dropped into the board PDF as-is.

Judgment checks: which restated movements need a human cause; which blanks should stay blank for this board; which sentences are too long or too certain. Causes that FP&A adds must still point at evidence: an already-cited driver, an operational fact the owner is willing to stand behind, or an explicit note that the cause is not in the pack. If the board will ask why, and you do not have a cited driver, the honest line is that the pack does not show it. Rehearsal for those questions belongs in an earnings Q&A simulator or a prep session, not in invented MD&A.

Then send. The artifact that leaves the team is the pack plus reviewed commentary, under FP&A ownership. The model output is a working file. It is not the minutes, not the deck, and not a substitute for the controller's numbers.

If the freeze is later revised, the draft is stale. Re-run from the new freeze or rewrite the affected sentences. Do not leave commentary that cites a line that no longer exists.

Fluency will keep improving across this class of tools. Fluency is not the quality outcome. The outcome is a draft that cites the KPI or line it describes, stays empty when the number is missing, refuses to invent a variance or a cause, and leaves the pack in FP&A's hands.

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