Skill

Budget Pacer

Project month-end spend from a trailing run rate across campaigns and clients, flag over- and under-delivery beyond a tolerance, and recommend per-campaign daily budgets that reconcile exactly to each client's committed total.

At a glance

Budget Pacer is an AI skill that you can use in Claude Code, Codex, or type.com.

Updated

See an example

Example output from a sample run. Company names and figures are sample data.

Budget pacing: 4 clients, September 2026 as of 2026-09-18

Projected $100,027 against $94,000 committed (+6.4%). Harbor & Vine and Pinecrest Home Goods are pacing OVER, Verity Legal Group is UNDER, and only Solstice Athletics is ON PACE. Day 18 of 30, with $59,806 spent and 12 days remaining.

ClientCommittedSpentProjectedVarianceStatus
Harbor & Vine$9,000$9,491$15,967+$6,967 (+77.4%)OVER
Pinecrest Home Goods$30,000$20,151$34,464+$4,464 (+14.9%)OVER
Solstice Athletics$43,000$25,691$42,490-$510 (-1.2%)ON PACE
Verity Legal Group$12,000$4,473$7,107-$4,893 (-40.8%)UNDER
Total$94,000$59,806$100,027+$6,027 (+6.4%)

Recommended daily budgets, reconciled to each client's commitment:

ClientCurrent/dayRecommended/dayChangeMonth-end at recommendedvs committed
Harbor & Vine$535.00$150.00-$385$11,291.20+$2,291.20
Pinecrest Home Goods$1,150.00$820.78-$329$29,999.98-$0.02
Solstice Athletics$1,510.00$1,442.40-$68$42,999.98-$0.02
Verity Legal Group$300.00$550.00+$250$11,073.14-$926.86

Campaign-level splits are in the full report, such as PC_Search_NonBrand moving from $500.00 to $352.75/day.

Next actions

  • Harbor & Vine: the commitment is exhausted, with $9,491 spent against $9,000 and 12 days still to run. Campaign minimums total $150.00/day, so pausing is the only lever that stops a further $1,800 of overspend.
  • Verity Legal Group: cannot reconcile. Hitting $12,000 needs $627.24/day, but every campaign is already at its maximum ($550.00/day), a shortfall of $77.24/day ($927 over the remaining days). Raise the caps, add a campaign, or agree a reduced commitment now rather than at month end.
  • Pinecrest Home Goods: cut the daily total from $1,150.00 to $820.78 to land on the $30,000 commitment.
  • Solstice Athletics: hold budgets. It's on pace at -1.2%, inside the 5.0% tolerance.

Inputs: campaigns, daily spend and commitments files. Run rate is the trailing 7-day average (2026-09-12 to 2026-09-18). Wexford Interiors ($5,000 committed, no campaigns) is excluded from totals.

Produced by running bash examples/run.sh on the sample data bundled with this skill.

How to use Budget Pacer

  1. type.com: Choose Use Skill to add Budget Pacer to your type.com workspace.
  2. Claude Code: Download the skill and extract it into ~/.claude/skills/budget-pacer/ (or .claude/skills/budget-pacer/ in a project). Then ask Claude to use Budget Pacer.
  3. Codex: Download the skill and extract it into ~/.agents/skills/budget-pacer/ (or .agents/skills/budget-pacer/ in a repository). Then ask Codex to use Budget Pacer.

AI agents can read this page as Markdown or fetch the raw SKILL.md.

Frequently asked questions

What is Budget Pacer?

Budget Pacer is an AI skill that you can use in Claude Code, Codex, or type.com.

What does Budget Pacer do?

Project month-end spend from a trailing run rate across campaigns and clients, flag over- and under-delivery beyond a tolerance, and recommend per-campaign daily budgets that reconcile exactly to each client's committed total.

Can I use Budget Pacer in Claude Code or Codex?

Yes. Budget Pacer is a standard Agent Skills folder with a SKILL.md file. Download it and extract it into ~/.claude/skills/ for Claude Code or ~/.agents/skills/ for Codex.

Who created Budget Pacer?

The type.com team created Budget Pacer. The type.com team reviews every skill before it is published in the Skills Library.

  • BFCM Cohort QualityFind out if last Black Friday's new customers were worth it: contribution, repeats and payback vs October and January buyers, by discount, source and product.
  • Holiday Support MacrosPrepare your support team for BFCM: forecast holiday tickets and staffing, find policy gaps and stale macros, and generate holiday macros built only from your written policies.
  • Holiday Shipping Cutoff CheckerFind the last day customers can order on each shipping service and still get it by the holiday, check every delivery promise against it, and plan the switch to expedited and e-gift cards.
  • BFCM Live PulseTurn hourly sales and ad spend into a BFCM status update with sales pacing, budget guardrails, checkout alerts, code-use anomalies and stock risk.
  • BFCM Offer & Discount Config QACheck your Shopify BFCM discounts against the offer plan before launch: stacking, sale windows, who gets each discount, code limits and free shipping, with test carts and a dated fix list.
  • BFCM Holiday Budget PlannerPlan your Black Friday and Cyber Monday ad budget from MER and contribution margin, not platform ROAS, with a daily, per-channel plan and guardrails.

AI for marketing teams: a practical guide

Browse the technical files
---
name: budget-pacer
description: Project month-end spend from a trailing run rate across campaigns and clients, flag over- and under-delivery beyond a tolerance, and recommend per-campaign daily budgets that reconcile exactly to each client's committed total.
---

# Budget pacer

A mid-flight pacing check. It sums spend to date, computes a trailing run rate,
projects where the month lands, and — for every client outside tolerance —
recommends a new daily budget per campaign that adds up to exactly what is left
of the commitment. Where the math cannot work inside the campaigns' own floors
and caps, it says so instead of producing a number nobody can implement.

## Before you run

This skill ships scripts and sample data alongside this SKILL.md. Before running any command:

1. **Get the files.** Make sure the skill's other files (`scripts/`, `examples/` and anything else listed with this skill) are in your working folder at the same relative paths. Some environments load only SKILL.md; if yours did, fetch each file from this skill's published files and write it to the matching path. In Type, read them with the skill-file tools. Anywhere else, the Type Skills Library API lists every file with its path, content and `sha256`: GET `https://api.type.com/api/public/library/skills` and take the entry with slug `budget-pacer`.
2. **Check the copies are exact.** Compare each file's size in bytes, not characters (and its hash, where your tools report one), with the published version before running. A copy written out from the published file is fine once its byte size and hash match; never run a script you summarised or reconstructed from memory.
3. **Run from the skill's folder**, calling interpreters explicitly: `python3 scripts/…` and `bash examples/run.sh`.
4. **Try the sample first.** If the skill ships `examples/run.sh` and `examples/expected_output.txt`, run `bash examples/run.sh`; its output should match the expected file exactly. If it doesn't, stop and report the first differing line rather than running on real data.

## When to use this

- The mid-month (or weekly) pacing review across a book of clients.
- Before promising a client that their committed budget will be delivered.
- When one client's spend spikes and the reallocation needs to be defensible.
- End of month, as a final reconciliation (run it with `--as-of` on the last
  day; it reports the final variance and skips recommendations).

For a month-end client-facing recap, use `client-report-builder`. For account
hygiene, use `ad-account-audit`.

## Gathering the inputs

Three CSVs, described column by column in `DATA_CONTRACT.md`. The script reads
local files only and never touches an ad platform directly.

1. **`campaigns.csv`** — one row per client/campaign with status, the current
   daily budget, and the minimum and maximum daily budget the agency is willing
   to run. Pull status and current budget from the connected ad platforms; the
   floor and ceiling are agency judgment. Ask the user for them — a missing
   floor produces recommendations that starve a campaign out of learning, and a
   missing ceiling produces recommendations the platform will never spend.
2. **`daily_spend.csv`** — daily cost per campaign for the month to date. Export
   with a day dimension from each connected platform. **Stop the export at the
   pacing date**: a row dated after `--as-of` is a hard error, because it means
   the export window and the pacing date disagree.
3. **`commitments.csv`** — the committed monthly media spend per client, from
   the media plan or insertion order. Never infer it from budgets.

Every client in `campaigns.csv` must have a commitment row for the month.

## Running it

```bash
python3 scripts/pace_budgets.py \
  --campaigns data/campaigns.csv \
  --daily-spend data/daily_spend.csv \
  --commitments data/commitments.csv \
  --month 2026-09 \
  --as-of 2026-09-18
```

- `--as-of` is required and must fall inside `--month`. It defines days elapsed,
  days remaining and the end of the run-rate window.
- `--run-rate-days` (default 7) is the trailing window. The window never reaches
  before the first of the month; early in the month it shortens automatically
  and the report says so.
- `--tolerance` (default 5) is the percent variance against the commitment that
  counts as on pace.
- `--json` for machine output.

## Reading and presenting the output

- **Client pacing** is the triage table. `% delivered` versus `expected to date`
  shows where the client stands now; `projected` versus `committed` shows where
  the current run rate lands.
- **Recommended daily budgets** allocates the remaining budget across active
  campaigns in proportion to their current daily budgets, clamped to each
  campaign's floor and ceiling, with the clamped remainder redistributed across
  the campaigns still free to move. The `Bound` column marks campaigns pinned at
  a limit.
- **Reconciliation** under each client is the proof line: spend to date plus the
  recommended daily total times the days remaining, against the commitment. A
  residual of a few cents is rounding; anything larger is flagged and explained.
- **Actions** is ordered by how far each client is from its commitment. Two
  failure modes get their own language: *ceiling* (the caps cannot absorb the
  remaining budget — raise caps, add campaigns, or renegotiate the commitment
  now) and *floor* (the minimums overshoot what is left — pause something).
- Apply the changes in the platforms, then re-run the next pacing cycle. The
  recommendation assumes the new daily budget is applied on the first of the
  remaining days; applying it late leaves a shortfall the next run will pick up.

## Limits

- Pacing only. It has no view of performance, so it will happily recommend
  scaling a campaign that is losing money. Pair it with `ad-account-audit` or
  `client-report-builder` before acting on a large increase.
- The projection is a straight-line trailing average. It does not model
  weekday/weekend shape, seasonality, auction competition, learning phases,
  promotional spikes, or platform pacing behavior. A short `--run-rate-days`
  tracks recent changes faster but is noisier.
- It assumes a campaign can actually spend the budget it is given. Platforms
  routinely under-deliver against a raised cap; the skill flags the ceiling
  case but cannot predict delivery.
- Daily budgets are recommended in whole cents; platform-specific rounding and
  over-delivery allowances (some platforms spend up to twice a daily cap on any
  one day) are not modeled.
- Paused campaigns never receive budget. Their spend still counts toward the
  commitment, and the report notes it.
- Single currency, one month per run, and no fee or management-cost modeling —
  `committed_spend` is media only.