The bid problem most contractors don't admit
A lot of contractors bid the same way: take the square footage or the unit count, multiply by a rate that feels right based on the last few jobs, add a margin that feels safe, send it. If they win, great. If they lose, they tell themselves the customer went with the cheapest guy and move on.
The honest version is that most bids are guesses dressed up as estimates. The contractor doesn't actually know what the job will cost in labor — they have a feeling. So they pad to be safe. Pad too much and you lose to the contractor who padded less. Pad too little and you lose money on the job.
Production data fixes this. Not perfectly, not magically, but enough that you can stop guessing and start bidding off real numbers. This article walks through how to use it, what data you need, and where it falls apart if you don't take it seriously.
My background, and why this is roofing-flavored
My background is in roofing — squares per day, bundles, decking — plus gutters, soffit, fascia, and the occasional siding job. The examples in here are roofing because that's what I know cold. The math works the same for any unit-based trade. If you're bidding by linear feet, by panels, by units installed, the structure is identical. Substitute your unit and run the same playbook.
What production data actually means
Production data is the historical record of what your crews actually did. Not what you bid, not what you hoped — what they did.
For a roofing crew, the core numbers are:
- Squares completed per day per crew configuration. A 3-person crew on a tear-off, a 4-person crew on a new-build, a 2-person crew on a small repair — those are different numbers.
- Hours per square. This is the same number from a different angle. Useful when crews vary in size.
- Material variance. How much waste shows up between what you ordered and what got installed.
- Callback rate by job type. What percentage of jobs needed a return trip, and for what.
- Cost overrun rate. Jobs that took more labor than bid, by how much, by job type.
You don't need all of these to start. Squares per day per crew config and hours per square will get you 80% of the way. The rest tightens the bid over time.
For non-roofing trades, the equivalents are units per hour, hours per unit, callback rate, and overrun rate. Same idea.
The math, plain
Here's the bidding math when you have clean production data.
Labor cost = (production target / production rate) × crew labor cost per day
True breakeven = Labor cost + materials + equipment + overhead allocation
Bid = True breakeven × (1 + target margin)
That's it. The art is in each input. The data lets you get those inputs right.
Compare that to the guess-bid:
Bid = (square count × rate that feels right) + 20% safety pad
Both produce a number. One of them produces a number you can defend, learn from, and improve.
A worked example for a 30-square roof
Say a 3-person crew at my old shop averaged 22 squares per day on a standard tear-off and re-roof, asphalt, single layer, simple pitch. That's the production rate. It came from looking at the last 12 jobs of similar scope and taking the median, not the best day or the worst.
Crew labor cost per day, fully burdened — wages plus payroll taxes, workers' comp, benefits — runs roughly $1,200 per day for that crew config. Your number will be different. The fully burdened labor rate guide walks through how to build it from scratch.
Now bid a 30-square job:
- Days needed: 30 squares / 22 squares per day = 1.36 days
- Labor cost: 1.36 days × $1,200/day = $1,636
- Materials: ~$5,400 (3 squares of waste built in, current asphalt pricing)
- Equipment + dumpster: ~$650
- Overhead allocation: 12% of direct cost = ~$920
- True breakeven: ~$8,606
Apply a target margin. If the market says you can get 25% on this kind of job, the bid is roughly $10,758. If it's a tight market and you'll take 18%, it's $10,155. Either way, you're making a deliberate choice, not a guess.
Compare to the contractor who bid this same job at "$400 a square sounds about right" — $12,000. They'll lose to anyone with the data. Or the contractor who bid it at "$300 a square because I want the work" — $9,000. They'll get the job and lose money on it.
The contractor with data sits in the middle, makes their margin, and wins more bids than they used to. Not because the bids are lower — because the bids are right.
Where it falls apart: garbage in, bad bids out
This whole approach depends on the data being clean. If your hours are estimated on Friday by a foreman who's trying to remember the week, and your production counts are guessed off a finished invoice, the average is meaningless and bidding against it will lose you money.
Clean production data means:
- Hours logged daily, by worker, on the right job. Not weekly. Not estimated. The piece work tracking software discussion covers why this matters and what the real cost of bad tracking is.
- Production counted as completed, not as billed. Squares done, not squares invoiced. Those are different numbers and the difference is where waste and rework hide.
- Crew configuration recorded. A 3-person day is not the same as a 4-person day. If you don't know who was on the crew, you can't normalize the rate.
- Job type tagged. A tear-off is not a re-roof over existing. Don't average them together. Bid the wrong category against the wrong rate and you'll be off by 20%.
If you're tracking on spreadsheets, expect this to be hard. The spreadsheets costing money article and the spreadsheets vs. dedicated tool comparison get into why spreadsheets break down once the data starts mattering for bidding. You can do it on paper or in Excel for a small operation, but the data hygiene work is brutal.
How long until you have enough data
Six to eight clean jobs of similar type is the floor. That gives you a median that isn't dominated by one outlier. Twelve or more lets you start splitting the data by crew config and job complexity.
If you only have two or three jobs to look at, don't bid against the data. Bid the way you have been, but start logging cleanly today so that in a quarter you'll have something real to work with.
The other thing that takes time: confidence. The first few bids you do off the data will feel uncomfortable because they don't match the gut number. Some of them will be lower than you'd usually bid and you'll be nervous about margin. Some will be higher and you'll be nervous about losing the bid. After a few jobs come in on budget, the discomfort goes away.
Don't bid the average — bid the percentile
A subtle point that matters. The median production rate is what your crew hits on a typical job. But there are bad days. Weather, surprises, a worker out sick. If you bid against the median, half your jobs will overrun.
A more honest bid uses something like the 60th to 70th percentile of production. That means you're bidding against a slightly slower day than typical, which gives you a buffer. On a good day, the job comes in under and you keep the difference. On a typical day, you make your margin. On a bad day, you cover cost.
How much buffer is a judgment call. Tighter buffer wins more bids and loses more money on bad jobs. Wider buffer is safer but loses more bids. The data lets you make that tradeoff with eyes open.
What about callbacks and rework
Callback rate matters because it shifts your real labor cost. If 15% of your jobs need a return trip averaging half a day, that's 7.5% additional labor cost across the board that needs to be in the bid.
Track callbacks. Most contractors don't, because callbacks feel like a thing that happened once and won't happen again. Until they look at the year and realize they ran 18 callbacks. That's real labor money that has to come from somewhere — either it's in the bid, or it's coming out of margin.
The crew performance monitoring guide covers callback tracking as part of crew-level performance, and the mid-year profit check guide is where you find out whether your bidding assumptions held up over the season.
Where to start tomorrow
If you don't have clean production data yet, the order of operations is:
- Pick the job type you bid most often. Roofing tear-offs, gutter installs, whatever. Start there.
- Decide what unit you're tracking. Squares, linear feet, panels.
- Log hours daily by worker on that job, with crew config. No exceptions, no Friday catch-up.
- Count production at end of day, not end of week. Squares completed, not estimated.
- Wait until you have 6+ jobs. Don't bid against three jobs of data.
- Pull the median production rate and the 60th–70th percentile. Use the percentile for bidding, the median for performance reviews.
- Build your fully burdened labor cost. The labor burden walkthrough is the numbers piece.
- Bid your next similar job using the formula above. Track how it comes in.
- Adjust. If you keep coming in under bid, your percentile is too conservative. If you keep coming in over, it's too aggressive.
For roofing specifically, the roofing labor cost calculation guide and the pricing roofing jobs accurately article get into the trade-specific math more deeply.
If you want to put a number on a specific bid before you have all the historical data dialed in, the job profit calculator is a clean way to test the math against your gut.
A note on compliance
Production data feeding bids does not change your FLSA obligations. You still have to track hours for every non-exempt worker, run the regular-rate overtime calculation every workweek, and pay minimum-wage make-up when piece rate earnings fall short. Bidding well off your production numbers is the upside; the underlying compliance math has to be solid regardless. The FLSA requirements for piece rate employers article covers the recordkeeping and overtime rules you cannot skip.
Why this is worth the work
The contractors who win the most bids over a season aren't the ones with the lowest prices. They're the ones whose bids are closest to right. They don't lose every job to the cheapest guy because they're not 20% high on every bid. They don't lose money on the jobs they win because they're not 10% low on the ones that should have been priced higher.
Clean production data is what lets you tell the difference between a good job and a bad one before you commit to it. That's the whole point.
If you want to see what production data tracking looks like inside a tool built for piece work and crew tracking, you can start a Piece Work Pro account and run a job through it. The point isn't the software — the point is having numbers you trust the next time you sit down to bid.