All posts

How to Estimate Profit Margin on a Job Before You Bid

9 min read

The short answer: To estimate a job's profit margin before you bid, add up the labor, materials, and overhead the job will consume, then set your price so that profit is the share of the price you want to keep. Margin is (price − cost) ÷ price, and to hit a target margin you price at cost ÷ (1 − margin), not by adding a markup percentage on top of cost. The two are not the same, and confusing them is how bids quietly lose money. CRMb compares your estimated margin to the real cost from punched hours, so your next bid is sharper than your last.

Every bid is a bet on a margin. You are guessing what the job will cost and pricing so a profit is left over. Get the guess right and the margin is real; get it wrong, or price with the wrong formula, and the margin you imagined never shows up in the bank.

This walks through building the cost, pricing to a real margin, and the margin-versus-markup trap that catches almost everyone at least once.


Margin vs markup: the mistake that underprices you

Margin and markup both describe the gap between cost and price, but they are calculated against different bases, and mixing them up costs you money on every job.

  • Markup is the gap as a percentage of your cost: markup = (price − cost) ÷ cost.
  • Margin is the gap as a percentage of your price: margin = (price − cost) ÷ price.

A part that costs $100 and sells for $150 has a 50% markup but only a 33.3% margin. If you wanted a 50% margin and just "added 50%," you undercharged. Here is the conversion:

Markup on costActual gross margin
20%16.7%
25%20%
40%28.6%
50%33.3%
75%42.9%
100%50%

The takeaway: to hit a margin, do not add that percentage to cost. Divide cost by (1 − margin). To land a 35% margin on $1,000 of cost, price at 1,000 ÷ 0.65 = $1,538, not $1,350. That $188 difference, repeated across every job, is the gap between a healthy shop and a busy broke one.


Step 1: Build the job cost

You cannot estimate margin without a cost, so build the cost first, in three buckets.

Labor. Estimate the crew-hours the job needs, then multiply by your loaded labor rate, the wage plus payroll taxes, workers' comp, and benefits, which typically add 15% to 30% over the base wage. If a job needs 30 hours at a $40 loaded rate, that is $1,200 of labor. Estimating hours honestly is the hardest and most important part, see how to calculate labor cost per job.

Materials. List every part and cost it at what you pay, not what you charge. If you pull from stock, use average cost. Say materials come to $900.

Overhead. The share of running the business this job should carry. A common method: divide monthly overhead by billable labor hours to get a per-hour rate, then apply it. At $18 per labor hour and 30 hours, that is $540.

Total estimated cost = $1,200 + $900 + $540 = $2,640. That is the number your price has to clear before a dollar of profit exists.


Step 2: Choose your target margin and price up

Now turn cost into price. Pick a target gross margin, many service businesses aim for 20% to 40% after labor, materials, and overhead, and price with the margin formula:

Price = cost ÷ (1 − target margin)

At $2,640 of cost and a 30% target: 2,640 ÷ 0.70 = $3,771. Round to a clean number the customer can accept, say $3,800, and your estimated margin is (3,800 − 2,640) ÷ 3,800 = 30.5%.

Two sanity checks before you send it:

  1. Per-hour check. Divide the price by estimated crew-hours. $3,800 ÷ 30 = $127 per crew-hour. If that is below what your market and costs require, the job is underpriced no matter how the line items read.
  2. Floor check. If the estimated margin lands below the minimum your business needs to stay healthy, either find cost to cut or walk away. A bid you cannot profit on is not worth winning.

Step 3: Pressure-test the estimate against real history

An estimate is only as good as the hours it assumes, and hours are where estimates go wrong. The way to tighten them is to compare what you bid against what jobs actually cost, over and over, until your estimates carry your own history instead of optimism.

That is the loop CRMb is built around. Each job carries your estimated hours and target margin. As the crew punches in through the Punch pairing and materials get added from inventory at average cost, the reports view shows the projected margin trending against your target, and flags the job if it slips into the red while it is still open. After a season of jobs you can see the pattern, "we bid tile work 15% light every time", and bake it into the next estimate.

Estimating margin, in other words, is not a one-time calculation. It is a skill that compounds when you feed real outcomes back into the next bid.


A worked example

Take a small commercial job, replacing rooftop exhaust fans, quoted before any work begins.

BucketEstimateCost
Labor24 crew-hours × $42 loaded$1,008
Materials3 fans, curbs, wiring (average cost)$1,650
Overhead24 hours × $20$480
Total estimated cost$3,138

Price to a 32% target margin: 3,138 ÷ (1 − 0.32) = 3,138 ÷ 0.68 = $4,615. Round to $4,650.

Estimated margin at that price: (4,650 − 3,138) ÷ 4,650 = 32.5%.

Now the loop pays off. If the crew punches 28 hours instead of 24, real labor is $1,176 and overhead $560, pushing cost to $3,386 and margin down to (4,650 − 3,386) ÷ 4,650 = 27.2%. Still profitable, but the four extra hours cost you five margin points. Do that job three more times at 24-hour assumptions and you have given away real money, which is exactly what the estimated-versus-actual comparison is there to catch.


Estimated vs actual margin: close the loop

The most valuable number in your business is the gap between the margin you bid and the margin you got. It tells you whether your estimating is accurate, which job types beat target, and how much to add to the next bid.

Closing that loop by hand means re-entering timesheets and receipts into a spreadsheet after the job, which almost never happens consistently. When labor comes from real punches and materials from inventory, the actual cost assembles itself, and the comparison is just there. For the bigger picture on running the whole business to margin, see how to run a profitable service business.


Frequently Asked Questions

What is the difference between margin and markup?

Markup is the gap between cost and price as a percentage of cost; margin is that same gap as a percentage of price. A $100 part sold for $150 is a 50% markup but a 33.3% margin. To hit a target margin, divide cost by (1 − margin) rather than adding the percentage to cost, or you will undercharge on every job.

How do I calculate profit margin on a job?

Add up the job's labor (real or estimated hours at a loaded rate), materials at cost, and an overhead slice to get total cost, then compute (price − cost) ÷ price. If a job costs $2,640 and you charge $3,800, the margin is (3,800 − 2,640) ÷ 3,800, about 30.5%. The number is only trustworthy if the cost includes real hours, not bid assumptions.

What is a good profit margin on a job?

Many service businesses target 20% to 40% gross margin per job after labor, materials, and overhead, with the right number depending on trade and risk. What matters more than any benchmark is measuring margin the same way on every job, so you can see which job types beat target and which drag it down.

How do I price a job to hit a target margin?

Build the total cost, then price at cost ÷ (1 − target margin). For a 35% margin on $1,000 of cost, price at 1,000 ÷ 0.65 = $1,538. Then check the result against a per-hour floor and your minimum acceptable margin before you send the bid.

Why do my jobs come in under the margin I estimated?

Almost always because the labor hours ran over what you bid. Materials are usually close to estimate; hours are not. The fix is to compare estimated hours to the hours your crew actually punched, job after job, until your estimates carry your real history instead of optimism.


Getting started

Before your next bid, build the cost in three buckets, price with the margin formula, and check it against a per-hour floor. Then track what the job actually costs so the next estimate is grounded in data.

CRMb runs your clients, schedule, inventory, and invoicing on one system and shows the real margin on every job from your crew's actual punched hours, on Mac, iPad, and the web. Start free and bid your next job from history, not hope.

More from the blog