Names changed. Numbers real.
Mike runs a commercial remodeling company in Houston. Twenty employees, $2.2M in annual revenue, and projects booked out 4 months in advance.
And yet, he was broke.
Not "business is slow" broke or "waiting on receivables" broke. He was actively bleeding cash despite a full project schedule.
When he called me in March 2024, his frustration was clear:
"I don't understand what's happening. We're busy. We're billing. But there's never money in the account. My accountant says everything looks fine, but I can't make payroll without a line of credit."
I see this more often than you'd think. The symptoms are always the same:
- Revenue looks good on paper
- Jobs are getting done
- Clients are paying
- But cash disappears faster than it comes in
And nobody knows why.
Key Takeaways
- A 30% "average" margin was hiding the truth. Five jobs earned 34% margin. Eight jobs lost 17%. Mike had no idea which was which.
- $200K in value was destroyed over 18 months through direct job losses, unallocated equipment costs, scope creep without change orders, and absorbed material increases.
- The fix took 4 weeks: construction-specific software, estimating templates, change order process, weekly job reviews, and team training.
- Results in 6 months: Average margin jumped from 8% to 28%. Cash position improved by $105K. Change orders recovered $67K.
- Tax recovery totaled $71K from amended returns, corrected estimated payments, and proper equipment depreciation.
- If you can't name the margin on your last 10 jobs, you have this same problem. You just don't know it yet.
Table of Contents
The Problem (Spoiler: It Wasn't What He Thought)
Mike thought he had a collections problem. Some clients were slow-paying, a few invoices were stuck in dispute, and he figured that was the main issue.
It wasn't.
When I pulled his financials for the previous 18 months, here's what I found:
| Quarter | Revenue | Gross Profit (Reported) | Net Profit | Cash Position |
|---|---|---|---|---|
| Q3 2023 | $520K | $156K (30%) | $28K | -$12K |
| Q4 2023 | $580K | $174K (30%) | $18K | -$31K |
| Q1 2024 | $610K | $183K (30%) | -$5K | -$58K |
Revenue was growing, and his gross profit margin looked consistent at 30%. But cash was vanishing.
That 30% margin was a lie. It was an average across all jobs — some making 45%, some losing 20%. Mike had no idea which was which because nobody was tracking actual job costs.
What Job Costing Should Look Like (But Didn't)
Proper job costing tracks every dollar that goes into a project:
Direct Costs:
- Labor (hours × rate, per job)
- Materials (actual purchases allocated to job)
- Subcontractors (payments tied to specific jobs)
- Equipment rental (job-specific)
Indirect Costs (Allocated):
- Shop overhead
- Vehicle costs
- Tools and consumables
- Insurance and bonds
The result: actual job margin (not estimated), real-time profitability visibility, and data to bid future jobs accurately.
Mike's system? None of this existed.
What Mike Was Actually Doing
His "accounting system" worked like this:
- Estimate a job (usually based on feel, not data)
- Submit bid with 30% margin built in
- Win job, start work
- Pay for materials as needed (sometimes allocated to job, sometimes to a general "materials" account)
- Pay labor (tracked by employee, not by job)
- Pay subs (sometimes he remembered which job, sometimes not)
- Bill the client based on the contract
- Hope there was money left over
His accountant produced a P&L every month that showed Total revenue: $X, Total costs: $Y, Gross profit: 30%. But that 30% was just an average. Some jobs made 45%. Some lost 20%. Mike had no idea which was which.
The $200K Discovery
I spent 3 days reconstructing his last 12 months of jobs. We pulled bank statements, credit card statements, payroll records, subcontractor invoices, and completed job files to compare bid vs. actual.
It was ugly. But here's what we found:
The Winners (5 Jobs, ~23% of Revenue)
| Job | Bid | Actual Cost | Profit | Margin |
|---|---|---|---|---|
| Office renovation | $185K | $122K | $63K | 34% |
| Retail buildout | $240K | $155K | $85K | 35% |
| Restaurant remodel | $160K | $110K | $50K | 31% |
| Medical office | $210K | $140K | $70K | 33% |
| Warehouse conversion | $95K | $62K | $33K | 35% |
| Total | $890K | $589K | $301K | 34% |
These jobs were well-scoped, materials came in on budget, and labor was efficient. They were exactly what Mike thought all his jobs looked like.
The Losers (8 Jobs, ~41% of Revenue)
| Job | Bid | Actual Cost | Profit | Margin |
|---|---|---|---|---|
| Strip mall renovation | $220K | $245K | -$25K | -11% |
| Church remodel | $180K | $210K | -$30K | -17% |
| Condo complex common areas | $310K | $365K | -$55K | -18% |
| Retail chain (3 locations) | $420K | $485K | -$65K | -15% |
| Office tower lobby | $95K | $115K | -$20K | -21% |
| Industrial warehouse | $140K | $165K | -$25K | -18% |
| Medical clinic expansion | $75K | $98K | -$23K | -31% |
| Dental office buildout | $105K | $128K | -$23K | -22% |
| Total | $1,545K | $1,811K | -$266K | -17% |
Eight jobs. Every single one lost money. And Mike had absolutely no idea until we reconstructed the numbers.
The remaining ~36% of revenue was roughly break-even — some small profit, some small loss, averaging out to near zero.
What Went Wrong (The Patterns)
Once we had the data, the patterns were obvious:
Problem #1: Scope Creep With No Change Orders
Example: Church remodel
- Original scope: repaint interior, refinish floors, update lighting
- Actual work: all of the above plus a surprise structural repair when they opened a wall, client-requested design changes midstream, and an extended timeline due to coordination with church events
- Change orders submitted: $0
- Cost overrun: $30K
Mike was doing the extra work to "keep the client happy" without charging for it.
Problem #2: Underestimating Labor
Example: Condo complex common areas
- Bid assumed: 320 labor hours
- Actual: 510 labor hours
- Reason: The job required weekend/evening work (the building was occupied), more coordination than expected, and rework due to HOA feedback
Mike's bids were based on "how long it should take" in ideal conditions. Reality was never ideal.
Problem #3: Material Cost Inflation Mid-Job
Example: Strip mall renovation
- Bid in June 2023 based on supplier quotes
- Work started September 2023
- Actual material costs: 18% higher than quoted
- Mike absorbed the difference
There were no escalation clauses in his contracts. No mechanism to pass through cost increases.
Problem #4: Subcontractor Overruns
Example: Retail chain (3 locations)
- Electrical sub bid $45K
- Actual: $72K
- Reason: The locations had different existing conditions than the drawings showed, and the sub billed Time & Materials for discovery work
Mike's GC contract with the client was fixed-price, but his sub agreements were T&M. He was taking all the risk.
Problem #5: Not Tracking Equipment Costs Per Job
Mike owned a lot of equipment: a skid steer, lifts, trailers, and specialty tools. He thought of them as "already paid for," so he didn't allocate their cost to jobs. But equipment depreciates, breaks, and costs fuel, maintenance, and insurance — all of which should be allocated.
Estimated unallocated cost: $3,500-$5,000 per job that used equipment. Over 12 jobs that needed heavy equipment, that's $42K-$60K in costs that never hit the job P&L.
The $200K Breakdown
Here's the real math:
| Category | Amount |
|---|---|
| Direct losses on 8 jobs | -$266K |
| Unallocated equipment costs | -$50K |
| Scope creep without change orders | -$85K |
| Material cost increases absorbed | -$40K |
| Total value destroyed | -$441K |
| Minus: Profit from 5 winning jobs | +$301K |
| Net impact | -$140K |
But we're not done. Because Mike was also:
- Paying interest on a line of credit to cover cash shortfalls (~$18K/year)
- Missing early payment discounts from suppliers because cash was tight (~$12K/year)
- Underpaying himself because "there's no money" (~$30K/year less than the market rate for a $2M GC owner)
Approximately $200K in value lost, forgone, or paid unnecessarily. And the worst part: Mike was working 60-hour weeks just to lose money.
The Fix
We implemented a real job costing system in 4 weeks. Here's what changed:
Week 1: Software Setup
We moved him to Foundation (construction-specific accounting software). Key features: job costing built in, time tracking by employee by job, purchase orders tied to jobs, and budget vs. actual reporting.
Cost: $250/month. ROI: Paid for itself in the first month.
Week 2: Process Design
We built:
- Estimating template with a line-item cost breakdown (labor hours, material quantities, sub costs, equipment, overhead allocation)
- Change order process (anything outside the original scope became an automatic change order, with no exceptions)
- Weekly job review (every active job was reviewed for budget vs. actual, flagging overruns immediately)
- Monthly job close-out (final cost reconciliation, lessons learned documentation)
Week 3: Team Training
Mike's project manager and office admin learned how to log time to jobs, allocate purchases, run budget vs. actual reports, and spot a problem job before it was too late.
Week 4: Active Job Audit
We reviewed every active job: set up job budgets based on contracts, identified 2 jobs already over budget, submitted change orders for scope creep (recovered $18K), and flagged jobs to watch closely.
The Results (6 Months Later)
September 2024 check-in:
| Metric | Before | After | Change |
|---|---|---|---|
| Average job margin | 8% (actual) | 28% | +20% |
| Jobs finished over budget | 65% | 15% | -50% |
| Cash position | -$58K | +$47K | +$105K |
| Line of credit usage | $85K | $12K | -$73K |
| Change orders submitted | ~$0 | $67K | +$67K |
| Time to spot problem job | Never | 1-2 weeks | ∞ |
What changed:
- Mike stopped bidding blind. Every estimate now had real data behind it (labor hours from similar past jobs, actual material costs, and real sub quotes).
- Scope creep became billable. The change order process meant every "small favor" got priced and charged.
- Problem jobs got caught early. Weekly reviews flagged overruns when there was still time to fix them.
- Pricing improved. Mike raised prices 12% on new bids because he finally knew his real costs. His win rate dropped slightly (72% to 68%), but profit per job tripled.
- Cash flow stabilized. Knowing which jobs were profitable let Mike focus on high-margin work and stop chasing revenue that lost money.
Most importantly: Mike started paying himself properly — a $120K salary (market rate for his role) instead of the $75K he'd been scraping together.
The Tax Piece (Why This Is on a CFO Blog)
Here's the kicker: Mike's accountant was filing accurate tax returns.
The P&L showed what it showed. The taxes were calculated correctly. The returns were filed on time.
But nobody was asking: "Are these numbers real?"
When we implemented job costing and discovered the $200K problem, we also found:
- Mike had been overpaying taxes on phantom profit (jobs that looked profitable on paper but lost money in reality)
- His basis in equipment was much higher than depreciation schedules showed
- Several "profitable" years were actually break-even or losses when job costs were allocated correctly
- Amended returns for 2 prior years: recovered $31K in overpaid taxes
- Adjusted current year estimated payments: saved $18K in unnecessary quarterly payments
- Corrected equipment depreciation schedules: additional $22K deduction
This is why job costing isn't just an operational issue — it's a tax issue. If your financials are wrong, your taxes are wrong. Our Tax Planning Services exist precisely because this overlap is so common.
How to Know If You Have This Problem
Mike isn't unique. I see this in contractors who bid fixed-price but run jobs on feel, professional service firms that don't track profitability per client, and any business where projects are the unit of work.
Answer these questions:
Job Costing Self-Assessment
- Can you list your last 10 jobs/projects and tell me the actual profit margin on each?
- Do you track labor hours by job?
- Do you allocate material purchases to specific jobs at the time of purchase?
- Do you know which types of jobs are most profitable for you?
- Do you have a systematic process for change orders?
- Do you review job profitability while the job is still in progress?
- Can you produce a report showing budget vs. actual for any active job right now?
- Do you use past job data to improve future estimates?
If you answered "No" to 3 or more: You probably have a job costing problem.
If you answered "No" to 5 or more: You definitely have a job costing problem, and it's costing you 5-15% of your revenue. On a $2M business, that's $100K-$300K per year.
What to Do About It
- Get real numbers. Pick your last 12 months of completed jobs. For each one, reconstruct actual labor cost, material cost, subcontractor cost, allocated overhead, and actual margin. This is painful, but do it anyway.
- Implement job costing software. Foundation ($250/mo), QuickBooks Contractor Edition ($500/yr), Buildertrend ($400/mo), or CoConstruct ($300/mo). The software matters less than using it consistently.
- Train your team. Everyone who touches a job needs to know how to allocate costs to the right job, track time properly, run reports, and flag overruns.
- Build the habits. Weekly job review (budget vs. actual), monthly job close-out, estimating templates based on real data, and a change order process where scope creep = billable.
Frequently Asked Questions
Tom Woolley, MBA
Job costing tracks every dollar that goes into a specific project: direct costs (labor hours × rate per job, materials allocated to job, subcontractor payments, equipment rental), and indirect costs allocated per job (shop overhead, vehicle costs, tools, insurance). The result is an actual job margin — not an estimate — that gives you real-time profitability visibility and data to bid future jobs accurately. Without it, your P&L shows an average margin across all jobs, hiding which ones make money and which ones lose it.
Today CFO
Answer these questions: Can you list your last 10 jobs and tell me the actual profit margin on each? Do you track labor hours by job? Do you allocate material purchases to specific jobs at the time of purchase? Do you have a systematic process for change orders? Can you produce a budget vs. actual report for any active job right now? If you answered 'No' to 3 or more of these, you probably have a job costing problem. If 5 or more, it's likely costing you 5-15% of your revenue.
What is job costing in construction?
Popular options include Foundation ($250/month, construction-specific accounting), QuickBooks Desktop Contractor Edition ($500/year), Buildertrend ($400/month, includes project management), and CoConstruct ($300/month, residential remodel focus). The software matters less than using it consistently. Key features to look for: job costing built in, time tracking by employee by job, purchase orders tied to jobs, and budget vs. actual reporting.
How do I know if my construction company has a job costing problem?
For a typical $2M construction business, poor job costing costs $100K-$300K per year in hidden losses. Sources include: jobs bid based on feel instead of data (leading to underpricing), scope creep performed without change orders, material cost increases absorbed without pass-through clauses, subcontractor overruns on T&M agreements, unallocated equipment costs, plus secondary costs like line of credit interest, missed supplier discounts, and owner underpayment.
What software should contractors use for job costing?
Yes. If your financials are wrong, your taxes are wrong. In this case study, implementing proper job costing revealed that the contractor had been overpaying taxes on phantom profit (jobs that looked profitable on paper but lost money in reality). We amended 2 prior years of returns (recovered $31K), adjusted current year estimated payments (saved $18K), and corrected equipment depreciation schedules ($22K additional deduction) — totaling $71K in tax recovery.
If You Can't Name the Margin on Your Last 10 Jobs, You Have This Problem.
You just don't know it yet. The sooner you know, the sooner you stop the bleeding. Mike was working 60-hour weeks to lose money. Don't be Mike.
Want a Free Job Profitability Diagnostic?
Pick 3 recent jobs. We'll walk through the actual costs, show you what your real margin looks like, and identify if you're losing money — and where. No charge. No obligation. Just data.
Schedule Your Free Assessment