Illustrative example. Fictional company; benchmarks are sourced.

Inside the Numbers / Case 3 / Last reviewed: 2026-10-29

The $2.1 Million HVAC Company That Thought It Needed More Technicians

Inside the Numbers | Case File #3

The $2.1 Million HVAC Company That Thought It Needed More Technicians

Real-world business decisions. Illustrative companies. Verified industry data.

Lessons you can apply.

Snapshot
IndustryResidential HVAC service and replacement (NAICS 238220)
Size$2.1 million in sales, 7 service technicians
ModelService calls, maintenance plans, separate installation crew
Entity stageLLC taxed as an S corporation; owner paid through payroll
RegionU.S. suburban market (fictional, unspecified)
DecisionHire two more technicians, or get more from the hours already on payroll
Presented byAva

Illustrative example. Fictional company; benchmarks are sourced.

The takeaway

The owner wanted two more technicians. First we fixed his books, where truck loan payments had been expensed in full. Corrected, he kept $61,000 of net profit before owner taxes, 2.90% of sales, below the 4% and 7% averages contractors report to ACCA.

With technicians billing 60% of paid hours and a stale price book, our model moves net profit to $181,000 (8.01%) in 12 months with no new hires.

Meet the business

This is a fictional residential HVAC company built from a pattern common in home services, not one real company or owner. If your schedule is full and your bank account is not, you will see your business in it.

Service work (repairs, diagnostics, maintenance) brings in $1.44 million; replacement installations by a separate crew bring in $660,000. Seven service technicians run the calls, supported by a dispatcher and a small office. Customers pay per ticket, mostly on flat-rate pricing.

About 400 homeowners hold maintenance plans at $240 a year; that $96,000 is already inside service sales.

The company is an LLC taxed as an S corporation. The owner is paid a market-rate general manager salary through payroll, inside operating expenses, so every profit figure is after a fair wage for his job.

The owner's problem

The phones were busy and customers waited days for a repair, so the owner concluded he needed two more technicians. Yet on more than $2 million of sales, his books showed only $80,000 of EBITDA and $40,000 of net profit. He believed the fix was volume.

That skips two questions. Are the books right? And how much paid time turns into billed work at a price that covers its cost?

If existing hours leak, new hours leak the same way.

The financial snapshot

Step one: clean the books. In this scenario, we worked through it with the owner, starting where every review should start: the balance sheet. The truck loan showed $118,000 on the books but $97,000 on the lender's statement.

Each $3,000 monthly payment had been coded in full to auto expense: $36,000 a year, of which only $15,000 was interest. The other $21,000 was principal, which pays down the loan and is not an expense.

CleanupBeforeAfterEffect
Truck loan balance on the books$118,000$97,000Matches lender statement
Loan payments in operating expenses$36,000$0Removed from opex
Interest expense (below EBITDA)$0$15,000Shown on its own line
Principal (balance sheet)expensed$21,000Reduces the loan
Cash in the bankunchangedunchangedBookkeeping fix only

Annual P&L, reported and corrected (fictional assumption unless marked)

LineReportedCorrectedKind
Service revenue$1,440,000$1,440,000Fictional assumption
Installation revenue$660,000$660,000Fictional assumption
Total sales$2,100,000$2,100,000Calculated output
Direct costs (labor, parts, job costs)$1,370,000$1,370,000Fictional assumption
Gross profit$730,000$730,000Calculated output
Operating expenses before D&A (incl. owner/GM salary)$650,000$614,000Fictional assumption / calculated
EBITDA$80,000$116,000Calculated output
Depreciation and amortization$40,000$40,000Fictional assumption
Interest$0$15,000Fictional assumption
Net profit before owner taxes$40,000$61,000Calculated output
Net margin1.90%2.90%Calculated output

The corrected column is the starting point. EBITDA rose $36,000 because the payments left operating expenses; net profit rose only the $21,000 of principal, because interest is still a cost.

Key numbers (corrected)

KPIValueKind
Paid technician hours per year13,440Calculated output
Completed billable hours per year8,064Calculated output
Billable utilization60.0%Calculated output
Service revenue per completed billable hour$178.57Calculated output

How it compares

MeasureThis company (corrected)BenchmarkKind
Net profit, contractors using other pricing methods2.90%4% averageSourced benchmark
Net profit, contractors using flat-rate service pricing2.90%7% averageSourced benchmark
HVAC mechanic and installer pay, U.S. medianNot stated in the model$61,010 a year ($29.33 an hour), May 2025Sourced benchmark

We compare net to net. As a pass-through, the company pays no entity-level income tax in this model, so net profit before owner taxes is the comparable line. Read it with care: ACCA's figures are self-reported averages from more than 1,000 HVACR contractors, the exact net-profit definition is not published, tax treatment varies by respondent, and respondents may not deduct a market salary for the owner as this model does.

Higher profit at flat-rate firms is an association, not proof of cause.

The gap. At 2.90%, the company sits 1.10 points below the 4% average. On $2.1 million of sales that is about $23,000 a year.

Against the 7% flat-rate average, the gap is 4.10 points, or about $86,000 a year.

Where it leaks. No public benchmark exists for utilization or callback cost, so the overspent lines come from the company's own numbers: direct labor on 5,376 paid hours a year never billed (the 504 hours the model recovers carry $90,000 of service revenue at today's yield), $40,000 a year of callback parts, fuel and warranty costs outside technician hours (the model halves it), and a flat-rate book priced below cost (modeled at $70,000 a year).

The BLS figure is national base pay, not burdened cost or a billing rate. Use it to sanity-check wage assumptions only.

The diagnosis

Three things were happening at once.

First, hours leaked.

Paid hours            = 7 technicians × 40 hours × 48 weeks = 13,440
Billable hours        = 7 technicians × 24 hours × 48 weeks = 8,064
Billable utilization  = 8,064 ÷ 13,440 = 60.0%

Travel, training and safety steps are necessary, but nobody measured the split, so nobody could manage it.

Second, the flat-rate book had not been rebuilt against current labor burden and parts cost.

Service revenue per completed billable hour = $1,440,000 ÷ 8,064 = $178.57

That is a yield figure including parts and markup, not a labor rate or a cost per hour.

Third, callbacks. Every repeat visit uses a paid hour and earns nothing.

The options

OptionCostUpsideRisk
A. Hire two technicians nowTwo wages plus burden, trucks and tools (not modeled)Capacity, if profitable demand existsFixed cost at a 2.90% net margin; new hours leak too
B. Fix pricing, hours and callbacks first$10,000 a year training, plus $50,000 direct cost of extra workModeled net profit of $181,000Price pushback; demand may not fill the hours
C. Change nothingNoneNoneNet profit stays near $61,000

The recommendation

  1. Keep the books clean. Reconcile bank, card and loan accounts to statements monthly; split every loan payment into interest and principal.
  2. Run a 30-day ticket audit. Record billable hours, revenue, parts, callbacks and cash collected per ticket.
  3. Rebuild the price book from fully burdened cost. Modeled: $70,000 more revenue on the same work, if customers accept it.
  4. Fix dispatch and track callbacks. 1.5 more billable hours per technician per week adds 504 hours a year. Modeled: $90,000 more service revenue, less $50,000 of direct cost, plus $20,000 saved on callbacks.
  5. Cost the maintenance plans. Do 400 plans at $240 cover their visits and discounts?
  6. Hire when the data says so. Add technicians once the audit shows profitable demand the team cannot serve.

Entity stage and next step. One LLC taxed as an S corporation fits today. As profit rises, the next step is a yearly check, with your tax professional, that the owner's payroll salary is still reasonable compensation for his work; profit above that is paid as distributions.

Talk to your tax professional about your own situation.

Before and after

EBITDA bridge, 12 monthsAmountKind
Corrected baseline EBITDA$116,000Calculated output
Price realization+$70,000Modeled projection
Extra completed work (504 hours)+$90,000Modeled projection
Direct cost of extra work−$50,000Modeled projection
Callback savings+$20,000Modeled projection
Training and price-book upkeep−$10,000Modeled projection
Modeled EBITDA$236,000Modeled projection
Depreciation and interest (held flat)−$55,000Fictional assumption
Modeled net profit before owner taxes$181,000Modeled projection
Extra billable hours   = 7 × 1.5 × 48 = 504
Extra service revenue  = 504 × $178.57 = $90,000

Start, 90 days and 12 months. The 90-day column is an annualized run rate: books cleaned, audit done, half the price change and half the callback savings in place, no extra hours yet. Kind: start columns are fictional assumptions and calculated outputs; both after columns are modeled projections, not results.

LineStart (reported)Start (corrected)90 days (modeled)12 months (modeled)
Total sales$2,100,000$2,100,000$2,135,000$2,260,000
Direct costs$1,370,000$1,370,000$1,360,000$1,400,000
Gross margin34.76%34.76%36.30%38.05%
Operating expenses before D&A$650,000$614,000$624,000$624,000
EBITDA$80,000$116,000$151,000$236,000
EBITDA margin3.81%5.52%7.07%10.44%
Net profit before owner taxes$40,000$61,000$96,000$181,000
Net margin1.90%2.90%4.50%8.01%
Billable utilization60.0%60.0%60.0%63.75%

Interest is held flat for simplicity. No figure here is cash flow: owner taxes, loan principal, equipment and working capital still come out.

Risks and what still didn't work

What if it is only half as good? In the downside case every lever lands at half (+$35,000 price, +$45,000 work, −$25,000 direct cost, +$10,000 callbacks) and the $10,000 setup cost stays in full.

LineModeledHalf case
EBITDA$236,000$171,000
Net profit before owner taxes$181,000$116,000
Sales$2,260,000$2,180,000
Net margin8.01%5.32%

The half case clears the 4% average but not 7%. Watch for customers lost to the price change, extra hours that sit empty, and pressure to rush diagnosis or skip safety steps.

Weekly scorecard

Number to watchTarget (from the model)
Billable hours per technician per week25.5
Billable utilization63.75%
Service revenue per completed billable hour$186.74
Service revenue per working week$33,333
Gross margin38.05%
Callback cost avoided per working week$417
Bank, card and loan accounts reconciled to statementsEvery month

Apply it to your business

Three questions

  1. Does every loan on your balance sheet match the lender's statement, and is each payment split into interest and principal?
  2. Of the hours you paid technicians for last month, how many were billed?
  3. When was your price book last rebuilt from current labor burden and parts cost?

Checklist

  • Bank, card and loan accounts reconciled monthly; no negative balances
  • Paid and billable hours tracked by technician weekly
  • Flat-rate tasks priced from fully burdened cost
  • Callbacks logged as their own job type
  • A 13-week cash forecast before any new hire

The one action this week: Compare your truck or equipment loan statement to your books. Then divide last week's service revenue for one technician by billable hours. That is your yield per hour.

Work through the same steps: price your work with the markup and margin calculator and the cost-plus pricing worksheet, find a technician's real hourly cost with the employee cost calculator, and take the Pricing for Margin course. Plan cash before any hire with the contractor 13-week cash flow template. More cases like this one are in Case Files.

Want help applying it to your own numbers? Request a walkthrough. It is a way to work through the process, not a promised result.

Sources and method

Benchmark evidence records

FieldACCA flat-rate pricing findingBLS HVAC wage
Metric and definitionAverage net profit, self-reported; precise definition not published in the summaryMedian annual and hourly wage
Industry and codeHVACR contractors (closest NAICS 238220)HVAC mechanics and installers (occupation, all industries)
Business type and sizeContractors of all sizes, survey respondentsEmployees, all employers
GeographyUnited StatesUnited States
Period2025 studyMay 2025
StatisticAverage; more than 1,000 contractors surveyedMedian
SourceACCA, see Sources belowBLS, see Sources below
StatusVerified against public summaryVerified
LimitsAssociation, not cause; tax treatment and definition vary by respondent; subgroup sizes not publishedBase wage only; not burdened cost or billing rate
Last checked2026-10-272026-10-27

Fictional assumptions: all company sales, costs, staff counts, hours, plan counts and prices; the entity type; the truck loan ($3,000 monthly payment, $15,000 annual interest, $21,000 principal, $118,000 book balance, $97,000 lender balance); $40,000 depreciation and amortization; 48 working weeks; 40 paid hours per week; 24 billable hours per technician per week at baseline; 1.5-hour weekly gain; $70,000 price realization; $50,000 direct cost of extra work; $40,000 annual callback cost outside technician hours, of which $20,000 is saved; $10,000 training cost; the 90-day run-rate mix. No matched public benchmark exists for technician utilization or callback cost, so none is shown.

Method: Schedules were built and checked before writing. Margins are recomputed from dollars. Owner pay is inside operating expenses at an assumed market rate.

Net profit is before owner-level income taxes because the entity is a pass-through. Interest is held flat. No figure is cash flow.


Disclosure: This is a fictional educational scenario. The company, owner, statements and outcomes are invented, and all company numbers are modeled. It is not a real client, testimonial or observed result.

Industry statistics are cited separately and are not the company's results. This is general education, not tax, legal or financial advice. Talk to your tax professional about your own business.

Presented by Ava. Reviewed by a person before publication.

Sources