All skills

Budget season · Prepare

Budget Owner Packet Builder

Turns last year's actuals into a pre-filled budget request for every department head: their real starting numbers and no more than three asks.

Download .skill · 24 KB

Free, no email

Quick answer

01What it does

Classifies every line of last year's actuals as committed, discretionary, or one-time, then asks owners only about the discretionary lines.

02What you give it

Twelve months of actuals by department, monthly if you have it. A guardrail per department, a headcount roster, and contract dates improve it.

03What you get back

A summary line, one pre-filled packet per department with no more than three asks, a send-ready message for each owner, and a master tracker.

Say this to run it

  • “Build the owner packets”
  • “Send budget requests to department heads”
  • “Prep the budget kickoff”
  • “Turn these actuals into budget templates”
  • “What should I ask each department for?”
  • “Pre-fill the budget templates”
  • “I need to collect budget inputs”

Add it to Claude

  1. 01

    Download the file

    owner-packet-builder.skill, 24 KB

  2. 02

    Add it in Claude

    Customize › Skills › Add, then upload the file.

  3. 03

    Attach your actuals and ask

    “Build the owner packets.”

What you get back

This is the format every run returns, from the skill's own template.

Output · references/packet-template.md

Output Formats

Produce output in exactly these structures and in this order. The consistency is the point: comparable packets across departments and across cycles.


1. Run summary

One block, before the packets.

Departments processed: {n}
Lines classified: {n} — {n} committed · {n} discretionary · {n} one-time · {n} unclassified
Combined flat-line baseline: ${X}
Combined guardrail: ${Y}  (or "not provided")
Combined gap: ${Z}
Materiality threshold used: top {n} lines / {n}% of discretionary spend

If anything blocked the run — unmapped cost centers, missing monthly detail, no guardrails — list it here as Needs your input before the packets.


2. The packet — one per department

Use this exact structure. Plain business English. No finance jargon.


📋 {Department} — FY{YY} Budget Request

Owner: {Name} Due: {date}

Your starting point: ${baseline}

That's last year's spend, with one-time costs taken out and everything else carried forward flat. It's a starting point, not a target.

{If guardrail provided:} Your guardrail: ${guardrail} — a gap of ${gap} {above / below}.


Already locked — no action needed

These are under contract or otherwise fixed. We've carried them forward. Just check nothing here looks wrong.

LineLast yearNext yearWhy it's locked
{line}${amount}${amount}{reason, ≤10 words}

{Flag any renewal falling inside the plan year with a ⚠ and a one-line note.}


Taken out — one-time last year

We removed these because they looked like one-offs. If any of them are happening again, say so.

LineLast yearWhy we removed it
{line}${amount}{reason, ≤12 words}

What we need from you

{Exactly three asks — or one, if the department has no discretionary spend.}

1. Are these changing?

LineLast yearCarried forwardContinuing / Up / Down?Why
{line}${amount}${amount}

2. Closing the gap

Your baseline is ${baseline} and your guardrail is ${guardrail}, a gap of ${gap}. {One sentence framing the direction.} Where would you take it from — or what would you need in order to get there?

{Omit this ask if no guardrail was provided, and add: "We don't have your guardrail yet — we'll follow up with it separately."}

3. Anything else?

New programs, new hires, new vendors, anything you know about that isn't in last year's numbers. Also worth flagging: {list any UNCLASSIFIED or immaterial lines worth a mention, or "nothing specific — just anything we've missed"}.


Everything below is the full detail if you want it — every line, tagged.

LineLast yearNext yearTagReason
{line}${amount}${amount}COMMITTED / DISCRETIONARY / ONE-TIME / UNCLASSIFIED{reason}

3. Master tracker — finance's copy

One table, all owners, after the packets.

DepartmentOwnerBaselineGuardrailGapAsksLines flaggedDueSent
{dept}{name}${X}${Y}${Z}{1–3}{n one-time excluded, n renewals, n unclassified}{date}☐

Below the table, note:

  • Materiality threshold used, so the run is reproducible
  • Unmapped lines, if any cost center couldn't be assigned to an owner
  • Missing guardrails, listed by department

Formatting rules

  • Every dollar figure traces to a line in the provided actuals. No derived estimates.
  • Round to whole dollars, or to $K where the source is at that precision. Never invent precision the source doesn't have.
  • If a number is unknown, write [unknown] — never zero, never a placeholder that reads as real.
  • Tables get headers even when they have one row.
  • Keep every "why" and "reason" cell under a dozen words. If it needs more, it belongs in an ask.

Inside the skill

Five plain-text files you can read before you install.

references/classification-rubric.md
# The Three-Way Classification Rubric

Every line in the actuals gets exactly one label: **COMMITTED**, **DISCRETIONARY**,
or **ONE-TIME**. The label determines how the line is treated in the packet:

| Label | Baseline treatment | Owner treatment |
|---|---|---|
| **COMMITTED** | Carried forward flat | **Stated**, not asked |
| **DISCRETIONARY** | Carried forward flat as a starting point | **Asked** — this is where the conversation belongs |
| **ONE-TIME** | **Excluded** | **Shown as excluded**, with the reason |

If a line genuinely can't be classified from the data available, label it
`UNCLASSIFIED`, carry it forward flat, and add it to the "anything else" ask. Never
guess a classification to avoid an unclassified line.

---

## COMMITTED — the owner cannot change this by deciding to

The test: **if the owner said "cut it," would it actually go away next month?** If no,
it's committed.

Typical contents:
- Software and SaaS under contract extending into the plan year
- Facilities and leases
- Insurance, statutory and regulatory costs
- Compensation for people **already employed** (not planned hires)
- Volume-driven costs tied to an already-agreed driver (payment processing, hosting
  that scales with usage)
- Committed vendor minimums

**Detection heuristics**
- Present in **all twelve months** with variance under ~10% month to month
- Amount is a round or repeating figure (monthly subscription pattern)
- Vendor or account name matches known committed categories (rent, lease, insurance,
  a named SaaS vendor)
- Payroll accounts where headcount is flat across the period

**How to treat it in the packet:** state the number and the reason in one line. If a
renewal date falls inside the plan year, say so — that is the one legitimate reason
to flag a committed line for discussion.

> Cloud hosting — $424K. Committed. Contract runs through the plan year.

---

## DISCRETIONARY — the owner decides whether, and how much

The test: **could a reasonable owner spend zero here next year without breaching a
contract?** If yes, it's discretionary.

Typical contents:
- Programs and campaigns (events, advertising, content, sponsorships)
- **Planned** headcount not yet hired
- Travel, entertainment, team offsites
- Training and development
- Contractors and consultants on non-committed engagements
- New tools not yet under contract

**Detection heuristics**
- **Lumpy** month to month; zero in one or more months
- Coefficient of variation across months is high (roughly >0.4)
- Account or description names in program vocabulary: campaign, event, conference,
  sponsorship, travel, offsite, training, consulting, agency
- Spend clusters around specific months (a conference in May, a campaign in Q4)

**How to treat it in the packet:** this is the only category that becomes a question —
subject to the consolidation rules below.

---

## ONE-TIME — happened last year, shouldn't carry forward by default

The test: **was there a specific, finished reason this cost existed?** If yes, it's
one-time.

Typical contents:
- Implementations, migrations, system rollouts
- One-off projects with a stated end
- Severance, legal settlements, restructuring costs
- Overlapping vendor costs during a transition (paying for both tools for four months)
- A one-time event the company hosted or sponsored once
- Equipment or capex-like purchases that don't repeat annually

**Detection heuristics**
- Appears in **three or fewer consecutive months** and nowhere else in the period
- Amount is an outlier against that account's own median month (roughly >3×)
- Description contains: implementation, migration, onboarding, setup, one-time,
  transition, severance, settlement, legal fees, rollout, launch
- A vendor appears for a defined window and then stops entirely

**How to treat it in the packet:** exclude it from the baseline, show it as excluded,
and state the reason. If there is any chance it recurs, fold it into the "anything
else" ask rather than assuming.

> Cloud migration — $80K, excluded. One-time project completed in Q2. Tell us if
> something similar is planned for next year.

---

## Consolidation rules — getting to three asks

Most departments have more discretionary lines than anyone will answer questions
about. Reduce them like this.

**Step 1 — Rank discretionary lines by dollar value.**

**Step 2 — Set the material set.** Take lines from the top until you've covered 80%
of total discretionary spend for that department, capped at 8 lines. Anything below
that is immaterial for questioning purposes.

**Step 3 — Build exactly three asks:**

1. **The changes.** For the material lines only: is each one continuing as-is, going
   up, or going down — and why. Present them as a short list, not a spreadsheet.
2. **The gap.** "Your flat-line baseline is $X. Your guardrail is $Y. That's a gap of
   $Z — how would you close it?" Skip this ask entirely if no guardrail was provided,
   and note in the packet that the guardrail is outstanding.
3. **Anything else.** New programs, new hires, new vendors, anything they know about
   that isn't in last year's numbers. This is also where immaterial lines and any
   `UNCLASSIFIED` lines get swept up.

**If a department has no discretionary spend at all** (rare, but happens for some
G&A cost centers), the packet has one ask: confirm the committed lines are still
right, and flag anything new.

**Never add a fourth ask.** If something feels like it needs its own question, it
belongs inside ask 1 or ask 3.

---

## Materiality threshold

Default: **80% of discretionary spend, capped at 8 lines.**

Offer to adjust when:
- A department has very few, very large lines → a lower cap reads better
- A department has many small lines and the 80% cut leaves 8 lines that are all small
  → raise the dollar floor instead and sweep more into ask 3
- The user asks for a tighter or looser ask

State the threshold you used in the master tracker so the run is reproducible.

Related skills