Enterprise DNA

Omni by Enterprise DNA

Enterprise DNA Resources

Insights on data, AI & business. Practical AI operating-system thinking for owners, operators, and teams doing real work.

220k+

Data professionals

Omni

AI agents and apps

Audit

Map the manual work

How to Find Profitable HVAC Service Jobs
Blog AI

How to Find Profitable HVAC Service Jobs

Use AI to combine labor, parts, travel, callbacks, and invoices so you can see which HVAC service jobs actually make money.

Sam McKay

Revenue isn’t the same as job profit

A $1,200 HVAC service invoice can look like a solid result. The technician was busy. The customer paid. The job is closed in the field service system.

But that invoice might include 3.5 hours of paid labor, $280 in parts, 45 minutes of travel, a second visit because the wrong part was ordered, and an unpaid callback two days later. Add the dispatch time, fuel, merchant fees, warranty exposure, and the fact that the technician could have completed another job in that window, and the profit can disappear quickly.

Most HVAC owners don’t have a pricing problem as much as they have a visibility problem.

They know their total sales. They know roughly what payroll costs. They can look at a monthly P&L. Yet they can’t answer a few important questions without digging through dispatch records, technician notes, invoices, and accounting exports:

  • Which service call types produce the best gross profit after labor and travel?
  • Which technicians are completing similar jobs faster without creating callbacks?
  • Which customers consistently require extra visits, payment chasing, or warranty work?
  • Which suburbs look busy but have poor economics once drive time is included?
  • Which quoted repairs turn into profitable approved work, and which lead to wasted site visits?

That gap is where margin leakage lives. For trades businesses doing $1 million to $25 million in annual revenue, we commonly see $50,000 to $200,000 of annual leakage spread across avoidable callbacks, bad job mix, unbilled time, poor follow-up, and missed calls.

The point isn’t to blame technicians or squeeze customers. It is to run the business with job-level facts instead of assumptions.

Start with a usable definition of profitable

A job is not profitable because the invoice exceeds the part cost. That is a start, not the answer.

For a service business, job profitability should include the full cost of delivering that job. At a minimum, measure these five areas.

1. Labor time

Use actual clocked time where you have it. Include travel, diagnosis, repair, paperwork, customer handover, and return visits.

If your technicians only clock in and out for the day, you can still estimate job-level time by using dispatch timestamps, GPS records, work order status changes, and technician notes. It won’t be perfect on day one. It will be more useful than assuming every service call takes the booked duration.

A 90-minute maintenance visit that regularly becomes a 2.5-hour visit is not a maintenance plan issue alone. It may be a scheduling, technician training, parts availability, or customer qualification issue.

2. Parts and materials

Pull actual parts issued or purchased against the work order. Avoid relying on a standard material allowance when the job record can tell you what was actually used.

This matters most on repairs involving compressors, control boards, refrigerant components, motors, electrical faults, and older equipment. A technician can make a good diagnosis, but if the part has to be sourced twice or returned because it was incorrect, the real margin looks very different.

3. Travel and dispatch cost

Two calls with the same invoice value can have completely different profit outcomes.

One may be 12 minutes from the shop, completed in one visit, and paid on site. The other may involve 70 minutes of round-trip driving, a customer who wasn’t available, and a return visit after parts arrive.

Travel should be assigned a cost based on vehicle expense, technician loaded labor rate, and a realistic allowance for non-billable windshield time. You don’t need a finance department to do this. You need a consistent model.

4. Callbacks and warranty work

Callbacks are often buried in the system as separate jobs. That makes the original repair look profitable while the recovery work disappears into general labor overhead.

Link callbacks back to the original job wherever possible. A callback within 7, 14, or 30 days should be flagged for review, depending on the job type and your warranty terms. Not every callback is a technician issue. It may be a customer expectation, an aging system, a poor initial diagnosis, or a parts problem. The cost still belongs in the picture.

5. Collected invoice value

Use collected revenue, not simply the invoice total. A $2,000 invoice that sits unpaid for 75 days has a different value to the business than a $2,000 invoice paid at completion.

You also need to account for discounts, credits, finance fees, and write-offs. If these are left out, the highest-revenue job type can be falsely identified as the best job type.

Build a job margin record from the systems you already use

Owners often assume they need to replace their field service platform before they can get useful job profitability data. Usually, that isn’t true.

The data tends to exist across several places:

  • Field service software holds job types, bookings, technician assignments, work order status, invoices, and job notes.
  • Time tracking or GPS data shows time on site and travel.
  • Accounting software holds payment status, payroll assumptions, supplier costs, and credits.
  • Phone and messaging tools show inbound call source, missed calls, after-hours demand, and customer communication.
  • Customer records reveal repeat visits, maintenance membership, and historical spend.

The hard part is joining these records reliably. Job numbers don’t always match. Technician notes are inconsistent. A callback may be entered as a new job. Parts may be booked in the warehouse system days after the technician used them.

This is where an AI workflow has practical value. It can collect the data on a set schedule, match records using job number, customer address, invoice details, and dates, then flag exceptions for a person to review. It does not need to make financial decisions on its own. It needs to give the owner a trusted view of what is happening.

Our work in Omni Apps focuses on connecting that operating data rather than asking your team to maintain another spreadsheet.

A usable record might look like this:

MeasureExample
Invoice collected$1,185
Parts cost$265
Technician time2.3 hours
Travel time0.8 hours
Loaded labor and vehicle cost$355
Dispatch and payment cost$62
Callback cost$0
Estimated gross job profit$503
Gross margin42%

The exact cost model will differ by business. The benefit comes from applying one model consistently across hundreds or thousands of completed jobs.

What AI should surface for an HVAC owner

A monthly job profitability report that arrives three weeks after month end is too slow. By then, the same bad patterns are already repeating.

An AI agent can review completed work daily or weekly and group results into decisions an owner can use.

The first output is job type profitability. It compares categories such as diagnostic callouts, maintenance visits, no-cool calls, furnace repairs, capacitor replacements, thermostat installs, ductwork repairs, emergency callouts, and replacement estimates.

You may find that a common repair has healthy invoice values but weak margins because the team is making two trips too often. Another job type may have lower ticket values but strong profit because it is predictable, local, and completed in one visit.

The second output is technician variation. This needs care. Raw technician revenue is a poor management measure because one technician may receive more complex calls, more warranty work, or more distant jobs.

AI can compare technicians only within similar job types and customer conditions. It can show patterns such as:

  • Technician A has a 12 percent callback rate on electrical diagnostics compared with the team range.
  • Technician B completes maintenance calls 25 minutes faster than the team median with no increase in callbacks.
  • Technician C has a high parts variance on older split systems.
  • A technician regularly spends more time on jobs that were booked with incomplete issue notes.

That gives you a coaching conversation based on evidence. Sometimes the answer is training. Sometimes it is dispatch quality. Sometimes the technician is being assigned the difficult work that others avoid.

The third output is customer profitability. Some customers are excellent long-term accounts. Others repeatedly create operational drag through access issues, payment delays, repeated small callouts, disputes, or out-of-area travel.

You should not use this information to treat customers unfairly. Use it to set better rules. You may need a diagnostic deposit, a tighter service radius, a different emergency callout fee, or a requirement that parts be approved before a return visit.

The fourth output is exception alerts. Instead of waiting for a monthly review, the system can send a short alert when:

  • A job exceeds its expected labor time by 40 percent.
  • A job requires a second visit within 14 days.
  • Parts cost crosses a defined percentage of invoice value.
  • An invoice remains unpaid after your normal payment window.
  • A technician is sent to a job that has already had two similar visits in the last 60 days.

This is not about adding more alerts to your phone. It is about replacing a vague end-of-month feeling with a short list of jobs that deserve attention.

If you want to map the data and operating process behind this, Book a 60-min Omni Audit. In 60 minutes, we identify the leakage points, the data available in your current systems, and the first agent or workflow worth building.

Don’t ignore the jobs that never reach the invoice stage

Job profitability starts before a technician is dispatched.

A missed after-hours call can be worth $500 to $3,000 in lost work, depending on the issue, service area, and customer. Many callers who reach voicemail won’t leave a message. They call the next HVAC company on the search results page.

The 24/7 Dispatch Voice Agent is designed to answer those calls, determine whether the issue is an emergency or a scheduled service request, book the available slot directly in the dispatch tool, and text the customer confirmation.

That agent also improves profitability data. It captures the original customer problem, property type, system details where available, urgency, location, and preferred appointment time. Better intake helps dispatch send the right technician with the right expectations and, in some cases, the right likely parts.

You can see how that fits into the wider operating model in Omni Voice. It is not a replacement for your service manager. It removes the repetitive intake work that prevents the service manager from reviewing exceptions and supporting the field team.

The same principle applies to unapproved estimates. If a technician quotes a repair or replacement and nobody follows up, that opportunity fades into the software.

The Estimate Follow-Up Agent tracks every estimate sent and follows up on day 2, day 5, and day 14 with messages matched to the trade and job size. Industry ranges often put recovery from stale estimates in the 15 to 25 percent range when the process is consistent. Your result depends on job quality, pricing, customer demand, and how fast the estimate was issued.

For job profitability, approved estimate conversion matters. A diagnostic call that produces a well-priced repair is not the same economically as a diagnostic call that ends with an uncontacted estimate.

The Review and Reactivation Agent also has a role. It asks satisfied customers for a review the day after the job and reactivates customers at the right service interval. A strong maintenance base can improve route density, reduce customer acquisition cost, and create more predictable technician utilisation.

You can see the operations layer behind these workflows in Omni Ops.

Turn the analysis into operating decisions

Data alone won’t fix a low-margin service department. The value comes from what you change next.

For example, if AI shows that after-hours no-cool calls are profitable only when booked within a defined radius and charged a specific minimum callout, you can update dispatch rules.

If capacitor repairs are profitable when completed in one visit but poor when parts are unavailable, adjust van stock based on actual demand by season and location.

If a technician’s callback pattern is concentrated in one repair category, review three to five job records together. Listen to the call recording if one exists. Read the technician notes. Check the parts used. Look for a system problem before assuming it is a people problem.

If certain commercial customers are producing low margins due to payment delays and administration, create a customer-specific agreement rather than allowing each job to become a one-off negotiation.

One trades-business owner in our network describes this shift as moving from “busy all week” to knowing what kind of busy they need. That is the point. A full schedule is useful only if it produces cash, capacity, and repeatable work.

For a broader view of where AI can support the office and field operations, review the AI audit for trades businesses. It is designed around the practical workflows that usually sit between the phone, dispatch board, technician, invoice, and customer follow-up.

Use the after-hours plan to protect the top of the funnel

Profitability analysis tells you which completed jobs are worth more. You also need to protect the demand that arrives when nobody is available to answer.

Our After-Hours Call Recovery Plan for Trades is a practical worksheet for documenting your call handling, voicemail gaps, emergency qualification rules, booking process, and next-morning follow-up.

If you want the direct version to share internally, download it here: After-Hours Call Recovery Plan for Trades.

Use it with your dispatcher, service manager, and whoever currently carries the after-hours phone. You will quickly see whether the process depends on one person remembering to check missed calls between jobs.

A practical first 30 days

You don’t need perfect data to start. You need a defined starting point and the discipline to review what the numbers reveal.

In the first week, choose five to eight job types that represent most of your service volume. Define a basic loaded technician cost, vehicle cost approach, and callback window. Agree on what counts as a return visit.

In week two, connect or export the job, invoice, parts, and time data. Review 30 to 50 completed jobs manually alongside the first AI-matched records. This validates the rules and exposes data gaps.

In week three, identify the two job types with the largest difference between expected and actual margin. Review the causes with your service manager and lead technicians.

In week four, make one operational change. It might be van stock, booking questions, travel boundaries, diagnostic pricing, technician assignment, or estimate follow-up. Then measure the result over the next month.

This is not a generic dashboard project. It is an operating system for protecting margin job by job.

If you want to see what this could look like with your dispatch and financial data, See Omni for trades businesses. We will show you the likely leakage points and the workflows that can reduce them without forcing your team into another software migration.

When you’re ready to put numbers against your own job types, Book my Omni Audit. You get three outputs in 60 minutes: a clear map of the manual work, the highest-value automation opportunities, and a practical next-step plan. No deck, no vague AI pitch.