DEV Community

Brittany Bonds
Brittany Bonds

Posted on

The mid-job cost checklist I use so a job cost sheet stays honest

A folder of mid-job receipts, a time tab that still says “~12 hrs?,” a change-order Slack that never got a dollar line, and a materials run that might already be in the bank CSV are not an honest job cost sheet. Mid-job is where labor and materials blur, change orders bleed into “base job,” and missing receipts quietly invent margin you do not have.

I am a freelancer admin helper. I turn messy job / project cost dumps into a clean job cost sheet. I am not a CPA, bookkeeper-of-record, estimator, or lawyer — and this is not financial, tax, legal, or construction-accounting advice. It is the checklist I run mid-job (and again before invoice or closeout) so the sheet stays honest while the work is still moving.

(If you want the full messy job/project cost dump → clean job cost sheet workflow, see my earlier post. This one is the second-pass checklist so materials vs labor, change-order bleed, missing receipts, and double-counted hours do not quietly rewrite the story.)

What “honest” looks like mid-job

  • Labor and materials are separable on skim — you can see which one is eating the margin
  • Every cost row has a clear status: quoted / committed / paid / reimbursable / write-off — not “misc” forever
  • Change-order dollars sit in their own bucket (or flagged rows) — not silently merged into base job
  • Hours appear once: either as hours + rate, or as a single $ labor line — not both without a bridge
  • Missing receipts are flagged, not invented as round “about $200” rows presented as exact
  • Job / project code is consistent so two mid-job dumps do not create two ghost jobs
  • You can answer “what has this job actually cost so far, and what is still open?” without Slack archaeology

If the only “actuals” you have are vibes plus a materials pile labeled “job stuff,” mid-job honesty has already slipped.

The mid-job cost checklist (run it before / while you clean)

Use this against the dump (receipt photos, bank/CSV snippets, time logs, vendor PDFs, change-order Slack, “materials ~$400?” notes) before you paste everything into a pretty template and call the margin safe.

1. Inventory the dump (same day you open the pile)

  • [ ] Every cost scrap is listed once: date, source, amount or hours, job guess, notes
  • [ ] Labor scraps and materials scraps are labeled separately on intake — do not dump into one unlabeled pile
  • [ ] Change-order mentions (Slack, email, verbal “add this”) are listed even if no receipt exists yet
  • [ ] Currency / tax-included vs exclusive is noted when obvious — or flagged unclear
  • [ ] Confidential bits (personal cards, client-private SKUs) are marked strip-or-park
  • [ ] Anything already closed, written off, or clearly overhead is labeled stay-off-job — do not resurrect as Active job cost

2. Split materials vs labor (before you trust the totals)

  • [ ] Labor = hours × agreed rate, owner time, crew, or subcontract labor called out as labor
  • [ ] Materials = supplies, parts, vendor goods — not “we spent about half a day and some stuff”
  • [ ] Subcontract that is mostly labor stays in labor (or a subcontract column) — not mixed into materials
  • [ ] Travel / fees / other get their own category — not stuffed into materials to make labor look fine
  • [ ] If a scrap is both (e.g. “day rate + materials included”), split or flag bundle — do not invent a clean split

3. Catch change-order bleed

  • [ ] Base-job costs and change-order costs are separable (column, tag, or tab)
  • [ ] “Just add it” Slack work has a dollar or hours line — or is flagged change order, $ missing
  • [ ] Quoted change-order amounts and actuals are not mixed in one Amount cell with no label
  • [ ] Change orders that were never approved stay in a parking lot — not silently in Paid Actuals
  • [ ] Skim test: you can answer “how much of Job A’s spend is base vs change order?” without re-reading the dump

4. Deduplicate hours and receipts (no double-count)

  • [ ] Same Home Depot run in a photo and a bank line = one row
  • [ ] Same crew day in a time tab and a vendor invoice = one labor row (hours + $ both visible if useful)
  • [ ] Raw hours are converted with the agreed rate once — do not keep a parallel “labor $” that was typed from memory
  • [ ] If last amount or hours are unknown, flag amount unclear / hours unclear — do not invent yesterday’s number
  • [ ] Internal “thinking about the job” time stays off the job sheet unless they explicitly want it tracked as internal cost

5. Honesty tripwires (before you treat mid-job actuals as real)

  • [ ] You did not dump coffee / overhead onto the job because “I was thinking about it”
  • [ ] “Misc materials” is not allowed to become a giant unexplained % of the sheet
  • [ ] Quoted budget numbers are not sitting in the Actuals Amount column unlabeled
  • [ ] Missing receipts are flagged — round guesses stay in Notes / Estimated, never presented as paid exact
  • [ ] Double-counted hours / receipts were merged, not both left Active
  • [ ] Change-order bleed is visible — not polished into one clean “job total” that hides scope growth
  • [ ] Paid rows are not deleted so last month’s margin still has a paper trail
  • [ ] Skim test: a stranger could answer “what did this job cost so far?” without inventing costs the dump never supported

6. Hand-back / same-day mid-job audit

  • [ ] Costs + Labor + Summary (by job / by category) are skim-friendly; Flags are separate or clearly marked
  • [ ] Flags list: materials-vs-labor unclear, change-order $ missing, missing receipt, double-count merged, hours unclear, overhead parked
  • [ ] Short list of open items (need receipt, need job assignment, need change-order $) is written out
  • [ ] One suggested next step: lock Job A actuals so far, price the next change order from the summary, or dump next week’s receipts
  • [ ] Hand-back needs no tax filing, QuickBooks rebuild, or full estimating engagement

Pass order I use

  1. Inventory the mid-job dump first — do not invent structure in a blank template.
  2. Split materials vs labor (and park true overhead) so margin stories stay honest.
  3. Catch change-order bleed before base-job actuals absorb every Slack add.
  4. Deduplicate receipts and hours, then normalize one row per cost with status + billable flag.
  5. Run honesty tripwires before forwarding “the job cost sheet.”
  6. Flag gaps, then hand back sheet + flags + one next step.

That order keeps job costing as a decision tool mid-job, not a folklore spreadsheet you only fix at closeout.

Sections that keep the sheet honest mid-job

Tab / section What goes here
Costs One row per cost: job, date, category, vendor, description, amount, status, billable, notes
Labor Hours + rate (or $ labor) with source — not a second mystery materials pile
Change orders Approved / pending / $ missing — separable from base job
Summary By job and by category (labor vs materials vs subcontract vs other)
Flags Missing receipt, double-count, hours unclear, change-order bleed, overhead parked, confidential

Common traps that rewrite margin mid-job

  • Mixing labor hours and materials dollars in one unlabeled “cost” pile
  • Letting unpriced change-order Slack work land in base-job actuals
  • Counting the same receipt in a photo and a bank line
  • Logging hours in one place and labor $ in another with no bridge (and summing both)
  • Presenting “materials ~$400?” as an exact paid row
  • Deleting paid rows so you cannot explain where last month’s margin went
  • Shipping a pretty dashboard with no job codes and calling it job costing

I flag those instead of polishing folklore into false certainty.

Soft handoff

When I finish a mid-job cost cleanup, I try to leave:

  • The job cost sheet (by-job and by-category views, labor vs materials separable)
  • A short list of costs that still need a receipt, a job assignment, or a change-order dollar
  • One suggested next step: lock Job A actuals so far, price the next change order, or dump next week’s receipts

That is job-cost hygiene for freelancers and small businesses — not tax advice, not estimating consulting, and not financial or legal advice.


I do this as a 24-hour DFY service for freelancers and small businesses ($12 for a messy job/project cost dump → clean job cost sheet). Product: https://brittanybonds.gumroad.com/l/jobcostsheet — code ADMIN12 for $2 off. Full catalog: https://brittanybonds.gumroad.com/ and https://brittany-bonds.github.io/

Not a CPA. Not financial, tax, or legal advice — spreadsheet hygiene so a job cost sheet stays honest mid-job.

Top comments (0)