Contractor business guide

Estimated vs Actual Job Costs: How Contractors Find Profit Leaks

By Contractor Money Tools · Published

A completed job can still look “profitable” and underperform badly.

Suppose you expected a job to produce $6,000 of Job Profit at a 30% margin. After the work is complete, the actual result is $5,100 at a 24.3% margin.

The difference is visible.

The useful question is:

Where did the expected profit go?

That answer rarely comes from looking at one total.

You need to move through four steps:

Variance → category → root cause → corrective input

A labor overrun, for example, does not automatically mean your labor rate was wrong. You may have underestimated hours, used a different crew, incurred overtime, performed rework, completed extra scope, or simply coded time to the wrong job.

The same logic applies to materials, subcontractors, equipment, overhead, and revenue.

Start by comparing the estimated and actual economics of the job in the Contractor Job Profit & Costing Calculator. Once you know which numbers changed, use this guide to determine why they changed and what should be corrected before the next estimate.

Start with the profit and margin change

Before reviewing individual receipts or time entries, understand the top-level result.

Compare:

  • estimated job revenue;
  • actual job revenue;
  • estimated Job Profit;
  • actual Job Profit;
  • estimated Job Margin;
  • actual Job Margin.

The first question is:

Did the job miss expectations because revenue changed, costs changed, or both?

A lower margin does not automatically mean costs went over estimate.

For example:

  • revenue may have been reduced by a credit;
  • extra work may have been performed without additional billing;
  • costs may have risen while revenue also increased;
  • direct costs may have stayed close to plan while allocated overhead increased.

Start with the overall movement, then work downward.

If expected Job Profit was $6,000 and actual Job Profit was $5,100, you have a $900 unfavorable profit variance.

Now the diagnostic work begins.

Then find the largest cost variance

Do not treat every difference as equally important.

Review the major categories:

  • labor;
  • materials;
  • subcontractors;
  • equipment;
  • other direct costs;
  • allocated overhead.

Rank the dollar variances first.

If labor is $1,800 over estimate and disposal cost is $70 over estimate, labor deserves attention first.

The objective is not to make every estimate equal actual cost to the dollar.

The objective is to find the assumptions that materially changed the job economics.

For each significant variance, ask:

  1. Was the original estimate wrong?
  2. Did the rate or unit price change?
  3. Did execution consume more resources than planned?
  4. Did the scope change?
  5. Is the apparent variance actually a coding or data problem?

Those five root-cause categories should drive the analysis.

Labor variance: separate hours from labor cost

Labor overruns are especially important because one dollar variance can come from two very different problems:

more hours

or

higher cost per hour.

Those require different fixes.

More labor hours than estimated

Suppose a job was estimated at:

80 productive labor hours

but actually required:

105 hours.

The first question should not be:

Should we increase our labor rate?

The problem may be the quantity of labor, not its hourly cost.

Possible causes include:

  • the original estimate missed part of the scope;
  • productivity was lower than assumed;
  • jobsite conditions slowed the crew;
  • travel, setup, cleanup, or mobilization time was underestimated;
  • crew size was inefficient;
  • materials were not ready when needed;
  • rework or callbacks added hours;
  • a new employee required more supervision;
  • the job sequence was poorly planned.

The corrective input depends on the cause.

If similar installations repeatedly require 25% more hours than estimated, update the labor-hour assumption.

If the excess came from one unusual jobsite condition, changing every future estimate may be the wrong response.

Higher labor cost per hour

The hours may be close to estimate while labor dollars still run over.

Possible causes include:

  • overtime;
  • wage changes;
  • a higher-cost technician or foreman performed the work;
  • the planned crew mix changed;
  • benefits or other employee costs increased;
  • the productive-hour labor cost used in estimates is outdated.

If the productive-hour cost assumption itself is wrong, update that input before changing job markup.

Use the Labor Burden Calculator when the problem is the employee’s true productive-hour cost rather than the number of hours required.

This distinction matters:

Hours problem → fix productivity or estimating.

Rate problem → fix the labor-cost assumption.

Raising prices without knowing which one changed can hide the problem without correcting it.

Material variance: price, quantity, waste, or scope?

A material overrun also has multiple possible causes.

Suppose you estimated:

$4,000 of materials

and actual material cost was:

$5,200.

That $1,200 variance could mean very different things.

Estimate error

The original takeoff or material allowance was incomplete.

Examples:

  • missing fittings;
  • incorrect quantity;
  • forgotten consumables;
  • underestimated waste.

Corrective input:

material quantity or allowance.

Rate or price change

The estimated quantity was correct, but purchase price changed.

Examples:

  • supplier price increase;
  • rush order;
  • different product specification;
  • freight or delivery increase.

Corrective input:

unit cost / supplier price assumption.

Productivity or execution

The material was wasted or had to be replaced.

Examples:

  • damaged product;
  • incorrect cuts;
  • installation error;
  • failed component;
  • avoidable reordering.

Corrective action:

process, training, quality control, or waste assumption.

Scope change

The customer or job required additional work.

The material cost may be legitimate.

The key question becomes:

Was corresponding revenue added?

If not, the leak may be on the revenue/change-order side rather than the estimate itself.

Coding or data problem

The invoice may belong partly or entirely to another job.

Do not increase future material allowances because of a bookkeeping error.

The lesson is simple:

Do not respond to every material overrun by blindly adding more markup.

First determine whether the problem was quantity, price, execution, scope, or data.

Subcontractor variance: check scope and change control

Subcontractor costs often move because the scope assumed in the estimate and the scope actually purchased are different.

Possible causes include:

  • the original subcontractor quote expired;
  • the estimate used an allowance rather than a firm quote;
  • excluded work was discovered later;
  • site conditions required additional work;
  • the subcontractor issued a change order;
  • a second subcontractor was needed;
  • the contractor absorbed work that was not passed through to the customer;
  • the invoice was coded incorrectly.

A subcontractor overrun should therefore trigger two questions:

Why did subcontractor cost change?

and

Did job revenue change with it?

If a legitimate $2,000 subcontractor change was fully approved and billed to the customer, the cost variance alone does not describe the economic result.

If the work was necessary but never added to revenue, the issue may be change-order discipline.

The same cost variance can represent either a successful scope change or a profit leak.

Equipment and other direct-cost variance

Equipment and miscellaneous direct costs are often smaller than labor or materials, but recurring misses still matter.

Examples include:

  • rental equipment kept longer than expected;
  • additional mobilization;
  • job-specific fuel;
  • disposal;
  • permit cost;
  • delivery charges;
  • temporary equipment;
  • site access fees;
  • other job-specific costs.

Again, classify the cause.

A rental extending because the job ran five days late is likely connected to a broader productivity or schedule problem.

A permit fee omitted from the estimate is an estimate error.

A disposal charge assigned to the wrong project is a data problem.

Avoid treating the category name as the diagnosis.

Revenue variance: did the job earn what the estimate assumed?

Profit leaks do not occur only on the cost side.

Revenue can change too.

Suppose estimated revenue was:

$20,000

but actual revenue was:

$19,200.

Possible causes include:

  • discounting;
  • customer credit;
  • scope removed;
  • unapproved extra work;
  • a change order never documented;
  • a change order documented but never billed;
  • final invoicing lower than the pricing assumption;
  • revenue recorded against the wrong job.

An unfavorable revenue variance deserves the same attention as an unfavorable cost variance.

Favorable revenue variance

Revenue may rise because of:

  • approved change orders;
  • additional scope;
  • additional billable work.

That does not automatically mean the job improved.

If revenue increased by $2,000 but costs increased by $3,000, the job still lost expected profit.

Unfavorable revenue variance

Revenue may fall while costs remain unchanged.

That can destroy margin even when field execution was perfectly efficient.

This is why contractors should analyze:

revenue variance and cost variance together.

A cost overrun can sometimes be commercially acceptable if it came with enough additional revenue.

Unbilled scope cannot.

Overhead variance: cost problem or allocation problem?

Allocated overhead deserves a different diagnostic approach.

Suppose the job estimate included:

$2,000 allocated overhead

but actual analysis assigns:

$2,500.

That does not necessarily mean annual company overhead suddenly increased by $500.

The allocation may have changed because the job consumed more of the driver used by your company.

For example:

Labor-hour allocation

More actual field hours than estimated

→ more overhead assigned to the job.

Direct-cost allocation

Higher actual job costs

→ higher allocated overhead.

Revenue-based allocation

Actual revenue changed

→ allocation changes accordingly.

The root cause may therefore be:

  • a changed activity driver;
  • an outdated allocation rate;
  • an inconsistent estimate-vs-actual method;
  • a company-level overhead assumption that needs updating.

If the issue is the company-level overhead itself, revisit the Contractor Overhead Calculator.

If annual overhead is still correct but individual jobs are carrying unreasonable amounts, the problem may be the allocation method, not the total overhead pool.

Do not “fix” an overhead variance by changing job prices until you know which issue you have.

Contribution can expose a different problem than Job Profit

A job can miss Job Profit for two very different reasons.

Direct economics deteriorated

Revenue did not adequately cover:

  • labor;
  • materials;
  • subcontractors;
  • equipment;
  • other direct job costs.

In that case, contribution after direct costs deteriorates before allocated overhead is even considered.

That points toward:

  • estimating;
  • productivity;
  • material/subcontractor assumptions;
  • scope control;
  • revenue.

Direct economics were close to plan, but Job Profit still missed

Contribution may remain near estimate while Job Profit after allocated overhead falls significantly.

That points more toward:

  • overhead allocation;
  • company overhead assumptions;
  • the relationship between pricing and overhead recovery.

This distinction prevents every margin problem from being diagnosed as “our job costs were too high.”

Sometimes the direct job performed reasonably well and the overhead model exposed a different issue.

One large variance vs many small profit leaks

Not every underperforming job has one obvious failure.

One large variance

Example:

A material package costs $5,000 more than planned.

That may be traced to one:

  • pricing error;
  • scope omission;
  • supplier change;
  • execution problem.

Many small leaks

Example:

  • Labor: $500 over
  • Materials: $350 over
  • Equipment: $200 over
  • Other costs: $150 over
  • Revenue: $500 below estimate

No single line looks catastrophic.

Together, they reduce expected Job Profit by:

$1,700

This is where “profit leaks” become useful language.

Small estimating misses, wasted hours, unbilled scope, and miscellaneous costs can accumulate into meaningful margin erosion.

The diagnostic process is the same:

identify each variance → classify the cause → decide whether it is recurring.

Classify the cause before changing your estimate

Every material variance should ultimately fit into one of five useful root-cause groups.

Estimate error

The original estimate was wrong.

Examples:

  • labor hours underestimated;
  • material missing;
  • subcontractor allowance too low;
  • equipment requirement omitted;
  • expected revenue overstated.

Corrective action:

update the estimating assumption.

Rate or price change

The amount of work or material was approximately correct, but the unit cost changed.

Examples:

  • wage change;
  • labor burden change;
  • material price increase;
  • subcontractor price increase;
  • rental-rate increase.

Corrective action:

update the cost rate or supplier assumption.

Productivity or execution

The estimate may have been reasonable, but actual performance consumed more resources.

Examples:

  • rework;
  • waste;
  • slow production;
  • poor job sequencing;
  • inefficient crew;
  • unnecessary supplier runs;
  • equipment idle time.

Corrective action:

improve execution and decide whether future productivity assumptions should also change.

Scope change

The job changed.

Examples:

  • customer requested extra work;
  • hidden condition discovered;
  • design/specification changed;
  • additional subcontractor scope required.

Corrective question:

Was corresponding revenue approved and captured?

If yes, both cost and revenue should be reviewed.

If not, the leak may be in change-order management.

Coding or data problem

The variance may not represent economic reality at all.

Examples:

  • time assigned to the wrong job;
  • supplier invoice coded incorrectly;
  • revenue recorded elsewhere;
  • duplicate invoice;
  • cost omitted from one job and assigned to another.

Corrective action:

fix the data before changing operational or pricing assumptions.

This category is especially important.

Bad data can make a good estimate look wrong and cause the business to “correct” something that was never broken.

Example: a profitable job that still leaked margin

Consider a contractor who estimated:

Job Revenue: $20,000

Expected Job Profit: $6,000

Expected Job Margin: 30%

The completed job produced:

Actual Revenue: $21,000

Actual Job Profit: $5,100

Actual Job Margin: 24.3%

The job still made money.

It also missed its expected economics.

Suppose the major variances were:

  • Revenue: +$1,000
  • Labor: +$1,000 cost
  • Materials: +$500 cost
  • Equipment: +$200 cost
  • Allocated Overhead: +$200
  • Other categories: approximately on estimate

At first glance, the additional $1,000 of revenue looks favorable.

But the additional costs total:

$1,900

The revenue gain only offsets part of the cost increase.

Expected Job Profit:

$6,000

Actual Job Profit:

$5,100

Profit variance:

$900 below expectation

The next question is not:

Should we add 5% more markup to every job?

The next questions are:

  • Why was labor $1,000 over?
  • Why were materials $500 over?
  • Was the extra $1,000 revenue associated with the same scope changes that created extra cost?
  • Why did overhead allocation increase?
  • Are these one-time issues or recurring patterns?

Only then should the next estimate change.

Do not automatically fix a bad job by raising markup

Raising prices may be appropriate.

But it should not be the first automatic response to every underperforming job.

Suppose labor cost was over estimate because the estimator assumed:

60 hours

for work that consistently requires:

80 hours.

Increasing markup on the inaccurate 60-hour estimate may improve price, but the estimate itself is still wrong.

Or suppose a material overrun came entirely from preventable waste.

Higher markup may recover more money but does not address the execution problem.

A more disciplined sequence is:

  1. correct cost assumptions;
  2. correct productivity assumptions;
  3. correct scope/revenue control;
  4. verify overhead treatment;
  5. then evaluate the selling price.

Once the cost basis is credible, use the Contractor Markup Calculator to evaluate future selling prices under your chosen pricing method.

Pricing is the final response to accurate cost information, not a substitute for it.

Turn completed jobs into better estimates

The real value of estimated-vs-actual analysis appears on the next job.

Use a simple review process.

1. Compare the expected and actual financial result

Start with:

  • revenue;
  • Job Profit;
  • Job Margin.

2. Identify the largest dollar variances

Focus on categories that materially affected the outcome.

3. Classify each important variance

Use:

  • estimate error;
  • rate/price change;
  • productivity/execution;
  • scope change;
  • coding/data problem.

4. Separate one-time events from recurring patterns

One unusual equipment failure should not automatically change every future estimate.

Five similar labor overruns probably should.

5. Update the relevant input

Examples:

Labor hours consistently low:

→ update labor-hour estimate.

Productive labor cost outdated:

→ update labor-cost assumption.

Material prices changed:

→ update unit prices.

Waste recurring:

→ update process and possibly waste allowance.

Overhead assumptions stale:

→ update company overhead/recovery input.

6. Reprice future work from corrected economics

Only after the underlying cost assumptions are corrected should future selling-price decisions be evaluated.

7. Repeat

A single post-job review is useful.

A consistent review process becomes an estimating feedback loop.

Look for patterns across jobs, not just one bad project

One project can mislead you.

Weather, site access, customer changes, equipment failure, or an unusual crew can make a single job unrepresentative.

Patterns across similar jobs are more valuable.

Labor repeatedly over estimate

Possible signal:

  • labor-hour assumption too aggressive;
  • production standard unrealistic;
  • crew mix wrong;
  • recurring rework.

Materials repeatedly over

Possible signal:

  • takeoffs incomplete;
  • waste assumption too low;
  • supplier pricing outdated.

Direct costs accurate but margin repeatedly falls

Possible signal:

  • overhead recovery problem;
  • pricing problem;
  • revenue leakage.

Revenue repeatedly below estimate

Possible signal:

  • discounting;
  • unbilled extras;
  • weak change-order process;
  • quoting assumptions not reaching final invoice.

“Variances” disappear after bookkeeping cleanup

Possible signal:

  • cost coding and job assignment need improvement.

Do not build a complicated multi-job analysis system just to recognize these patterns.

Even a simple monthly review of completed jobs can show whether the same issue keeps appearing.

The bottom line

Estimated-vs-actual job costing is useful because it tells you where reality differed from the plan.

But the variance itself is only the beginning.

A useful post-job review follows this sequence:

Variance

Category

Root cause

Corrective estimating or pricing input

The five root-cause categories are:

  1. estimate error;
  2. rate or price change;
  3. productivity or execution;
  4. scope change;
  5. coding or data problem.

Do not raise prices because one number is red.

Do not change labor assumptions because material cost moved.

Do not increase markup because a job was coded incorrectly.

Find the cause first.

Then correct the assumption that actually failed.

That is how completed jobs stop being historical reports and start improving the economics of the next estimate.