how to bid a job (without losing your shirt)

Most contractors have lost money on a job. Not because they did bad work β€” because they bid wrong. They priced based on best-case thinking, got the job, then watched their margin evaporate when reality showed up.

This guide explains why that happens, and how to fix it with a method that takes about five minutes longer than your current approach.

why contractors underbid

Three forces push every bid downward:

Optimism bias. You picture the job going smoothly. The drywall comes off clean. The joists are solid. The supplier delivers on time. You price for the version of the job where nothing goes wrong β€” even though that version almost never happens.

Competitive pressure. You know the homeowner has three bids. So you sharpen your pencil, trim the fat, round everything down. Now your bid is tight. Too tight. You win the job and lose the profit.

Single-point estimates. You write down one number for each line item: tile $2,500. That is not an estimate. That is a guess dressed up as a fact. Real costs are ranges. Tile could be $2,200 if your usual supplier has stock, or $3,000 if they do not and you are ordering from someone new.

the five uncertainty tiers

Not every line item in your bid carries the same risk. A dumpster rental from the company you have used fifty times is not the same as a custom glass shower enclosure from a fabricator you found last week. Treating them the same is the core mistake in flat contingency pricing.

LowRiskQuotes uses five tiers of uncertainty. Here is what each one means in practice:

β”Œβ”€ Uncertainty Tiers ────────────────────────────────────────┐
TierRangeReal-World Example
Certain+/- 2%Dumpster rental, fixed-price supplier quote in writing
Low+/- 8%Materials from your regular supplier, standard fixtures
Medium+/- 15%Subcontractor you have used before but not recently
High+/- 25%First-time subcontractor, specialty materials, site unknowns
Wild Guess+/- 40%No site visit done, unfamiliar scope, "should be about..."

The key question for each line item is: how confident am I that this number is right? Not how confident you want to be. How confident you actually are, based on evidence. Have you got a written quote? That is Certain. Are you guessing from a job you did two years ago in a different zip code? That is High at best.

worked example: bathroom remodel

Let us walk through a real bid. Mrs. Chen wants her bathroom redone β€” demo, re-tile, new fixtures, custom glass shower enclosure, new plumbing, electrical, and a dumpster for the waste. Your base estimate comes to $8,700.

β”Œβ”€ Line Items ────────────────────────────────────────┐
ItemEstimateTierWhy
Wall & floor tile$2,500LowYour regular supplier, you have priced similar before
Fixtures (vanity, toilet, faucets)$1,100MediumCustomer chose mid-range but has not finalized yet
Custom glass shower enclosure$2,000HighNew fabricator, custom size, never ordered from them
Plumbing (subcontractor)$1,600MediumDave is reliable but has not bid yet on this job
Electrician$800LowStandard bathroom electrical, your usual guy
Dumpster rental$700CertainFixed price from your regular hauling company

If you bid $8,700 flat, you are pricing for the scenario where every single line item comes in exactly on estimate. That is the single most unlikely outcome. It is like betting that every coin in a six-coin toss lands heads.

Run those numbers through a Monte Carlo simulation and you get a distribution. The simulation runs thousands of versions of this job, each time pulling costs from within the uncertainty range you set. Because overruns are more common than underruns, the simulation skews upward β€” just like real life.

β”Œβ”€ Simulation Output ────────────────────────────────────────┐

Base estimate: $8,700

P50 (coin-flip odds): $9,140

P80 (recommended bid): $9,780

P95 (worst-case buffer): $10,670

The difference between $8,700 and $9,780 is $1,080 β€” about 12%. But it is not a flat 12% contingency. It is a calculated buffer based on the specific risks in this specific job. A job with all-Low items would need less. A job full of Wild Guesses would need much more.

reading the results: what the bell curve means

The simulation gives you a probability distribution β€” a bell curve showing how likely each total cost is. Here is how to read it:

  • P50 means there is a 50% chance the actual cost is below this number. Coin-flip odds. Not a safe bid.
  • P80 means 80% chance the actual cost is below this. This is the sweet spot for most contractors. You are protected against most overruns without pricing yourself out of the market.
  • P95 means 95% chance. This is your "sleep well at night" number. Use it for fixed-price contracts or customers who will not accept any change orders.

Which percentile you bid at depends on the job and the customer. A time-and-materials job with a good client? P50 might be fine. A fixed-price kitchen for a lawyer who will hold you to every dollar? Bid at P80 or P95 and protect yourself.

common bidding mistakes

After running thousands of estimates through the simulator, patterns emerge. Here are the mistakes that cost contractors the most money:

  1. Marking everything as Low uncertainty. If you have not got a written quote, it is not Low. If you have not done this exact scope before, it is not Low. Be honest with yourself.
  2. Forgetting travel and time costs. Two hours of driving per day at $45/hour for a three-week job is $1,350. That is real money. Price it. Do not forget the IRS mileage rate either β€” $0.70/mile adds up fast.
  3. Not pricing for delays. Weather, late deliveries, customer changes. These are not rare events. They are the norm. Your job duration estimate needs its own uncertainty tier.
  4. Copying last year's prices. Material costs move. Lumber is up. Copper is up. If your prices are six months old, they are wrong.
  5. Bidding to win instead of bidding to profit. A job you win at the wrong price is worse than a job you do not get. The worst outcome is not losing the bid. It is winning it and working for free.

putting it together

Here is the workflow. It adds about five minutes to your bidding process:

  1. List every line item as you normally would.
  2. For each one, ask: how confident am I in this number? Assign a tier.
  3. Add your daily rate, job duration, and travel.
  4. Run the simulation.
  5. Bid at P80 for most jobs. Adjust up or down based on contract type.

You are not adding a made-up contingency. You are building a bid that reflects the actual risk profile of the actual job. That is the difference between hoping you make money and knowing you will.