Job costing for sign shops — quoted margin isn't real margin
Every shop knows its quoted margin. Far fewer know their actual margin per job — what was really spent on materials, hours and purchases by the time the job left the building. The gap between those two numbers is where a sign business quietly wins or loses, and you can't manage a gap you don't measure.
The three numbers every closed job should produce
Job costing doesn't need to be elaborate to be useful. For every closed job you want: quoted cost versus actual cost (materials, labour, machine time, purchases), quoted hours versus actual hours by department, and the resulting actual gross margin versus what you quoted. Three comparisons, produced the same way every time.
- Quoted vs actual cost — materials, labour, purchases per job
- Quoted vs actual hours — by department, not just in total
- Quoted vs actual gross margin — the number that pays the rent
Capture at the source, or you'll never do it
Job costing dies when it depends on people filling in timesheets from memory on Friday. The fix is capturing data where the work happens: floor staff clock on and off steps as they do them, purchase orders are raised against the job (not against 'shop supplies'), and material issues come off the job's stock reservation.
That's why job-linked purchasing matters so much: a PO raised against J-0871 lands in J-0871's actuals automatically. A PO raised against 'general' lands nowhere and your costing is fiction.
- Time: clock steps as they happen — tablets on the floor beat timesheets
- Purchases: every PO linked to a job unless it's genuinely stock
- Materials: issue against the job, count real offcuts honestly
Close the loop monthly — that's where the money is
The report that changes behaviour is short: last month's closed jobs, sorted by margin variance. The three worst jobs get ten minutes each: was the estimate wrong (fix the recipe or rate), did production slip (fix the process), or did scope creep in unbilled (fix the variation habit)? Do that monthly and your quoting accuracy compounds; skip it and the same leak repeats forever.
Watch for the classic leaks: unbilled variations ('while you're here, can you just…'), install visits that doubled, artwork revisions beyond the quoted rounds, and delivery runs nobody priced.
Doing this without drowning in admin
On paper, this is three spreadsheets and a lot of discipline. In practice, discipline is exactly what busy shops run out of — which is why the capture has to be a by-product of doing the work, not extra work. In Sign OS, time clocks in from the floor boards and QR job sheets, POs link to jobs at creation, and every job shows quoted-versus-actual margin live — the monthly review becomes reading a screen, not building a spreadsheet. However you implement it, the principle stands: if costing data isn't captured automatically, it won't be captured.
Frequently asked questions
- We're a small shop — is job costing overkill?
- Smaller shops arguably need it more: one bad recurring job hurts a three-person shop far more than a twenty-person one. Start with your ten biggest jobs a month and just compare quoted versus actual hours — that alone usually finds the leak.
- How accurate does floor time tracking need to be?
- Directionally right beats precisely wrong. Step-level clocking (started cutting, finished cutting) is plenty — the goal is spotting the job that took 9 hours against 5 quoted, not auditing minutes.
- What's a healthy margin variance?
- Consistency matters more than the absolute number. If actuals land within a few percent of quote most of the time, your recipes are honest; if variance is wild in both directions, your estimating is guesswork that averages out — until the month it doesn't.
- Can Sign OS do this out of the box?
- Yes — it's the core loop: quotes freeze into jobs, floor time clocks against steps, POs link to jobs, and every job carries a live quoted-versus-actual margin panel. The free 7-day trial is enough to cost a few real jobs end to end.