Small Jobs vs Big Jobs — Where Contractor Profit Actually Lives

49% of all contractor revenue comes from 1% of jobs.
That's not a typo. Across 1.5 million contractor jobs with hours logged — representing $7.8 billion in total revenue — just 15,840 jobs in the 80-200 labor hour range generated $4.25 billion. Meanwhile, 767,000 jobs under 4 hours produced $697 million. Over half the jobs by count, 9% of revenue.
Most contractors intuitively know their big projects drive the top line. Few have quantified how extreme the concentration actually is — or what it means for where you should focus your cost-tracking attention.
The Revenue Map
Here's how 1.5 million jobs break down by labor hours logged:
| Duration | Jobs | Avg Revenue | Total Revenue | Avg Hours |
|---|---|---|---|---|
| Under 4 hours | 767,554 | $907 | $697M | 2.4 |
| 4-8 hours | 345,934 | $1,401 | $485M | 6.0 |
| 8-24 hours | 279,259 | $3,211 | $897M | 13.8 |
| 24-80 hours | 86,858 | $9,810 | $852M | 40.2 |
| 80-200 hours | 15,840 | $268,101 | $4.25B | 121.0 |
| Over 200 hours | 6,599 | $91,750 | $606M | 639.9 |
The concentration is staggering. Jobs under 24 hours — service calls, diagnostics, one-day repairs — make up 93% of all jobs by count but only 27% of revenue. The 80-200 hour tier, mostly commercial projects and large installations, represents about 1% of jobs and nearly half the dollars.
This creates a fundamental tension in how contractors allocate management attention, cost-tracking resources, and pricing strategy.
Revenue Per Labor Hour: Small Jobs Win
Here's the number that surprises most owners — revenue generated per labor hour, by job size:
| Duration | Revenue Per Labor Hour |
|---|---|
| Under 4 hours | $378 |
| 4-8 hours | $234 |
| 8-24 hours | $233 |
| 24-80 hours | $244 |
| Over 200 hours | $143 |
Your shortest service calls generate $378 per labor hour deployed. Your longest projects generate $143. That's a 2.6x efficiency gap.
The 80-200 hour tier is excluded from this table because those jobs show $2,215 per labor hour — an artifact of large commercial projects where the total job amount includes substantial materials, equipment, and subcontractor costs alongside relatively few logged labor hours. Strip out the non-labor components and the rate falls in line with the rest of the curve.
But the pattern on either end is real and structural. Short service calls are labor-dominated — a tech shows up, diagnoses, repairs, bills. The revenue is almost entirely labor at full markup. Long projects are materials- and sub-heavy, with labor representing a smaller share of the total. The effective return per hour of your own people's time diminishes as job complexity and duration grow.
This doesn't mean you should only run service calls. It means your service operation is probably subsidizing your project margins — and if you're not tracking costs at the job level, you can't see it happening.
The Margin Data Is Lying to You
Now for the uncomfortable part. When I looked at margin data across 1.85 million jobs with cost records, here's what the system shows:
| Job Size | Jobs | Avg Margin | Total Revenue |
|---|---|---|---|
| Under $500 | 643,528 | -349% | $183M |
| $500-$2K | 723,004 | -3,721% | $740M |
| $2K-$10K | 375,933 | -2,174% | $1.6B |
| $10K-$50K | 91,888 | 48.3% | $1.84B |
| $50K-$100K | 10,738 | 88.2% | $741M |
| Over $100K | 8,700 | 92.8% | $7.97B |
A -3,721% average margin on $500-$2K jobs? A 92.8% margin on $100K+ projects? Neither number is real.
The negative margins on small jobs are phantom losses caused by incomplete cost tracking. When a tech runs a $1,200 service call and nobody enters the labor or materials cost, the system shows $1,200 revenue with $0 cost — until someone miscodes a large expense against that small job. Suddenly a $1,200 job has $45,000 in costs. The average goes haywire.
The 88-93% margins on large jobs are the inverse problem. Nobody is making 93% on a $100K project. The revenue is recorded because it's tied to an invoice. But the labor hours, materials, and sub costs were never tagged to the job number. Revenue of $100K, recorded cost of $7K, reported "margin" of 93%.
This is the same phantom margin problem I've written about before, but the job-size lens makes it worse. The smaller the job, the less likely anyone enters costs. A $200K commercial project might get some cost tracking because a project manager is watching it. A $900 service call? Nobody's entering the $40 capacitor and 2.4 hours of tech time against the job number. And if costs aren't being entered, there's a good chance some of those jobs aren't being invoiced at all.
The result: 91% of jobs in our dataset have no meaningful cost data. Your blended margin is calculated on incomplete records. Your job profitability report is fiction.
What This Means for Your Business
The contractors who outperform don't just win on pricing or volume. They win on information — specifically, knowing which jobs make money and which ones don't.
Your small jobs are your cash flow engine. 767,000 service calls at $907 average revenue means high velocity, low complexity, and fast collection. These jobs fill the week, keep techs utilized, and generate cash daily. At $378 per labor hour, they're your highest-return work on a per-hour basis. But if you're not tracking costs, you can't tell the profitable service calls from the money-losers — and every contractor has both.
Your big jobs drive the top line but concentrate risk. When half your revenue sits in 1% of your jobs, each one matters enormously. A single $268K project that goes sideways can wipe out the profit from hundreds of service calls. This is why tracking quoted vs. actual costs on large jobs isn't optional — it's survival.
Revenue per tech is the throughput check. Industry benchmarks for revenue per technician: top 10% generate $180K-$280K annually, the average sits at $130K-$160K, and the bottom quartile produces $80K-$120K. If your techs are below $130K, the problem is usually a mix of utilization, pricing, and scheduling — not the techs themselves.
Track costs on everything — especially the small jobs. The information advantage isn't knowing your margin on a $200K project (you're probably already watching that one). It's knowing your margin on the 767,000 service calls that make up 51% of your job volume. Set up your job costing in QuickBooks or FSM to capture labor hours and materials on every job, regardless of size. The companies that do this can identify unprofitable service types, reprice surgically with the right pricing model, and stop doing work that loses money — a capability that 91% of contractors in our dataset simply don't have.
The Bottom Line
The revenue math is clear: a handful of large projects drive your top line, but your service calls generate the highest return per labor hour. Both matter. The danger is managing your business on revenue alone and ignoring the profitability of the 93% of jobs under 24 hours that keep your operation running every day.
But the bigger insight is that most contractors can't answer the basic question — which jobs are actually profitable? — because costs aren't tracked at the job level. Fix that first. Everything else — pricing strategy, mix optimization, crew allocation — depends on data you probably don't have yet.
Q: Does this mean I should focus on small service work instead of big projects? A: No. You need both. Big projects drive revenue scale — you can't build a $10M company on $900 service calls alone. But you should know the true margin on both job types. Many contractors discover their project work is break-even after proper cost allocation while their service work runs at 40%+ margins. That changes how you price, staff, and pursue work. The answer isn't to abandon projects — it's to price them correctly and manage scope aggressively.
Q: How do I start tracking costs on small jobs when my techs barely fill out timesheets? A: Start with time. If your FSM software has a clock-in/clock-out feature per job, enforce it. That single data point — actual hours per job — gives you labor cost per job when combined with loaded hourly rates. Materials can come next via PO tagging or truck stock reconciliation. The QuickBooks job costing setup guide walks through the implementation step by step. Most contractors can get clean labor data flowing in 2-3 weeks with consistent enforcement.
Q: What's a realistic margin target for small service work vs. project work? A: For service calls and repairs (under $2K): target 40-55% gross margin, with labor margins above 45%. For commercial projects ($50K+): target 20-35% gross margin depending on materials and sub intensity. If your service agreements are running below 35%, they're underpriced. If your projects are showing above 40% gross margin, double-check that all costs — especially labor burden and subcontractor invoices — are actually hitting the job. A free profitability audit is the fastest way to find out.
About the author
Sam Young
Founder of Level. Former private equity investor and investment banker. Built AI-powered accounting products while building financial products for 1,000+ commercial contractors — benchmarking financial data across 2,200+ contractors in HVAC, plumbing, electrical, and mechanical trades. Operations analytics work with PE-backed contractor portfolios across the trades. Co-founded a real estate tax optimization firm, where his team has analyzed over $1B in real estate assets. Stanford MBA.
LinkedIn