Verified against ChatGPT · 2026-08-08
Turn a raw actual-vs-budget export into a variance narrative someone can act on
Converts a messy actual-vs-budget line-item dump into a ranked variance explanation that separates timing shifts from real overruns, so the finance review meeting spends time on the three lines that matter instead of all forty.
The prompt
Ready to copy — highlighted parts are example details you can swap.
Phase 1 — Ingest. Here is the actual-vs-budget data for the period, as I have it (paste raw, don't reformat before giving it to me): Marketing: budget $85k, actual $121k. Contractor costs: budget $40k, actual $22k. Cloud hosting: budget $30k, actual $38k. (18 more lines) Period: July 2026 (month 7 of FY26) Materiality threshold: Ignore anything under $5,000 or 10% of budget, whichever is larger Phase 2 — Classify. For every line where the variance exceeds the materiality threshold I gave you, classify it into exactly one of three buckets: Timing (the spend or revenue happened, just not in the period it was budgeted for, and nets out over the year), Rate (the volume was as planned but the unit cost or price differed), or Volume (more or less of the thing happened than planned, at roughly the budgeted rate). Do not classify a variance you can't actually explain from the data given — if the line item alone doesn't tell you which bucket it belongs to, say so explicitly and list it under "needs input" with the specific question you'd need answered, rather than guessing a plausible-sounding explanation. Phase 3 — Rank. Order the material variances by how much each one changes the full-year forecast if it persists at the same rate for the rest of the year, not by the size of the variance in this one period alone — a large one-time timing variance matters less going forward than a smaller variance that compounds every month. Phase 4 — Narrative. For the top five ranked items, write a two-sentence explanation each: what happened, and whether it needs action or will self-correct. Never write "variance due to timing" as a complete explanation on its own — state what specifically shifted and when it's expected to reverse, or flag that you don't have enough information to say it will reverse. WHAT NOT TO DO Do not smooth over an unfavorable variance with softer language than a favorable one of the same size gets — describe both with the same level of directness. Do not present any dollar figure you calculated as exact if the underlying period data was incomplete; say what's approximate. OUTPUT FORMAT 1. A table: Line Item | Variance ($ and %) | Bucket | Persists If Unaddressed (full-year impact estimate). 2. The five-item narrative section, ranked. 3. A "needs input" list of anything you couldn't classify confidently, each with the specific question to ask the line owner. 4. One line noting this is a structuring aid for the review meeting, not a finalized management account.
Customize
Optional — swap in your own details for the highlighted parts above.
Why this works
Splitting variances into timing, rate, and volume buckets mirrors the actual root-cause taxonomy FP&A teams use, and forcing GPT-5.1 to commit to exactly one bucket per line (rather than a paragraph that vaguely gestures at all three) is what makes the classification checkable — a reviewer can look at a line marked "rate" and immediately ask "did our unit cost change," instead of parsing a hedge-everything explanation that doesn't actually commit to a cause. Ranking by projected full-year impact rather than raw period-variance size is the mechanical fix for the most common failure of a variance review meeting: without that instruction, a model (and most humans building a first-pass report) will sort by the biggest number in the current period, which over-weights one-time timing blips and under-weights a small but compounding rate problem that will be five times larger by year-end if nobody looks at it now. The explicit instruction to say "needs input" rather than guess addresses a specific model behavior — asked to explain a variance from a bare number with no context, a language model will readily generate a plausible-sounding narrative ("likely due to seasonal demand") that sounds authoritative but has zero basis in the actual data provided, and a finance reviewer who doesn't know the explanation was invented will waste the meeting debating a cause that was never real. Requiring equal directness for favorable and unfavorable variances closes a subtler bias where models (like people) tend to write softer, more hedged language around bad news and crisper language around good news, which distorts which items a reader takes seriously.
What you get back
Marketing: +$36k / +42% vs budget | Bucket: Volume | Persists-if-unaddressed: +$430k full year if the current spend rate holds, since two campaigns were pulled forward from Q3 rather than being incremental. Needs input: Cloud hosting overage — could be a rate change (provider price increase) or volume (usage growth); ask infra owner which.
Verified against
ChatGPT GPT-5.1 · 2026-08-08
Changelog
- 2026-08-08 — Initial publish, verified against ChatGPT GPT-5.1.
Need this built into your business?
If a prompt isn't enough — what Scult builds, built and maintained for you — that's Scult's day job.
EXPLORE WHAT SCULT BUILDS
