REWORK IS UNTRACKED MARGIN LOSS.
Rework costs real money — labor hours, material replacement, equipment time — and almost never shows up correctly in job costing. It gets coded to the original work phase, absorbed into labor overruns, or written off as a bad project without anyone knowing what it actually cost. The result: you can't price future work correctly, you can't recover from the GC, and you can't identify the crews or phases where rework is burning margin repeatedly.
Every job has rework. The question is whether you know what it cost, why it happened, and who caused it. Without that visibility, rework is just an invisible tax on every project — silently eating margin that never shows up anywhere specific enough to act on.
WHERE THE COST GOES WHEN IT DISAPPEARS.
Rework cost has to land somewhere in the books. The problem is where it lands — and the fact that it almost never lands in a place that makes it visible as rework. Here's how it hides:
Buried in Labor Hours on the Original Phase Code
A crew tears out and reinstalls a section of underground conduit because it was installed at the wrong depth. The labor for the reinstall gets coded to the same phase code as the original installation — "Underground Rough-In." The job cost report shows that phase running 22% over budget. No one knows whether the overrun is a crew efficiency problem, a scope change, or entirely rework. All three look identical on a phase-level cost report without a rework code.
Written Off as "This Was a Tough Project"
Project closes out at 8% gross margin instead of the 22% estimated. The PM review says "site conditions," "coordination issues," "weather." All of that may be true. But if $40,000 of the margin loss was rework — tear-outs, reinstalls, material replacements — it never gets named specifically. The lesson learned is vague. The next bid for similar work doesn't add contingency for the actual problem. The pattern repeats.
Treated as a Change Order That Never Gets Approved
Rework caused by the GC's design error or another trade's interference should be a change order. Instead, the PM documents it informally, the work gets done to keep the schedule moving, and the change order paperwork never materializes into a signed approval. The rework cost sits in your job as unrecovered direct cost. You did the work twice. You got paid once.
Absorbed Into Overhead When It Should Be a Job Cost
Small rework items — a crew coming back on a Saturday to fix a failed inspection, a foreman making a second trip for materials that weren't correct the first time — get expensed to general overhead because no one wants to code them to a job that's already over budget. The job looks better. Overhead absorbs the hit. Your overhead rate creeps up over time for no identifiable reason.
UNTRACKED REWORK CORRUPTS YOUR ESTIMATING DATA.
Your historical job cost data is the foundation of accurate estimating. If rework is buried in phase codes rather than tracked separately, your historical labor costs for those phases are inflated by rework hours. The next time you estimate similar work, you use those inflated actuals as your baseline — and either bid too high to win work or carry a hidden cost burden that eats margin on every similar job.
The fix requires two things working together: a rework cost code that captures all rework labor and material separately, and a close-out process that reviews rework cost by cause — your error, GC-directed, design error, other trade interference.
The cause matters as much as the cost. Rework caused by your own crew needs to drive a training or quality control conversation. Rework caused by a design error or GC direction needs to drive a change order. Rework caused by another trade's interference needs to be documented for potential recovery. Three completely different responses — all invisible if the cost isn't tracked separately.