You estimated $38 per yard. You are running $52. The job is 40% done. Without real-time tracking, you find this out at closeout. Here is how to see it in week two.
On a concrete job, labor is the variable you control most directly. Material is priced at bid time and does not move much. Equipment is a fixed daily cost. Labor productivity — how many yards your crew places per hour, per day, per pour — is what separates a 22% gross margin job from an 8% gross margin job on the same scope and the same contract value. And it is entirely invisible without tracking.
Without weekly labor cost per yard tracking, the first time you see the variance is when the job closes and the final cost hits the P&L. By then the crew has been paid, the concrete has been placed, and the only thing left to do is absorb the loss and try to understand what happened. The loss was visible in week two. There just was not a system to see it.
If you are running four jobs and one is losing money on labor productivity, the blended P&L might still show an acceptable margin. You do not know which job is the problem or why. Job-level labor cost per yard tracking separates each job so the losing one is visible — and fixable — before it closes.
Without knowing actual labor cost per yard by pour type, your next bid uses the same estimated rate as the last job. If that rate was wrong, you bid wrong again. Contractors who track labor cost per yard have an estimating database built from real production data. Contractors who do not are guessing on every bid.
Your labor cost per yard calculation starts with the right denominator. Wages alone understate labor cost by 28–35%. Burdened rate includes wages plus payroll taxes, workers compensation, general liability allocation, and benefits. If your average wage is $28/hour and burden is 32%, your burdened rate is $36.96/hour. That is the number that goes into the calculation — not $28.
Foremen log hours by pour at the end of each day — not by job globally. A job with three pours needs three labor buckets. When Pour 2 runs over estimate, you see it immediately and know exactly which scope is causing the variance. Global job hours tell you there is a problem. Pour-level hours tell you where it is.
Every week: (hours worked × burdened rate) ÷ yards placed = actual labor cost per yard. Compare to estimated labor cost per yard from the bid. Variance over 10% triggers a conversation — is it a production method problem, a crew size problem, a scope change not yet documented, or an estimate that was wrong? Each answer has a different fix.
After enough jobs with real tracking data, you have actual labor cost per yard by pour type — flatwork, walls, elevated decks, decorative — in your market conditions, with your crew. That is a competitive advantage. Your next bid is based on what your crew actually produces, not what the estimating software assumes.
This contractor had been using a single labor rate in bids for all pour types for years. No differentiation between flatwork at $32/yard and structural wall work at $85/yard. The blended rate underpriced structural pours and overpriced flatwork — meaning he was losing structural jobs to lower bidders and winning flatwork at margins that looked fine but were actually subsidizing overhead he should have been covering on structural.
Overhead rate corrected once actual labor data by pour type showed how underpriced structural work had been.
In profit sharing paid to the team in the following 12 months — direct result of margin that was always available once the bid model was built on real production data.
A free call with Josh takes 30 minutes. Bring your last P&L and current bank balance.
Schedule a Free Call →