Skip to main content
2,200+ service businesses benchmarked. Do you know your gross profit per labor hour? See where you stand →
Level
Job Costing

Small Jobs vs Big Jobs: Where Contractor Profit Actually Lives

Sam YangEx-CFO across trades, SaaS & services · $2.5B in total PE/banking transactions · Stanford MBA
Updated October 7, 2026·Originally published December 22, 2025·8 minute read
Share

From Level's proprietary contractor research

The legacy job summary puts about half of recorded jobs under four logged labor hours. Its revenue denominator needs reconciliation. The useful decision is which cost-coded jobs produce gross profit per paid hour.

Legacy logged-hours cut; the broader research universe is 2,242 contractors, with narrower samples by metric

8 minute readJob Costing

The retained raw summary puts about half of its recorded jobs under four logged labor hours. That is total job-assigned labor time, not elapsed duration or a confirmed service-call classification. Its roughly 9% raw revenue share is unreconciled and cannot establish current job-mix economics.

The original research summary reported about 1.5 million jobs, $7.8B of revenue, and 767,554 under-four-logged-hour jobs with roughly $697M of revenue. That gives about 51% of the reported job count and 9% of its raw revenue. These are legacy, unreconciled research references: the published table omits the 80-200-hour bucket and that bucket contains a suspect record discussed below. Neither an outlier-filtered revenue denominator nor complete revenue shares can be reproduced from this table. Do not treat the raw 9% or a newly estimated 18% as a current job-mix benchmark. Rebuild the complete, mutually exclusive tiers from retained source records before using a revenue-share comparison.

Most contractors intuitively know their big projects drive the top line. Few have quantified how lopsided the count-versus-dollars split is, or what it means for where you should focus your cost-tracking attention.

The Revenue Map

Here is the legacy, unreconciled logged-hours table. Original figures are preserved for research context; the missing tier means it is not a complete revenue partition:

Logged labor hoursJobsShare of jobsAvg RevenueTotal RevenueAvg Hours
Under 4 hours767,55451.1%$907$697M2.4
4-8 hours345,93423.0%$1,401$485M6.0
8-24 hours279,25918.6%$3,211$897M13.8
24-80 hours86,8585.8%$9,810$852M40.2
Over 200 hours6,5990.4%$91,750$606M639.9

Jobs under 24 logged hours (typically service calls, diagnostics and short repairs; logged hours are not a job-type classification) make up 93% of all jobs by count but about 27% of the raw reported revenue. That share is a legacy reference with the same unresolved denominator, not an outlier-filtered result. The pattern holds in both directions: as job size climbs, count collapses and average revenue climbs.

One tier is excluded from that table, on purpose, and it is worth knowing why. In the 80-200 logged-hour bucket, close to nine tenths of the dollars sit in a single outlier record, one job out of roughly 16,000 in that tier. The revenue on that one record is implausible on its face against the hours logged against it, so it is held out pending review rather than published. The summary does not establish the corrected tier result, so the omission cannot prove that the bucket has no economic difference. No concentration headline is drawn from this cut either: a small number of records hold a large share of all job dollars, so any such figure moves with where the size cut is drawn, and it may not be publishable at all.

This still 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:

Logged labor hoursRevenue 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 gap in revenue per logged hour.

The 80-200 hour tier is excluded from this table for a data-quality reason, not an economic one. A single outlier record, one job out of roughly 16,000 in that tier, holds close to nine tenths of the tier's dollars, and the revenue on it is implausible on its face against the hours logged against it. It is held out pending review. A corrected tier rate is not reproducible from the published summary, so no replacement value or current revenue-share finding is asserted here.

The pattern on either end is consistent in this dataset, but the metric needs care. Revenue per labor hour divides all job revenue, including materials and subcontractor dollars, by logged labor hours. A materials-heavy project would therefore show a higher figure, not a lower one, so materials mix alone cannot explain the gap. Several distinct mechanisms could, and each can be checked in your own data:

  • Minimum charges. Trip, diagnostic and minimum-hour fees spread over 2.4 logged hours lift revenue per hour on short calls.
  • Flat-rate pricing. Short repairs priced by task rather than by the hour can bill well above the hours logged.
  • Unlogged time. Drive time and admin are often not logged against the job. That shrinks the denominator most on short calls.
  • Hour overruns on long jobs. Bid projects that run past budgeted hours add hours without adding revenue.
  • Billing timing. Long jobs still in progress may have hours logged before all revenue is invoiced.

None of these is measured here. Treat the 2.6x gap as revenue throughput, not a return on your people's time.

This doesn't mean you should only run service calls. It raises a hypothesis worth testing: your service operation may be subsidizing your project margins. Revenue per hour cannot prove that, because margin depends on cost. If you're not tracking costs at the job level, you can't see it either way. Once labor and materials are captured on both job types, compare gross profit per paid labor hour, and count loaded labor cost once, inside job cost.

A fictional example with internally consistent assumptions shows why the answer can go either way. Assume a loaded labor cost of $65 per hour.

Fictional jobRevenueMaterials and subsLabor costGross profitGP per paid hour
Service call: 2.4 logged hours plus 1 unlogged drive hour$907$1503.4 x $65 = $221$536$158
Project A: 640 hours, heavy pass-through$91,750$40,000640 x $65 = $41,600$10,150$16
Project B: 640 hours, lighter pass-through$91,750$25,000$41,600$25,150$39
Service call with callback: 7.4 paid hours$907$4007.4 x $65 = $481$26$3.51

In the first fictional service call, service wins on gross profit per hour. With the stated callback and parts cost, it falls below both projects. A project with lower pass-through costs or fewer overrun hours narrows the gap, though. A service call with callbacks or unbilled diagnostics can lose money. Only your own cost-coded jobs can settle it.

The Margin Data Is Lying to You

A separate legacy, unverified dollar-size cut reported roughly 1.85 million jobs with cost records. Original table values are retained as anomaly examples, not current margin benchmarks:

Job SizeJobsAvg MarginTotal Revenue
Under $500643,528-349%$183M
$500-$2K723,004-3,721%$740M
$2K-$10K375,933-2,174%$1.6B
$10K-$50K91,88848.3%$1.84B
$50K-$100K10,73888.2%$741M
Over $100K8,70092.8%$7.97B

A -3,721% average margin on $500-$2K jobs? A 92.8% margin on $100K+ projects? Neither is a reliable operating margin benchmark. Note what this table is. It is a different population from the hours table above: jobs with cost records, bucketed by dollar size rather than hours, averaged per job with no filtering. A few miscoded records swing the means. Its over-$100K bucket may also contain the same record held out above. It is shown only to illustrate the distortion, not as a margin finding.

Extreme negative margins can reflect real losses, miscoding, timing or unstable per-job ratios. Missing costs alone would raise margin, not cause a negative margin. 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. A 93% recorded margin deserves a cost-completeness review; the number alone cannot prove missing cost or rule out a legitimate high-margin job. 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. One hypothesis is that smaller jobs are more likely to lack cost entry. Check this pattern in your own data by counting the share of completed jobs in each size bucket with zero recorded cost. 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. Check invoice status separately; missing cost entries do not establish that a job was never invoiced.

The result is a revenue-only job report. Your blended margin can be calculated on incomplete records, and the job profitability view becomes fiction.

For a cleaner reference point, look at the Level Index job gross margin metric. It is measured per completed job (revenue minus actual cost) across 1,747,089 completed jobs from 1,791 companies. Its median is 44.3%, 6.2% of jobs are negative, and 16% are under 20%. That is a separately filtered contractor population, not a re-cut of the table above, and it is not split by job size or trade.

Free benchmark review

See how your margins benchmark.

We compare your jobs, crews, and service lines against real margin data, then show which gaps deserve the free audit.

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 can be your cash flow engine. In this dataset, 767,554 under-4-hour jobs averaged $907 of revenue: high velocity and low complexity. Revenue is not cash, though. These jobs only turn into daily cash if they are invoiced quickly and collected. Check two things in your own books:

  • Days from job complete to invoice. The Level Index median is 1 day including progress billing and 7 days among post-completion invoicers (n=733 companies).
  • Collection rate. This is cash collected as a share of billed revenue. The Level Index median is 85.1% across 464 contractors.

At $378 of revenue per logged labor hour, short calls bring in the most revenue per hour of your people's time, but that is not yet a margin. If you're not tracking costs, you can't tell the profitable service calls from the money-losers, and many contractors have both.

Your big jobs drive the top line but concentrate risk. Large projects are a fraction of one percent of your job count and carry an outsized share of the dollars, so each one matters enormously. A single large project that goes sideways can wipe out the profit from hundreds of service calls. This is why tracking actual vs. budgeted labor hours on large jobs isn't optional, it's survival. In a separate Level Index cut of 315,393 jobs from 1,391 companies with both budgeted and actual hours, 18.3% ran past 150% of their hour budget, and 40% ran over budget at all.

Revenue per tech is the throughput check. Level does not publish a measured revenue-per-technician distribution. The earlier $180K-$280K top tier, $130K-$160K average and $80K-$120K lower tier have unknown source populations. They remain legacy, unverified references and cannot rank your technicians. Build your own figure and decompose it instead, because a low number is usually a mix of utilization, pricing, and scheduling, not the techs themselves.

DriverHow to measureFictional example
Paid hours per techPayroll hours for the year2,080
UtilizationJob (billable) hours divided by total paid hours. Level's working range is 65-80%, a guide rather than a measured benchmark.70%, giving 1,456 job hours
Billing captureHours invoiced divided by hours logged on jobs. Level Index median is 97.1%, n=963 companies with 100+ logged hours.95%, giving 1,383 invoiced hours
Effective billed labor rateLabor revenue divided by invoiced hours$110, giving $152,130 of labor revenue

The example is fictional: one tech, labor revenue only. Materials and subcontractor revenue raise revenue per tech without changing labor throughput, so compare techs on the same job mix.

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 short service calls that, in this dataset, made up 51% of job count. 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.


The Bottom Line

The retained raw count summary puts jobs of 24 logged hours or more at roughly 7% of recorded jobs. Their outlier-filtered revenue share is unresolved. Short service calls generated the most revenue per labor hour. Neither fact is a margin yet. 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: at about $907 per call, $10M of revenue would take roughly 11,000 service calls a year. But you should know the true margin on both job types. Once costs are fully allocated, either pattern is possible. Project work can turn out near break-even while service holds up, or service can turn out thinner than expected once drive time and callbacks are costed. 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. Treat 2-3 weeks as an illustrative planning assumption for a first pilot, not a measured result. Check progress by tracking, each week, the share of completed jobs that have both clock hours and at least one cost line.

Q: How is job size measured here, and why report count and revenue share separately? A: Jobs are bucketed by total logged hours across roughly 1.5M jobs that carry a dollar value, and each bucket gets two numbers: its share of job count and its share of revenue. Reporting them side by side is what makes the finding legible, because they run in opposite directions. A single headline percentage would hide exactly the tension the table exists to show. One tier, the 80-200 logged-hour bucket, is excluded because close to nine tenths of its dollars sit in a single outlier record whose revenue is implausible on its face against the hours logged against it. That record is held out pending review. The corrected tier has not been reproduced from the published summary, so the exclusion is a data-quality call on one record, not a finding about that size of job in either direction. The public summary does not provide the complete rows needed to reproduce a corrected denominator. The retained raw shares are explicitly unverified, and a revised share is withheld.

Q: What's a realistic margin target for small service work vs. project work? A: Level does not publish a measured margin target by job size. Treat these as illustrative planning assumptions for a contractor whose costs are fully coded, not as measured medians or top quartiles: 40-55% gross margin for service calls and repairs (under $2K), and 20-35% for commercial projects ($50K+), depending on materials and sub intensity. For measured reference points, the Level Index shows:

  • Job gross margin: median 44.3% (1,747,089 completed jobs, 1,791 companies, all job types).
  • Quote-line gross margin: 47.7% on labor lines versus 23.6% on subcontractor lines (2.2M+ quote lines).
  • Service agreement gross margin: median 37.9% and 25th percentile 20.5% (259 contractors with at least $10K of agreement revenue).

A result below the median is a reason to check visit cost and pricing, not proof of underpricing. 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.

Benchmark source scope

Measured Level Index comparisons on this page come from the canonical aggregate dataset. Each metric retains its own eligible population and definition; the broader founding-team research universe of 2,242 contractors and $13.25B of job revenue is provenance, not a count of Level clients or the sample of every metric. Fictional scenarios and legacy, unverified references are labeled separately.

Share

Get the next one

Want next week's benchmark in your inbox?

One email a week. Real numbers from 2,200+ service businesses. No fluff. Unsubscribe anytime.

Sam Yang

About the author

Sam Yang

Founder & CEO

Founder of Level, the AI operating layer for contractors and skilled trades, and the other operating businesses where scarce labor is the constraint. Ex-CFO across trades, SaaS, and service businesses. 4 years as Director of Growth Product at BuildOps, building financial tooling used by 1,000+ commercial contractors. Four years in PE and investment banking rolling up and acquiring service businesses, $2.5B in total transactions including M&A and IPOs. Stanford MBA, Brown undergrad. The Level founding team's analysis of 2,200+ contractors ($13.25B in job revenue) across operating, private-equity, and CFO roles anchors the Level Index benchmark research.

LinkedIn

See how your margins benchmark.

We compare your jobs, crews, and service lines against real margin data, then show which gaps deserve the free audit.

2,200+ contractors in the research universe$13.25B in job revenue analyzedWeekly action cadenceContractor research basis and metric-specific samples, not a count of client engagements

No credit card. 15-min audit. We only follow up if we can actually help.

No commitment. Real numbers, not generic advice.