AI Variance Analysis: Turn Actuals-vs-Plan Into CFO-Ready Commentary

Feed AI a closed actuals-vs-plan table and get back the month-end variance commentary your CFO actually reads — with a copy-ready prompt and the exact materiality rules.

TL;DR

Month-end is closed, you have an actuals-vs-plan table, and the CFO wants commentary by 9am. AI cannot tell you why a line missed, but if you hand it the variances plus your known cause for each material line, it writes a clean one-page narrative in under five minutes. The whole job is upstream: set a materiality threshold, paste only material lines, give one cause-hint per line, and forbid the model from inventing causes. The copy-ready prompt below does exactly that.

The task

Month-end closed. You have an actuals-vs-plan table that is reconciled and locked. The CFO wants variance commentary by 9am. You have 30 minutes and a copy of the file. This is a writing problem, not an investigation problem — and that is precisely the part AI is good at.

When this is the right job for AI

  • Your variance table is closed and reconciled, not still under revision. If numbers move after you draft, you redo the narrative.
  • You can give AI just the variances and your top one to two known causes per line. The model explains; it does not discover.
  • You want narrative, not root-cause analysis. If you do not yet know why a line missed, mark it “in progress” — the model cannot reverse-engineer a GL it never saw.

If you are still hunting for the driver behind a line, that is a different task — see AI business driver breakdown — and you should do that first.

Set the materiality threshold before you prompt

The single biggest quality lever is what you exclude. FP&A teams typically gate commentary on a dual threshold — an absolute dollar figure AND a percentage — so a tiny line with a 40% swing and a huge line with a 2% swing both get filtered correctly. Common public guidance lands around “explain only variances above $50K or 10%,” but use whatever your variance policy already documents and apply it consistently every month (auditors notice when the threshold drifts).

Pick a rule, then only paste lines that breach it. A typical P&L produces 8-15 material lines worth commentary; everything else is noise.

What to feed the AI

InputWhy it matters
Variance table: line, actual, plan, $ variance, % variance, F/U flagThe raw facts the narrative is built on
Materiality threshold (e.g. > $200K OR > 10%)Stops line-item noise; forces the model to rank
One cause-hint per material lineThe “why” you already know — the model cannot guess it
Audience + length (CFO, 200 words)Controls register and prevents bloat

Note the F/U (favorable / unfavorable) flag: favorable means actual revenue beat plan or a cost came in under plan; unfavorable is the reverse. Keep the two visually separated in the output — a favorable variance can still hide a problem (a delayed cost is not a saved cost).

Copy-ready prompt

You are writing month-end variance commentary for the CFO.

Materiality: explain only variances > $200K OR > 10%.

Table:
| Line              | Actual | Plan  | Var $    | Var %  | F/U | Known cause hint |
| Revenue           | 12.4M  | 12.0M | +400K    | +3.3%  | F   | Enterprise renewal closed 2 weeks early |
| Gross margin      | 56.2%  | 58%   | -180bps  | -      | U   | Input costs up; freight |
| Sales OpEx        | 2.8M   | 2.5M  | +300K    | +12%   | U   | Two open reqs filled |
| Marketing OpEx    | 0.9M   | 1.2M  | -300K    | -25%   | F   | Q3 campaign delayed |
| R&D               | 1.8M   | 1.8M  | 0        | 0      | -   | -                |

Rules:
- If I gave no cause hint for a line, mark it "cause unknown - in progress" and do not invent one.
- Default every variance to ONE-TIME unless the cause is clearly recurring; say so explicitly.
- Keep favorable and unfavorable lines in separate bullets.

Write:
1. One headline: net P&L impact and the single most important explanation.
2. One bullet per material line: variance, root cause in plain English, structural vs one-time, and whether to expect recurrence.
3. One "watch this": the variance with the most uncertain cause.

200 words. No raw percentages a non-finance reader cannot interpret.

What good output looks like

Headline: P&L net favorable +$220K, driven by the Q3 marketing campaign push-out — operating leverage was timing, not improvement.

  • Revenue +$400K favorable: enterprise renewal closed two weeks early. One-time — do not assume in Q4.
  • Gross margin -180bps unfavorable: input costs and freight. Structural — expect this to persist absent supplier renegotiation.
  • Sales OpEx +$300K unfavorable: two open reqs filled mid-month. Structural going forward — full quarter run-rate hits in Q4.
  • Marketing OpEx -$300K favorable: Q3 campaign pushed to Q4. One-time — full spend lands in Q4.

Watch this: gross margin. If input costs hold, Q4 margin lands closer to 55% than plan’s 58%.

Notice the headline does the analyst’s real job — it tells the CFO the +$220K is timing, not a structurally better quarter. That judgment is yours; the model just phrases it.

Which model and how to feed the table

You have two ways in, and the trade-off is precision vs polish:

MethodBest forWatch out for
Paste the markdown table into the prompt (any chat model)A clean 8-15 line variance table you already trimmedModel may restate a $ figure slightly off — verify the headline number
Upload the closed workbook and ask it to filter to material linesWhen you have not pre-trimmed; lets the tool do the materiality mathLarger surface for hallucinated arithmetic; spot-check every number

For the narrative itself, the workhorse models are close. As of June 2026, Claude Sonnet 4.6 (in the $20/mo Claude Pro plan, which now bundles Claude Code and Claude Cowork) tends to follow the “do not invent causes” rule most reliably and writes tight finance prose. GPT-5.5 (ChatGPT Plus, $20/mo) is the default for upload-and-analyze: its data-analysis sandbox can ingest a spreadsheet and do the filtering for you. ChatGPT spreadsheet uploads run up to roughly 50MB per CSV/Excel file, and ChatGPT Plus allows about 80 file uploads per 3 hours (the Free tier is limited to 3 per day, as of June 2026). Gemini 3.1 Pro (Google AI Pro, $19.99/mo) is a fine third option if your data already lives in Google Sheets.

For pasted-table narrative work, pick whichever you already pay for — the quality gap on a 200-word commentary is small.

How to refine the output

  • AI labels everything “structural.” Push back: “Most month-level variances are one-time. Default to one-time unless the cause is clearly recurring.”
  • Commentary is too soft (“could be a concern”). Add: “Use direct language; the CFO has seen one-month noise before — call it what it is.”
  • AI invents causes for blank lines. The strict rule is already in the prompt; if it slips, repeat: “If I gave no cause hint, write cause unknown - in progress and move on.”
  • Numbers restated wrong. Ask it to echo your $ variances back verbatim before writing, then diff against your table.

Common mistakes

  • Pasting the full GL trial balance. The model dutifully explains noise. Trim to material lines first.
  • Forgetting the materiality threshold. Commentary becomes a line-item list, not analysis.
  • Mixing favorable and unfavorable in one bullet. Separate them — a favorable variance can mask a deferred cost.
  • Shipping without checking the math. Models occasionally restate a $ variance off by a rounding step. Always verify the headline number by hand.

A note on data privacy

Variance tables are non-public financials, so route them through a corporate-approved tenant. By default, OpenAI does not train on ChatGPT Enterprise, Business, Edu, or API inputs and outputs — but a thumbs-up/down on a response can opt that single conversation into training, so disable feedback in sensitive workspaces. The consumer Free/Plus tiers are not the place for entity-level financials; if your policy is strict, strip the legal entity name and any customer names before pasting. See OpenAI’s business data page for the current terms.

FAQ

  • Budget vs forecast vs actuals — does the same template work? Yes. Swap “plan” for “forecast” in the prompt. The structural-vs-one-time framing is identical; only the baseline changes.
  • Can I just upload the Excel file instead of pasting a table? Yes, in ChatGPT’s data-analysis sandbox (Plus or higher) or Claude with file upload. It is more convenient but expands the surface for arithmetic errors — spot-check every restated number. Pasting a pre-trimmed table is more controllable.
  • How is variance commentary different from driver analysis? Drivers explain why a metric moved; variance explains why it missed plan. Same data, different lens — see AI business driver breakdown.
  • Will AI catch a sign error or a busted formula in my table? No. It explains the numbers you give it; it does not audit them. Reconcile and lock the table first.
  • What length should I ask for? 150-250 words for a CFO one-pager. Anything longer reads as a list, not a narrative.

Tags: #AI writing #Finance #Business analysis #KPI #Executive update