A project budget in a slide deck, a bank CSV with merchant names that mean nothing, a Slack thread that says “we’re fine on spend,” and a sticky note labeled “marketing?? $3k?” are not a variance system. They are how “are we over or under, and on which line?” stays fuzzy until month-end and nobody can point to one answer.
Here is the workflow I use when someone dumps a messy budget vs spend pack on me and wants one clean variance sheet: every budget line named, actuals rolled up, variance clear, and easy to skim — without me pretending to be their CPA, CFO, or telling them how to cut costs or reforecast the year.
Why variance sheets go wrong
Most dumps I see fail in the same three places:
- Line fog — “marketing,” “ops,” and “misc” mixed with real budget codes, so actuals land in the wrong bucket or nowhere
- Period drift — budget is annual or quarterly while spend is weekly, or the dump mixes fiscal and calendar months without saying which
- Actual silence — bank exports, card CSVs, and invoices that never map to a budget line, so the sheet looks complete when half the spend is unassigned
If those stay fuzzy, the “we’re under budget” line lies. So I lock the budget lines and the as-of period from the dump before I polish the formatting.
Sort into three piles first
Before columns, I sort every budget- or spend-looking artifact into:
- Clearly stated budget lines — category + amount + period (or a rule that maps to a measurable line in the dump)
- Clearly out-of-period or superseded — closed FY, replaced forecast, or spend dated outside the as-of window with enough evidence in the dump
- Unknown or conflicting — missing budget amount, “TBD,” dual category names, or spend that contradicts the budget labels
Unknowns do not get silently forced into a neat green “on track” grid. They get a status and a question for the owner.
What I ask for before I start
- The dump (budget PDF/sheet, bank/card CSV, invoice pack, expense export, email thread, or mix)
- What period the variance is supposed to cover (month, quarter, project phase — or “use what’s in the dump only”)
- As-of date for “in period vs out of period vs unknown” (today, month-end, custom)
- Any category map they already use (optional but helpful — chart of accounts, project codes, or “just use the dump labels”)
- What “done” means (variance sheet, optional unassigned-spend list, optional question list for TBD lines)
I am a freelancer admin / spreadsheet helper. I do not give financial or tax advice, and I am not a CPA — this is spend hygiene so their budget vs actuals are easier to see and hand off, not forecasting, cost-cutting coaching, bookkeeping certification, or tax timing.
Build the sheet row by row
- Inventory every budget and spend artifact — PDF section, CSV export, invoice batch; record source and as-of.
- Normalize budget line IDs — “Marketing,” “Ads,” “Paid social” → one canonical label per row; keep aliases in notes.
- Lock budget amounts from the dump — never invent a budget number to make the sheet look complete; if two docs disagree, flag both.
- Roll actuals only when mappable — map merchant/invoice lines only if the dump or owner map supports it; else leave “spend present — line unassigned.”
- Tag variance honestly — under / over / on target / unknown (vs as-of and period); no silent “assume on track.”
- Hand back — the variance sheet (+ short list of questions); no “you should cut this vendor” advice.
Columns that usually work
| Column | What goes here |
|---|---|
| Budget line ID | Canonical label (aliases in Notes) |
| Period | Month / quarter / project phase as stated |
| Budget amount | From the dump; else “unstated” |
| Actual spend | Rolled from mapped dump lines; else “unassigned / partial” |
| Variance ($) | Actual − budget when both known; else “incomplete” |
| Variance (%) | When both known; else “incomplete” |
| Status | Under / over / on target / unknown (vs as-of) |
| Source | Which PDF / CSV / invoice pack the line came from |
| Notes | Conflicting budgets, unmapped merchants, “needs owner confirm,” dual periods |
Common traps I flag instead of guessing
- Treating “we usually spend about $X” as a locked budget line when no approved number exists in the dump
- Blending personal and business card spend into one fake “ops” total
- Stretching a quarterly budget across the wrong months because someone “thinks fiscal starts in April”
- Marking everything green “on track” when half the CSV is still unassigned
- Publishing a neat variance summary while a big TBD / unmapped-spend bucket sits unmentioned
Those become Notes or a short question list, not silent edits.
Soft CTA
If you want this done for you as a one-off: I turn a messy budget vs spend dump into a clean variance sheet in about 24 hours.
Product: https://brittanybonds.gumroad.com/l/budgetsheet
Shop: https://brittanybonds.gumroad.com/
Catalog mirror: https://brittany-bonds.github.io/
Code ADMIN12 for $2 off.
No fake CPA or financial-advice claims — spreadsheet cleanup so your budget lines, actuals, and variance status are easier to track and hand off.
Top comments (0)