Why your job cost reports show 24 percent and your year ends at 4 percent
Jobs look profitable. The year-end P&L tells a different story. The gap is overhead never charged to individual jobs, and fixing it starts with one number.

A general contractor we work with tracked every project in job costing software. Materials, labor, and subcontractors posted to each job number. When a project closed, the report showed the margin.
The reports consistently showed margins between 18 and 26 percent. On $2.4M in annual revenue, that implied somewhere between $432,000 and $624,000 in gross profit.
The year-end Profit and Loss (P&L) showed $78,000.
Nothing was wrong with the job cost tracking. The problem was what the reports never included.
What overhead is and why it does not appear in job reports
Overhead is the cost of running the company that cannot be tied to a single job. The owner’s time estimating next week’s bid. The shop lease. The three company trucks. Because these costs belong to the company rather than to a specific project, they stay in the general ledger as operating expenses instead of appearing in a job cost report. Every job looks profitable. The company is not.
Most job cost reports track three things: materials, direct labor on site, and subcontractors. Those are direct job costs. They exist because of that specific contract. Overhead costs exist regardless of which jobs are active. That distinction is why they never appear in the job cost report, and why the job margin and the company margin are two different numbers.
Four overhead categories that rarely appear in job reports
Owner’s time. Most contractors charge their on-site hours to the job. The time spent estimating next week’s bid, calling subcontractors, driving to the permit office, and meeting with a prospective client goes untracked. On $2.4M in revenue, an owner working 45 hours a week at a market rate for construction management can represent $120,000 to $140,000 per year in overhead that no job is absorbing.
Office and shop costs. Rent on the office or warehouse, utilities, admin software, and supplies accumulate to a fixed annual cost. A modest setup runs $60,000 to $80,000 per year. Every project uses these resources. No project is charged for them.
Company vehicles. Three work trucks with loan payments, commercial insurance, registration, fuel, and maintenance add up to $80,000 to $100,000 per year. Every truck spends most of its time tied to a job. None of that cost appears in any job cost report.
Tools and equipment. Small tools get expensed when purchased. Larger equipment spreads its cost over the years it is used, a process called depreciation. Neither shows up in the job cost report as a job-level cost. A year of equipment replacements and depreciation on a $2.4M operation can easily reach $50,000 or more.
For the contractor in this example, those four categories came to $130,000 in owner time not charged to jobs, $72,000 in office and shop costs, $90,000 in vehicle expenses, and $52,000 in tools and equipment. With software, professional fees, and other smaller line items, the total overhead pool reached $378,000. On $2.4M in revenue, that is an overhead rate of about 16 percent.
What one job looks like with overhead included
Here is the cost breakdown on a $95,000 kitchen addition, first as the job cost report showed it and then with overhead applied.
| Cost line | Job report | With overhead |
|---|---|---|
| Direct materials | $37,000 | $37,000 |
| Direct labor | $26,000 | $26,000 |
| Subcontractors (HVAC rough-in) | $9,000 | $9,000 |
| Overhead allocation (16% of contract) | - | $15,200 |
| Job margin | $23,000 (24%) | $7,800 (8%) |
The 16 percent rate comes from dividing total annual overhead of $378,000 by revenue of $2.4M. Applied to the $95,000 contract, it adds $15,200 in costs that the job report did not include.
At 8 percent, the job still contributed to company profit. But a contractor who bids expecting 24 percent will accept work that actually returns 8. On a discounted change order she believes is profitable at 18 percent, the real return may be closer to 2.
Why the gap matters at the next bid
The bid template inherits the job history. If closed jobs appear to yield 22 percent, the next estimate is built expecting 22 percent. When overhead is not allocated, that margin is partly an illusion. The actual return is closer to 6 to 8 percent, and the only place that truth appears is the annual P&L.
A contractor who grows revenue without fixing the overhead allocation problem does not grow out of it. A second truck, a larger shop, or a project manager hired to handle the workload all add to the overhead pool without appearing in any job report. The gap between reported job margin and actual company margin grows with the company.
How to calculate and apply an overhead rate
The fix is one number: the overhead rate.
Divide total annual overhead by total revenue. For most residential and light commercial contractors, the rate falls between 12 and 20 percent, depending on company size, vehicle count, and whether the owner draws a market-rate salary.
Apply it in two places. First, in every estimate: include an overhead line equal to the rate multiplied by the contract value. Second, in every closed-job review: subtract the overhead allocation from the reported margin before recording the true return on that project.
For construction clients we work with, we set the rate at the start of each year using prior-year actuals as the baseline and review it mid-year if the cost structure changes.
Best practices for overhead tracking
A few practices that keep the numbers accurate:
- Calculate an overhead rate at the start of each year. Adjust it if you add vehicles, hire office staff, or expand into a larger shop.
- Apply the rate in every estimate as a separate line item. Do not fold it into the markup percentage. Keeping it visible makes it easier to update and to explain internally.
- Include overhead in every closed-job review. Compare the reported margin to the fully loaded margin. The difference is what the company paid out of company funds that the job did not recover.
- Pay yourself a market-rate salary for the work you do, and include that salary in the overhead pool. Treating an absent salary as a cost savings produces an overhead rate that is too low and bids that recover less than they appear to.
Three questions worth asking
If you are not sure how overhead is handled in your job costing today:
- What is the total of company costs not charged to any job number, and what percentage of annual revenue does that represent?
- When you review a closed job, does the margin calculation stop at direct materials, labor, and subcontractors, or does it include an allocation for company overhead?
- On the last three jobs that showed margins above 20 percent in the job cost report, what did those same jobs return after applying the company overhead rate?
If those questions are hard to answer, the job cost reports are showing direct-cost margins, not company-level margins. The year-end P&L is the only place the full picture currently appears.
Send us a year of closed-job reports alongside the annual P&L. We will calculate the overhead gap, set a rate, and show you what each of those jobs actually returned once the full cost of running the business is included.
- MATERIALS$37,000 for lumber, fixtures, and finishes
- DIRECT LABOR$26,000 in crew hours billed to this job
- SUBCONTRACTORS$9,000 for HVAC rough-in on site
- REPORTED MARGIN$23,000, or 24 percent of the $95,000 contract
- OWNER'S TIME$130,000 per year in management and estimating
- OFFICE AND SHOP$72,000 per year in rent, utilities, and admin
- COMPANY VEHICLES$90,000 per year across three trucks, fuel, and insurance
- TOOLS AND EQUIPMENT$52,000 per year in depreciation and replacement
Want a second set of eyes on your books?
30 minutes on Zoom. We'll look at your books and tell you what's working and what isn't.
Book a call