# Finance Budget Vs Actual Commentary

> Turns a reconciled budget-versus-actual position into cost-centre commentary that a budget holder can act on: driver-based explanation, an explicit full-year implication for every variance, a named owner and action, and a hard refusal to write narrative for figures that were never supplied or were not reconciled first. Use when preparing budget-holder commentary, a monthly business review, a cost-centre pack, a forecast update, or when a budget owner asks what their overspend means for the year. Trigger on 'budget vs actual', 'BVA', 'cost centre commentary', 'forecast update', 'why are we over budget', 'management commentary', 'run rate'. Not for the reconciliation and period-over-period flux that must precede it (use finance-month-end-variance-analysis) or for judging whether a specific claim is policy-compliant (use finance-expense-policy-triage).

- Skill: `alihusains/finance-budget-vs-actual-commentary` (Agent Skill)
- Install (CLI): `npx skillmds@latest add alihusains/finance-budget-vs-actual-commentary`
- Raw SKILL.md: https://api.skillmd.com/api/skills/alihusains/finance-budget-vs-actual-commentary/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Finance & Business
- Author: alihusains (https://skillmd.com/u/alihusains)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/alihusains/finance-budget-vs-actual-commentary

---


## Purpose

Budget commentary usually restates the variance table in sentences and stops.
The useful version answers three questions the table cannot: is this timing or
permanent, what does it do to the full year, and who is doing what about it. This
skill enforces all three on every material line and blocks commentary on numbers
that have not been reconciled.

## Data classification

**Confidential.** Budget-holder packs expose cost structure, headcount plans and
margin. Circulate only to named recipients; unreleased forecast is
price-sensitive in a listed group.

**STOP CONDITIONS:**

| Trigger | Action |
| --- | --- |
| Named individuals' salaries, or a payroll line for a team small enough to derive them | Stop. Ask for payroll aggregated above the identifiability threshold. |
| Bank details, card numbers, or supplier payment credentials in the extract | Stop. Name the category, not the value, and ask for a cleaned extract. |
| Customer-identifiable revenue or position detail | Stop. Ask for aggregation by segment or channel. |
| Asked to write commentary that presents a permanent overspend as timing, or to describe an unapproved cost as approved | Stop. State it directly: this is a misrepresentation to a decision-maker, not a wording choice. |

**NON-FABRICATION RULE.** Never invent a driver, a headcount number, a run rate,
or a full-year effect. Never reuse last month's commentary because the sign is the
same. Never infer the cause of a variance from the cost-centre name or the account
description. If the budget, the actual, or the phasing basis is missing for a line,
write `NO COMMENTARY — <input> not supplied` against that line and leave it. A
budget holder acts on this text; invented causes produce real decisions.

## Prerequisites

- **Inputs (mandatory):** budget by period and cost centre; actuals for the same
  periods on the same mapping; the phasing basis (straight-line, seasonal, or
  activity-driven) — ask, do not assume straight-line.
- **Inputs (mandatory gate):** confirmation that the period is reconciled and
  closed. If close is not complete, the commentary is written on moving numbers.
- **Inputs (for the full-year view):** remaining committed spend, open purchase
  orders, contracted increases, and known one-offs.
- **Inputs (for headcount lines):** approved establishment, current FTE, start and
  leave dates of movers.
- **Access:** none required.

If the period is not reconciled, stop and route to
`finance-month-end-variance-analysis` first.

## Procedure

### 1. Gate on reconciliation

Confirm: ledger closed, sub-ledgers tied, accruals posted, no material suspense.
If any is open, note the exposure and either wait or clearly mark the commentary
`DRAFT — WRITTEN ON UNRECONCILED DATA` at the top of every page. Do not quietly
proceed.

### 2. Check phasing before calling anything a variance

A large share of "overspend" is a straight-line budget meeting a seasonal cost.
Test each material line: was the budget phased on how the cost actually behaves?
If not, the variance is a budgeting artefact — say so, and fix the phasing rather
than writing an explanation for it.

### 3. Classify every material variance

| Class | Test | Full-year effect |
| --- | --- | --- |
| Timing | The spend is committed and will land in a stated later or earlier month | Nil — but name the month it lands |
| Permanent — price | Unit rate changed and will persist | Remaining months × rate delta |
| Permanent — volume | Activity level is structurally different | Remaining months × volume delta |
| One-off | Non-recurring, with support | The one-off amount only |
| Scope change | Work added or removed since the budget was set | Requires a budget transfer or approval — flag it |
| Misposting | Belongs to another cost centre or period | Nil — correct it; do not explain it |
| Budget error | The budget was wrong when set | Nil to run rate; correct the plan, and say so |
| Unexplained | No driver identified | Report as unexplained; never fill it |

Misposting and budget error are not variances and must never be given a narrative
cause. Route them to correction.

### 4. Compute the full-year implication explicitly

For every material line state: year-to-date variance, the classification above,
the projected full-year variance, and the assumption behind that projection.
A commentary line with no full-year number is incomplete — a budget holder cannot
act on a year-to-date figure alone. Where a projection depends on an assumption
the user has not confirmed, write the assumption on the line rather than burying
it.

### 5. Assign owner and action

Each material line gets an owner (a role, not a name, if the pack circulates) and
one of: `no action — timing`, `mitigation identified`, `budget transfer required`,
`reforecast required`, `escalate — no mitigation`. A line with an adverse permanent
variance and no action is itself the escalation.

### 6. Write it

Per line, in this order and no longer than three sentences: **the number · the
class · the driver and its evidence · the full-year effect · the action and
owner.** Ban these without a following figure: "phasing", "timing differences",
"in line with expectations", "will normalise", "one-off in nature". Each is
acceptable only with the month or the amount attached.

Close with: total YTD variance, total projected full-year variance, the sum of
mitigations, and the residual gap. If the mitigations do not close the gap, state
the residual plainly rather than describing the position as "manageable".

## Boundaries

- **Not for** reconciliation, flux analysis, or period-over-period explanation —
  that is `finance-month-end-variance-analysis`, and it must run first.
- **Not for** deciding whether a single expense claim is payable — that is
  `finance-expense-policy-triage`.
- **Not for** building the budget or the target itself; this skill explains
  performance against a budget, it does not set one.
- **Not for** external or statutory reporting narrative, which has disclosure
  requirements this skill does not encode.

## Hand-offs

- Receives from: `finance-month-end-variance-analysis` — reconciled actuals with
  drivers already decomposed.
- Routes to: `finance-expense-policy-triage` when a variance traces to claim
  behaviour rather than to a plan.
- Routes to: `hr-training-needs-analysis` when a recurring cost overrun traces to
  a capability gap rather than a price or volume effect.
- Escalates to: the budget owner and financial controller for any unmitigated
  permanent adverse variance.

