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.
- Part of
- BFCM Skills
- 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.
| Client | Committed | Spent | Projected | Variance | Status |
|---|---|---|---|---|---|
| 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:
| Client | Current/day | Recommended/day | Change | Month-end at recommended | vs 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
- type.com: Choose Use Skill to add Budget Pacer to your type.com workspace.
- 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. - 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.
Related skills
- 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.
Related 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.