Job costing

Know which jobs actually made money.

Estimated vs actual revenue, material, labor, and gross margin — for every millwork project. Labor rolls in from time tracking automatically. Material from a line-item expense ledger. Margin in a single number, color-coded the way a shop owner reads it.

Free for the first 35 shops. No card. Set up in 10 minutes.

The problem every shop owner has

You finished the job. Did you actually make money?

Most millwork shops bid in their head, track hours in a spreadsheet, and never close the loop on whether the bid was right. The kitchen you thought was a 22% margin job might have been 14% by the time the install crew finished punch list. The next bid uses the same numbers anyway, because there's nowhere to see the truth.

Fabrica fixes that. Every project has a Job costing card that shows you what you bid, what actually happened, and the variance — for both labor and material. So the next bid is informed by the last ten jobs, not by a guess.

Job costing
Estimated vs actual — labor at $75/hr + material expenses
Revenue
Est $187,000
$184,200
Material
Est $54,000
$58,420
Labor
Est $54,000
$62,100
828 h actual / 720 h est
Gross margin
Est $79,000
$63,680
34.6% actual
+108h vs estimate +$4,420 material vs estimate

A real Job costing card from a Fabrica project page

How job costing works in Fabrica

Four numbers. Real time. Per project.

1. Set the bid

When you create the project, enter estimated labor hours and estimated material cost. Fabrica multiplies hours by your shop's hourly rate (set once in Settings, default $75/hr) to get estimated labor dollars. Total estimated cost = labor + material.

2. Log time as it happens

Workers log time entries per project, categorized as Shop / Install / Drawings / Admin / Finishing. Each entry has its own hourly rate captured at the time it was entered, so historic cost stays accurate even if rates change.

3. Log material as you spend it

The expense ledger on each project takes vendor, amount, date, and category (Material / Equipment / Subcontractor / Other). Drops in a few seconds per receipt. The total feeds Actual material cost automatically.

4. The card does the math

Estimated vs actual on revenue, material, labor (hours and dollars), and gross margin. Green when you're under budget; amber when you're over. Variance badges flag deltas over $50 or 0.5h. Gross margin is computed against collected revenue, not billed — so the number reflects cash, not invoices in flight.

Why this is hard in everything else

Most tools track sales OR books OR project tasks. None of them close the loop.

Tool Tracks bids Tracks actual labor Tracks actual material Shows margin per project
QuickBooks ✗ ✗ By account, not by job ✗
Generic CRM (HubSpot, Pipedrive) ✓ ✗ ✗ ✗
Spreadsheet + Dropbox If you remember to update it If you remember to log it If you remember to add it up Quarterly, in retrospect
Fabrica ✓ Per project, in the pipeline ✓ Time entries by category ✓ Per-project expense ledger ✓ Live, on every project page

The reason Fabrica can do this is because the same database knows the bid (Estimate), the contract (Deal), the labor (TimeEntry), the material (DealExpense), and the invoice — so the math is just a few joins. Spreadsheet stacks fall apart because no single sheet has all four.

Job costing FAQ

Questions shop owners ask

Can I set different hourly rates per worker?

Yes — when you log a time entry, the rate is set per-entry. The shop default (Settings → Shop hourly rate) is just the fallback. You can also set a rate per worker if you want, or override on individual entries.

What if I forget to log time for a few days?

You can backdate entries to any past day. Just put the right date when you create the entry. The Job costing math will pick them up immediately.

Does it handle subcontractor costs?

Yes — log them as expenses with category "Subcontractor." Same vendor, amount, date fields. They roll into Actual material cost on the Job costing card. If you'd rather see them broken out separately, that's coming soon.

Is margin computed before or after retainage?

After. We compute gross margin against collected revenue, not billed. So a $200k project where you've received $130k and the rest is in retainage shows margin against the $130k — closer to the cash reality.

Can I compare my last 10 kitchens?

Today: not in a single report — you'd look at each project's Job costing card. We're building a cross-project margin comparison view (a kind of "your portfolio at a glance") for shops with 6+ months of history. If you want early access let us know.

Stop guessing whether the last job made money.

Fabrica is free for the first 35 millwork shops. No card. 10-minute setup. Job costing live on day one.