Skip to content

Investigate YTD actuals against budget

Compares year-to-date actuals to budget, ranks the lines that are off plan, and proposes a likely cause for each.

Workflow · Variance Analysis | Role · FP&A Analyst | Advanced | 20 min | Updated Jun 2, 2026
The prompt

Copy and customize

prompt.txt
You are a senior FP&A analyst preparing a year-to-date budget-vs-actual review
for the CFO.

Context: actuals and budget are both in the Amount field, lines are in Account
Group L2, and the reporting date is Reporting Month. Use fiscal year to date.

{actuals_data}

{budget_data}

Task: compare YTD actuals to budget by line, surface what is materially off plan,
and propose a likely cause for each.

Output format:
- A table by Account Group L2: actual, budget, variance in {currency}, variance %,
  favorable or unfavorable.
- A ranked list of lines off plan by more than {variance_threshold}, largest
  dollar variance first.
- For each, one likely cause grounded in the data, or "cannot determine from this
  data" where that is the honest answer.
- A short "needs attention" list of two or three items to action this period.
Open in
We’ll copy the prompt and open the chat.
How to use

Run it in four steps

  1. Export YTD actuals and budget on the same Amount convention and Account Group L2 grain, with the budget phased to Reporting Month rather than straight-lined.
  2. Paste actuals into {actuals_data} and budget into {budget_data}, then set {currency} and your {variance_threshold}.
  3. Run it for the ranked variance table and proposed causes.
  4. Treat every proposed cause as a hypothesis to verify; the model narrates a reason whether or not the data contains one.
When to use

When to reach for this prompt

Use this once actuals are final and the budget is locked, as the core monthly or quarterly budget-vs-actual pass. The "propose a likely cause" step is what separates it from a plain variance table. It is poorly suited to the first month of a fiscal year, where there is too little year-to-date signal, and to any case where budget and actuals sit at different grains that have not been reconciled.
Example output

What you can expect back

YTD actuals vs. budget (Amount, by Account Group L2) — threshold: ±50K or ±10%

LineActualBudgetVariance%Flag
Revenue11,420K12,000K(580K)-4.8%Unfavorable
COGS(3,426K)(3,300K)(126K)+3.8%Unfavorable
Sales & Mktg(2,140K)(1,900K)(240K)+12.6%Unfavorable
G&A(1,180K)(1,250K)70K-5.6%Favorable

Off plan, ranked:

  1. Revenue -580K. Softness concentrated in two months; the pattern is consistent with deal slippage, though slippage versus lost deals cannot be determined from this data.
  2. Sales & Mktg +240K. Spend is front-loaded against a flat budget phasing, which likely points to timing rather than structural overspend.
  3. COGS +126K. Approximately tracks the revenue mix shift; gross margin held, so worth monitoring rather than escalating.

Needs attention:

  • Confirm whether the revenue gap is timing or lost pipeline.
  • Re-phase the S&M budget if the spend cadence has structurally changed.
Limitations · Worth knowing

This prompt has real limitations you should understand.

"Propose a likely cause" is the most load-bearing and most dangerous instruction on this page. Every variance has a cause, the data almost never contains it, and the model will supply a plausible-sounding one regardless. The explicit "cannot determine" option pushes back on this, but the pull toward a clean narrative is strong, so every proposed cause should be read as a hypothesis to verify rather than a finding. The comparison itself is fragile in two specific ways. Most budgets are entered annually and divided by twelve, so comparing lumpy actuals to a flat-lined budget produces variances that are pure phasing artifacts the model reports as real. And when actuals are recorded by account while budget is set by department, rolling one up to meet the other introduces allocation choices, and the tidy line-by-line variance table quietly depends on them. Honest variance attribution needs actuals and budget reconciled to the same grain, on the same line definitions, with a budget that is genuinely phased to the period rather than straight-lined. That reconciliation across planning and accounting systems is the work the prompt cannot do for itself, which is why budget-vs-actual is the workflow where the data layer matters most and a sharper prompt helps least.
Prerequisites

What your data needs to look like

  • Actuals and budget on the same Amount convention and the same grain
  • A shared Account Group L2 mapping across both sources
  • A budget phased to Reporting Month, not an annual figure split evenly
  • Reconciliation between the planning and accounting systems before the prompt runs
See it run on real data

See how FinanceOS handles this prompt on real financial data.

Book a 20-minute walkthrough. We’ll run this exact prompt against a sample dataset reconciled through FinanceOS, and show you what changes when the data underneath is right.

Book a walkthrough
The Hub

Join the FinanceOS Hub.

Subscribe to get new sessions, use cases, and AI workflows for finance teams — straight to your inbox, every Monday.

  • Weekly · ~4 min read
  • No spam, unsubscribe anytime
  • 2,400+ finance leaders