Contractor Bidding Mistakes That Kill Your Margin
Every contractor who's been in business more than a year has had the same gut punch: the job wraps, the invoice goes out, the money comes in — and somehow there's less of it than the bid promised. Not because the client didn't pay. Not because anyone stole from you. Because the bid itself was quietly wrong, in one of a handful of predictable ways, and nobody caught it until the job was already done.
I know this one personally. I bid a $42,000 bathroom remodel expecting a 30% margin. The job finished, the client was happy, and I figured I'd made close to what I planned. Then my accountant ran the real numbers: 12%. Eighteen points of margin gone, and I couldn't point to a single disaster that caused it — just a bid built on memory and hope instead of what jobs like that one actually cost. (the full story of that job.)
That's the pattern with bidding mistakes. They almost never show up as one big line-item disaster. They show up as a dozen small leaks, and by the time you notice, the job is closed and the money is gone. Here are the six that do the most damage, the real cost of each, and the fix.
1. Forgetting overhead in the bid
This is the most common mistake in the trade, and it's the easiest to miss because it feels responsible. You price the materials. You price the labor. The number looks fair, the client accepts, and you move on. What never made it into that number: your insurance, your truck payment and fuel, your phone, your software, your office space or storage unit, your bookkeeping, your marketing. None of that goes away when you win the job — it runs every single day whether you're on a job site or not, and if it isn't built into your price, you're paying it out of your labor margin without realizing it.
The fix is not complicated, it's just a habit most contractors never build: total up your fixed monthly overhead, divide it by your average monthly revenue, and you have a percentage. That percentage goes on top of materials and labor on every single bid, every time, no exceptions. If your overhead runs 12% of revenue and you're not adding 12% to every job, you're quietly discounting every job you win by that same amount.
2. Underestimating the small material runs
Nobody forgets to price the lumber package or the fixtures on the estimate — those are big, visible, easy to remember. What gets missed is the second trip to the supply house for a fitting nobody had on the truck. The $40 run for extra screws when the box came up short. The $60 trip because the tile pattern needed three more pieces than the plan called for. Each one looks trivial in the moment. On a typical remodel there might be six, eight, ten of those trips, and they rarely show up anywhere on the original estimate because nobody bids for a run they don't know they'll need.
Do the math on that: eight trips averaging $45 each is $360 gone from a job that was never priced to absorb it. On a smaller job that's real margin. On a string of jobs over a year, it's the difference between a good year and a mediocre one. The fix has two parts — build a small material contingency line into every bid (2-4% of materials cost is a reasonable starting point), and actually capture every receipt so you can see, job by job, how much those runs really cost you. That second part is where most contractors fail: the receipt from the parking lot never makes it into any system, so the next bid repeats the same mistake.
3. No contingency for the unexpected
Rot behind the shower wall. A subfloor that's soft in a spot nobody could see until the old tile came up. Wiring from 1978 that doesn't meet code and has to be replaced before you can close the wall back up. Every remodeler has hit this, and every remodeler who bids without a contingency line eats it out of their own pocket, because the client signed a fixed price and that's what they expect to pay.
A contingency isn't padding and it isn't dishonest — it's pricing in the risk that's actually there on any job where walls get opened. Five to ten percent on remodel work, higher on older houses or jobs where you can't fully inspect conditions before signing. If nothing goes wrong, that money becomes margin. If something does — and on enough jobs, something always does — you're covered instead of explaining to a client why the price is changing, or worse, just eating it and telling yourself it's a cost of doing business.
4. Bidding off memory instead of real job costs
This is the mistake underneath most of the others. Ask a contractor what a bathroom remodel like this one costs and you'll usually get a number pulled from memory — "jobs like this run about $X" — built on a general feel for the trade rather than what the last three jobs like it actually cost, dollar for dollar. Memory is optimistic. It remembers the parts that went smoothly and forgets the extra plumbing run, the second delivery fee, the four hours of rework on the tile.
The only real fix is having actual numbers from actual past jobs to bid the next one against — not a gut feel, the real total: labor, every material receipt, every sub invoice, every fee, on that specific job. That's exactly what live per-job profit and margin tracking gives you over time. After a handful of jobs in a category, you stop guessing what a bathroom remodel costs and start knowing, because you have the real number from the last one sitting in front of you. (See our job-costing guide for the full breakdown of what that looks like.)
Bid off the real number from your last job, not a memory of it

5. Not tracking change orders separately
A client asks for one more outlet. A different tile than the plan. A vanity swap mid-job. Small requests, and on a lot of jobs they get handled with a handshake and a verbal "sure, no problem" — and then never get written down or billed. The original scope quietly grows, the original price doesn't, and every one of those small additions gets absorbed into a bid that was never priced for the extra work.
The fix isn't complicated, it's discipline: every change to the original scope, no matter how small it feels in the moment, gets written down, priced, and billed separately from the base contract. That protects your margin, and it also gives you real data — if you're constantly eating "small" change orders on a certain type of job, that's a sign your original scope definition is too loose, not that change orders are just a cost of doing business.
6. One rate for every client and every job
Not every job costs the same to run, even when the square footage and the material list look identical on paper. A job with easy site access, a decisive client, and clean existing conditions costs less in time, stress, and rework than a job three flights up with no parking, a client who changes their mind weekly, and a house full of surprises behind every wall. Pricing both jobs at the same rate means you're systematically underpaid on the harder ones and, without realizing it, training yourself to dread the jobs that actually deserve a premium.
This doesn't mean padding a bid because you don't like a client. It means pricing the real difficulty in front of you — access, timeline pressure, decision speed, site conditions — the same way you'd price a harder material or a tighter deadline. A rate card is a starting point, not a rule that overrides what the job in front of you actually requires.
Where the mistake table lands
| Mistake | Real cost on a typical job | Fix |
|---|---|---|
| Overhead left out | 10-15% of the bid, paid out of labor margin | Add a fixed overhead % to every bid, no exceptions |
| Small material runs | $300-500 in forgotten trips | Build in a 2-4% material contingency, track every receipt |
| No contingency buffer | Full cost of any surprise eaten out of pocket | 5-10% contingency on any job that opens walls |
| Bidding off memory | A mis-estimate you can’t see coming | Bid off the real cost of your last similar job |
| Change orders absorbed | Free scope creep, every time | Write down, price, and bill every change separately |
| One rate for every job | Underpaid on the hard ones | Price real difficulty — access, client, conditions |
The one fix that covers most of the list
Look back at that table and notice something: four of the six mistakes trace back to the same root problem — not knowing, with real numbers, what your last job actually cost. Overhead, small material runs, bidding off memory, and change orders are all versions of the same failure: the bid gets built on a feeling instead of a fact.
That's the whole case for real job costing. Snap the receipt at the counter instead of losing it in the truck console — that's what catches the $30-60 runs before they vanish. Track every job's real cost as it happens, not reconstructed three months later from memory. Then the next bid isn't a guess dressed up as a number — it's built on what the last job like it actually cost you, margin and all. Job Cost Pro does exactly that: AI receipt scanning catches the small stuff automatically, and live per-job margin tracking means you know your real number the next time you sit down to write a bid.
Pricing
| Plan | Price | What you get |
|---|---|---|
| Free | $0 | 3 projects, 50 receipts a month, full AI scanning |
| Pro | $29.99/mo | More projects and receipts, full feature set |
| Contractor | $49.99/mo | Higher limits for busier crews |
| Business | $149.99/mo | Built for multiple crews running jobs at once |
Job Cost Pro is free on the App Store — 3 projects, 50 receipts a month, full AI scanning. No credit card. Get it here. If you want the deeper walkthrough of what real job costing looks like day to day, start with our job-costing guide.
FAQ
What is the biggest bidding mistake contractors make?
Leaving overhead out of the number — pricing only materials and labor and forgetting insurance, the truck, software, and everything else that runs every day whether you’re on a job or not. It quietly eats 10-15% of margin on every bid it’s missing from.
How much contingency should be in a remodel bid?
Five to ten percent is a reasonable range for most remodel work, higher on older houses or jobs where you can’t fully inspect conditions before signing. It covers the rot behind a wall or the bad subfloor you can’t see until demo starts.
Why do small material runs hurt margin so much?
Because they’re individually too small to notice but add up fast. Eight forgotten trips averaging $45 each is $360 gone from a job that was never priced to absorb it — and unlike the big material package, nobody bids for a run they don’t know they’ll need.
What should replace bidding off memory?
The real cost of your last similar job — labor, every material receipt, every sub invoice, every fee, tracked per job. After a handful of jobs in a category, that real number replaces the gut feel, which is exactly what mis-priced a $42,000 bathroom remodel from an expected 30% margin down to an actual 12%.
How should change orders be handled to protect margin?
Written down, priced, and billed separately from the original contract every single time, no matter how small the request feels. Change orders that get handled with a handshake and never billed quietly grow the scope of the job without growing the price.
Should every client get the same rate?
No. A job with easy access, a decisive client, and clean conditions costs less to run than one with tight access, indecision, and hidden surprises. Pricing both the same underpays the harder job every time — price the real difficulty in front of you, not a flat rate card.