DEV Community

Brittany Bonds
Brittany Bonds

Posted on

How I turn a messy budget vs spend dump into a clean variance sheet

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:

  1. Line fog — “marketing,” “ops,” and “misc” mixed with real budget codes, so actuals land in the wrong bucket or nowhere
  2. Period drift — budget is annual or quarterly while spend is weekly, or the dump mixes fiscal and calendar months without saying which
  3. 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

  1. The dump (budget PDF/sheet, bank/card CSV, invoice pack, expense export, email thread, or mix)
  2. What period the variance is supposed to cover (month, quarter, project phase — or “use what’s in the dump only”)
  3. As-of date for “in period vs out of period vs unknown” (today, month-end, custom)
  4. Any category map they already use (optional but helpful — chart of accounts, project codes, or “just use the dump labels”)
  5. 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

  1. Inventory every budget and spend artifact — PDF section, CSV export, invoice batch; record source and as-of.
  2. Normalize budget line IDs — “Marketing,” “Ads,” “Paid social” → one canonical label per row; keep aliases in notes.
  3. Lock budget amounts from the dump — never invent a budget number to make the sheet look complete; if two docs disagree, flag both.
  4. Roll actuals only when mappable — map merchant/invoice lines only if the dump or owner map supports it; else leave “spend present — line unassigned.”
  5. Tag variance honestly — under / over / on target / unknown (vs as-of and period); no silent “assume on track.”
  6. 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)