How I turn a messy billable vs non-billable dump into a clean utilization sheet
A timesheet export, a pile of calendar blocks labeled “client work,” and a Slack thread that says “we were at 60% last month… I think” are not a utilization system. They are how billable vs non-billable stays fuzzy until someone asks “are we busy or just busy-looking?” and nobody has one number.
Here is the workflow I use when someone dumps messy hours on me and wants one clean utilization sheet: hours by person (or role), billable vs non-billable, utilization %, and open questions flagged — without me pretending to be their CPA or telling them how to price.
Why utilization sheets go wrong
Most dumps I see fail in the same three places:
- Label fog — “admin,” “internal,” and “business development” all get called non-billable with no shared rule
- Split clocks — hours in the time tool, more hours in a calendar, still more in a notebook
- Denominator drift — utilization against available hours vs contracted hours vs a made-up 40
If those stay fuzzy, the % lies. So I fix the labels before I polish the formatting.
Sort into three piles first
Before columns, I sort every hour-looking row into:
- Clearly billable — tied to a client / job / invoiceable code in the dump
- Clearly non-billable — internal, PTO, training, BD, etc., with a stated category
- Unknown or conflicting — missing client, dual tags, or “we cannot tell from this dump”
Unknowns do not get silently forced into billable to make utilization look better. They get a status and a question for the owner.
What I ask for before I start
- The dump (time export, calendar CSV, handwritten hours, or mix)
- As-of window that matters (week, month, custom range)
- Who the rows are about (one person, a small team, contractors)
- What “available hours” means for them (stated capacity, contracted hours, or “use what’s in the dump only”)
- What “done” means (utilization sheet, optional by-client rollup, optional question list for unlabeled time)
I am a freelancer admin / spreadsheet helper. I do not give legal or financial advice, and I am not a CPA — this is hours hygiene so their billable vs non-billable split is easier to see and hand off, not pricing, tax, or capacity consulting.
Build the sheet row by row
- Inventory every hours artifact — export row, calendar block, note; record source and date range.
- Normalize person / role names — one canonical name per row; keep aliases in notes if they conflict.
- Tag billable vs non-billable honestly — only from what the dump supports; else “unknown — ask.”
- Attach the client / job when present — never invent a client to tidy the rollup.
- Compute utilization only when the denominator is clear — if available hours are missing, leave % blank and flag it.
- Hand back — the utilization sheet (+ short list of questions); no “you should raise rates” advice.
Columns that usually work
| Column | What goes here |
|---|---|
| Person / role | Canonical name (aliases in Notes) |
| Period | Week / month / custom range |
| Billable hours | Sum clearly tied to client / job |
| Non-billable hours | Sum with a stated internal category |
| Unknown hours | Hours that could not be classified |
| Available / capacity hours | Only if stated in the dump; else “unstated” |
| Utilization % | Billable ÷ available when both exist; else blank |
| Top clients (optional) | Rollup from clearly tagged billable rows |
| Source | Which export / calendar / note the line came from |
| Notes | Dual tags, missing capacity, “needs owner confirm” |
Common traps I flag instead of guessing
- Calling everything without a client code “non-billable” without a written rule
- Mixing PTO days into “available hours” so utilization looks artificially high
- Using a default 40-hour week when the dump never said that
- Double-counting calendar blocks that already appear in the time export
- Publishing a neat % while a big “unknown hours” 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 billable vs non-billable hours dump into a clean utilization sheet in about 24 hours.
Product: https://brittanybonds.gumroad.com/l/utilizationsheet
Shop: https://brittanybonds.gumroad.com/
Catalog mirror: https://brittany-bonds.github.io/
Code ADMIN12 for $2 off.
No fake CPA claims — spreadsheet cleanup so your billable split and utilization math are easier to track and hand off.
Top comments (0)