Budget season · Track
Budget Change Digest
Compares two versions of your budget and reports what moved: every material change tied to an owner and a reason, and the ones nobody explained.
Free, no email
Quick answer
01What it does
Aligns two budget versions line by line, bridges your key metric from one to the other, and ties each material change to an owner and a reason.
02What you give it
Two versions of the budget as files, tabs, or pasted extracts, and the metric you report on, plus any change log or owner names you have.
03What you get back
A headline, a ranked bridge that ties to the total, a department table, the list of changes nobody explained, and open items.
Say this to run it
- “What changed between these two versions?”
- “Diff these budgets”
- “Run the change digest”
- “Why did EBITDA move?”
- “What moved since last week?”
- “Prep me for the exec review”
- “Which changes are unexplained?”
Add it to Claude
- 01
Download the file
budget-change-digest.skill, 19 KB
- 02
Add it in Claude
Customize › Skills › Add, then upload the file.
- 03
Attach both versions and ask
“What changed between these two versions?”
- 01
Copy the prompt
The skill and its reference files, as one prompt.
- 02
Paste it into a new Claude chat
Use this when your Claude admin blocks skill uploads.
- 03
Attach both versions and ask
“What changed between these two versions?”
- 01
Download the file
budget-change-digest.skill, 19 KB
- 02
Unzip it into your skills folder
unzip budget-change-digest.skill -d ~/.claude/skills/ - 03
Ask in Claude Code
“What changed between these two versions?”
What you get back
This is the format every run returns, from the skill's own template.
Output · references/output-template.md
Output Format
Five blocks, this order, every run. Do not restyle between rounds — the value is that round four is directly comparable to round three.
1. The headline
{Metric} moved from ${A} to ${B} — {+/-}${delta} ({+/-}{pts} pts)
between {version A} and {version B}.
Three changes did {n}% of it:
1. {Line} — {+/-}${amount} · {reason, or ⚠ unexplained}
2. {Line} — {+/-}${amount} · {reason, or ⚠ unexplained}
3. {Line} — {+/-}${amount} · {reason, or ⚠ unexplained}Written to be read aloud in a meeting. No preamble.
2. The bridge
Per references/alignment-and-bridge.md. Every material driver, signed, ranked, tying exactly to net movement, with the residual shown rather than absorbed.
Lead with the alignment result:
Aligned {n} of {m} lines · {r} renamed · {a} added · {d} removed3. Department table
| Department | {Ver A} | {Ver B} | Δ | Direction | Attributed | Unexplained |
|---|---|---|---|---|---|---|
| {dept} | ${x} | ${y} | {+/-}${z} | ▲/▼/– | {n} | {n} |
Sorted by absolute delta. Include unchanged departments with – — a department that did not move is information, and its absence reads as an omission.
4. The unexplained list
Per references/attribution-rules.md. Never omitted. If empty, say so.
5. Open items
OPEN ITEMS — carried from {previous digest date}
Resolved (1)
$80,000 Engineering · Contractors — reason attached {date}: {reason}
Still open (2)
$45,000 G&A · Legal & professional — unexplained for 3 rounds ⚠
$15,000 Marketing · Events — unexplained for 2 roundsIf no prior digest was supplied, print First run — no prior items to carry forward. rather than omitting the block, so the shape stays constant.
Formatting rules
- Every figure traces to a line in a supplied version. No derived estimates.
- Round consistently to the source's precision. Never invent precision.
- Signs stated from the metric's point of view, with the convention declared once.
- Percentages of movement, not of budget, unless labelled otherwise.
- Unknown is
[unknown], never zero and never blank.
Inside the skill
Five plain-text files you can read before you install.
references/attribution-rules.md--- name: budget-change-digest description: >- Compares two versions of a budget and reports what actually moved, in the terms you report on. Bridges your key metric from one version to the next, ranks the drivers, attributes each material change to an owner and a stated reason, and flags every change nobody explained. Use whenever a budget has gone through another round and someone needs to know what changed and why. Triggers include "what changed between these two versions", "diff these budgets", "run the change digest", "why did EBITDA move", "what moved since last week", "prep me for the exec review", "which changes are unexplained", or uploading two versions of a plan and asking what happened. metadata: author: "Aleph - getaleph.com" version: "1.0.0" --- # Budget Change Digest ## What this skill does By November a budget has been through four or five rounds, and the question in every review is the same: *what changed, and who changed it?* Answering it by hand means opening two files side by side and reconciling a few hundred rows — which is why the honest answer is usually "let me come back to you." This skill answers it in the terms leadership actually asks in. It aligns two versions line by line, bridges your key metric from one to the other, ranks the changes that did most of the work, and attaches an owner and a reason to each. The part that matters most is the part nobody ships: **the unexplained-delta list.** Every material change it could *not* attribute to a person and a stated reason, listed separately. That list is the trust bar made operational — if a number moved and nobody owns the reason, that is a finding, not a gap in the tool. ## When to use it - A new version has landed and there is a review before you can study it - Preparing for an exec or board conversation about what moved - Week-over-week tracking through the negotiation rounds - Reconstructing a cycle after the fact — what actually happened, and when ## Inputs **Required** - **Two versions of the budget** — two files, two tabs, or two pasted extracts. They do not need identical structure; alignment handles that. **Strongly recommended** - **Your key reported metric** — EBITDA, operating income, contribution margin, cash burn. Without it the digest can only report gross movement, which is the less useful half. Ask for it rather than guessing. **Optional, improves attribution sharply** - A change log, comment threads, or an email trail - Department owner names - The previous run's digest, so open items carry forward If no attribution source exists, say so up front: **every** material change will land on the unexplained list, which is a true result but a misleading headline if the reason is simply that nobody gave you the log. ## Workflow 0. **Confirm you have two versions of the same plan.** If the second file is a department submission rather than a full version, that is `/submission-reviewer`. If they are budget-versus-actuals rather than two budget versions, say so — this skill diffs plans, not performance. 1. **Align the versions** using `references/alignment-and-bridge.md`. Match on identity, not row position. Resolve renames, additions and removals explicitly, and list anything you could not confidently match. 2. **Compute deltas** at line, department and total level. Every level must reconcile to the level above it; if they do not, stop and report the break rather than presenting a total you cannot support. 3. **Bridge the key metric** from version A to version B. Ordered, signed, and summing exactly to the total movement. The bridge is the headline. 4. **Attribute every material change** per `references/attribution-rules.md`. An attribution requires a named owner *and* a stated reason traceable to a source. Anything short of both is unattributed. 5. **Build the unexplained list.** Every material change without a complete attribution, ranked by size. 6. **Carry forward open items** from the previous digest if one was supplied, marking each resolved, still open, or newly stale. 7. **Produce the digest** in exactly the format in `references/output-template.md`. Same shape every run — comparability across rounds is the point of running this as a skill. ## Hard rules - **Never invent a reason.** If the source does not state why a line moved, it goes on the unexplained list. A plausible reason you inferred is the single most damaging thing this skill could produce, because it closes a question that should stay open. - **Never attribute by proximity.** A comment near a number is not a reason for that number. Attribution requires the source to actually connect the two. - **The bridge must tie.** The ranked drivers plus the residual must equal the total movement exactly. Show the residual rather than rounding it away. - **Report movement in both directions.** A digest that only reports increases reads as an accusation and misses the offsets. - **Distinguish a real change from a restructure.** A renamed or re-parented line is not a budget change; report it separately as a structural change. - **Same format every run.** Do not improve the layout between weeks — the value is that round four is comparable to round three. ## Output format Five blocks, in this order: 1. **The headline** — your key metric from X to Y, and the three changes that did most of it 2. **The bridge** — every material driver, signed and ranked, tying to the total 3. **The department table** — dollar impact and direction per department 4. **The unexplained list** — material changes with no owner or no reason 5. **Open items** — carried forward from the previous round ## A note on scope This skill compares two versions on demand. It does not watch for new ones, does not notify anybody, and does not hold the plan of record — it knows only what you hand it, at the moment you hand it over. Keeping every version, every reason and every owner continuously, so that the digest is a live view rather than a thing you run, is what a connected FP&A platform like Aleph is for. Keep this skill focused on answering *what moved and who moved it* for the two versions in front of you.
# Attribution
A change is attributed when you can name **both**:
1. **An owner** — a person, not a department
2. **A reason** — a stated driver, traceable to a source you were given
One without the other is not an attribution. A department with no person is not
an owner. A number with no reason is not explained.
---
## Where a reason may come from
In descending order of trust:
1. **An explicit change log** — a row stating line, delta, owner and reason
2. **A comment attached to the cell or row** in the source file
3. **A message or email that names the line and the reason**
4. **A prior digest's open items**, if the item was subsequently resolved
## What is never a reason
- **Proximity.** A comment in the neighbouring cell, or a note at the top of the
tab, does not explain a specific line.
- **A restatement.** "Increased headcount budget" is what the number already
says. A reason answers *why*, not *what*.
- **Your own inference.** However obvious the explanation seems, if the source
did not say it, it is unexplained. This is the rule that gives the output its
value; break it once and every attribution becomes suspect.
- **A pattern from a previous round.** Last month's reason does not carry
forward to this month's change of the same line.
## Partial attribution
Common and worth reporting precisely — the two halves fail differently:
| Owner | Reason | Report as |
|---|---|---|
| ✓ | ✓ | Attributed |
| ✓ | ✗ | **Unexplained** — "{Owner} changed this; no reason given" |
| ✗ | ✓ | **Unowned** — "Reason stated; no one attached to it" |
| ✗ | ✗ | **Unexplained** — the default |
The owner-without-reason case is the most actionable line in the whole digest,
because you know exactly who to ask.
---
## The unexplained list
The most distinctive output this skill produces. Format it so it can be pasted
straight into a message and acted on.
```
UNEXPLAINED — 2 changes, $60,000 (9% of net movement)
$45,000 G&A · Legal & professional no owner, no reason
$15,000 Marketing · Events & sponsorships no owner, no reason
```
Rules:
- **Ranked by dollar size**, largest first
- **State the share of net movement** the list represents — two small unexplained
lines in a large movement is a healthy cycle; two large ones is not
- **Never soften it.** Do not write "possibly related to" or "likely reflects."
The absence of a reason is the finding.
- **If the list is empty, say so and mean it:** "Every material change is
attributed to an owner and a stated reason." That is a genuinely good result
and worth calling out.
- **If no attribution source was supplied at all**, put that at the top of the
list rather than presenting a hundred unexplained lines as a scandal.
## Open items across rounds
When a prior digest is supplied, carry its unexplained list forward and mark
each:
- **Resolved** — a reason has since been attached. Name it.
- **Still open** — unexplained across consecutive rounds. Note how many.
- **Stale** — the line has moved again, still with no reason. These compound and
should be escalated by name.
An item that is still open after three rounds is not an attribution problem. It
is a process problem, and the digest should say so plainly.
# Alignment and the Bridge
Two jobs, in order. Get alignment wrong and every number after it is wrong.
---
## 1. Aligning two versions
Match on **identity**, never on row position. Rows get inserted, sorted and
regrouped between versions; position is meaningless.
Match in this order, stopping at the first confident hit:
1. **Stable key** — line ID, account code, cost-centre code. Trust this.
2. **Department + exact line name.** Trust this.
3. **Department + normalised name** — case, punctuation, whitespace and common
abbreviations folded (`&`/`and`, `Software`/`SW`, `T&E`/`Travel &
Entertainment`).
4. **Department + close name and comparable value.** A rename candidate. Do not
auto-accept: list it as a proposed match and mark it.
Everything unmatched falls into one of three buckets, and each is reported
separately because they mean different things:
| Bucket | Meaning | How to report |
|---|---|---|
| **Added** | In B, not in A | A new cost. Always material. |
| **Removed** | In A, not in B | A cut, or an oversight. Never assume which. |
| **Renamed** | Same cost, new label | **Not a budget change.** Structural. |
**A rename is not a delta.** If `Cloud hosting` becomes `Cloud & infrastructure`
at the same value, that is a structural change and belongs in its own short
section. Reporting it as a $424K removal plus a $424K addition is the most
common way an automated diff destroys its own credibility.
Report the alignment result before any numbers:
```
Aligned 122 of 124 lines.
2 renamed (listed below), 3 added, 1 removed.
0 unmatched.
```
If more than 10% of lines fail to align, stop. Say the versions are structurally
different and ask whether a restructure happened — a diff across a restructure
is noise presented as signal.
---
## 2. Materiality
Same two-bar test throughout:
- **Relative:** the line moved more than **10%**
- **Absolute:** the line moved more than **0.5%** of the total budget
Anything clearing either bar is material and must be attributed or listed as
unexplained. Anything below both rolls into a single `Other movement` residual
line. Never let the residual exceed 15% of total movement — if it does, lower
the threshold and re-run rather than presenting a bridge that is mostly
residual.
---
## 3. Building the bridge
The bridge is the headline. It walks the key metric from version A to version B
through the ranked drivers.
```
EBITDA, v3 → v4
v3 $10,050,000 20.9%
Engineering salaries & benefits −420,000 two hires pulled forward
Sales commission −192,000 assumption 6.5% → 7.0%
G&A legal & professional −45,000 ⚠ unexplained
Marketing events & sponsorships −15,000 ⚠ unexplained
v4 $9,378,000 19.5%
─────────────
Net movement −672,000 −1.4 pts
```
Rules the bridge must obey:
- **It ties, exactly.** Drivers plus residual equal net movement. If it does not
tie, report the break — never plug it.
- **Signs are from the metric's point of view.** A cost increase is negative to
EBITDA. State the convention once at the top.
- **Ranked by absolute size**, not by department order or sign.
- **Unexplained drivers stay in the bridge**, marked. Moving them out
understates the movement and hides the finding.
- **Report the metric in both dollars and its reported unit** — margin points,
percentage, per-share — because that is the unit the question will be asked in.
If no key metric was supplied, bridge total operating expense instead and say
explicitly that this is a proxy.
# Output Format
Five blocks, this order, every run. Do not restyle between rounds — the value
is that round four is directly comparable to round three.
---
## 1. The headline
```
{Metric} moved from ${A} to ${B} — {+/-}${delta} ({+/-}{pts} pts)
between {version A} and {version B}.
Three changes did {n}% of it:
1. {Line} — {+/-}${amount} · {reason, or ⚠ unexplained}
2. {Line} — {+/-}${amount} · {reason, or ⚠ unexplained}
3. {Line} — {+/-}${amount} · {reason, or ⚠ unexplained}
```
Written to be read aloud in a meeting. No preamble.
---
## 2. The bridge
Per `references/alignment-and-bridge.md`. Every material driver, signed, ranked,
tying exactly to net movement, with the residual shown rather than absorbed.
Lead with the alignment result:
```
Aligned {n} of {m} lines · {r} renamed · {a} added · {d} removed
```
---
## 3. Department table
| Department | {Ver A} | {Ver B} | Δ | Direction | Attributed | Unexplained |
|---|---|---|---|---|---|---|
| {dept} | ${x} | ${y} | {+/-}${z} | ▲/▼/– | {n} | {n} |
Sorted by absolute delta. Include unchanged departments with `–` — a department
that did not move is information, and its absence reads as an omission.
---
## 4. The unexplained list
Per `references/attribution-rules.md`. Never omitted. If empty, say so.
---
## 5. Open items
```
OPEN ITEMS — carried from {previous digest date}
Resolved (1)
$80,000 Engineering · Contractors — reason attached {date}: {reason}
Still open (2)
$45,000 G&A · Legal & professional — unexplained for 3 rounds ⚠
$15,000 Marketing · Events — unexplained for 2 rounds
```
If no prior digest was supplied, print `First run — no prior items to carry
forward.` rather than omitting the block, so the shape stays constant.
---
## Formatting rules
- Every figure traces to a line in a supplied version. No derived estimates.
- Round consistently to the source's precision. Never invent precision.
- Signs stated from the metric's point of view, with the convention declared once.
- Percentages of movement, not of budget, unless labelled otherwise.
- Unknown is `[unknown]`, never zero and never blank.
WHAT THIS FILE IS
=================
budget-change-digest.skill — Compares two versions of a budget and tells you
what actually moved, in the terms you report on.
A .skill file is Anthropic's packaging format for Claude Skills. It is a
standard ZIP archive, nothing more. This build is intentionally uncompressed
so the contents stay human-readable in a text editor.
LOOK INSIDE YOURSELF
====================
Rename the file from .skill to .zip and extract it, or run: unzip budget-change-digest.skill
Every file inside is plain-text markdown. There is no executable code.
WHAT'S INSIDE
=============
SKILL.md
references/alignment-and-bridge.md
references/attribution-rules.md
references/output-template.md
README.txt (this file)
WHAT IT DOES
============
By November a budget has been through four or five rounds, and every review
opens with the same question: what changed, and who changed it? Answering by
hand means reconciling a few hundred rows across two files, which is why the
honest answer is usually "let me come back to you."
This skill aligns two versions line by line, bridges your key metric from one
to the next, ranks the changes that did most of the work, and attaches an owner
and a reason to each.
The distinctive part is the unexplained-delta list: every material change it
could NOT attribute to a person and a stated reason. If a number moved and
nobody owns the reason, that's a finding.
WHAT YOU GIVE IT
================
Required: two versions of the budget (two files or two tabs)
Recommended: your key reported metric — EBITDA, operating income, burn
Optional: a change log or comment threads, owner names,
the previous run's digest so open items carry forward
WHAT YOU GET BACK
=================
The headline: your metric from X to Y, and the three changes that did most of it
A bridge that ties exactly, with the residual shown
A department table with dollar impact and direction
The unexplained list — material changes with no owner or no reason
Open items carried forward from the previous round
HOW TO USE IT
=============
Upload this file as-is to Claude: Settings -> Skills -> Add.
Or add it in Claude Cowork or Claude Code.
Third in the season set, after /owner-packet-builder (September) and
/submission-reviewer (October). Runs October through November.
From Aleph (getaleph.com), the FP&A platform.
The full guide: https://www.getaleph.com/claude-skills-library
Questions: marketing@getaleph.com
Related skills
Skill · Review · Free
Submission Reviewer
Reviews each submission as it lands and drafts your reply to the owner.
Get the skillSkill · Review · Free
Budget Pressure-Tester
A CFO-grade review of your draft budget, returned as a readiness scorecard.
Get the skillSkill · Prepare · Free
Budget Owner Packet Builder
Turns last year's actuals into a pre-filled budget request for each owner.
Get the skill