The Mechanics
Memberships, inventory and technician pay
Seasonality is the one owners feel. These three are the ones that quietly corrupt the numbers underneath it.
Maintenance agreements: the liability nobody puts on the balance sheet
When a homeowner buys a $199 annual plan with a spring and a fall visit, you have collected cash and taken on an obligation. Roughly half of that money is earned when you perform the spring visit and the other half in the fall. Until then it is deferred revenue, a liability, not income. ServiceTitan gets this wrong in specific, documented ways: a plan with two visits a year can recognize the full annual amount on each visit instead of half, and a dismissed recurring service event can permanently mis-recognize the deferred balance so that nothing ever comes back to correct it. Revenue can also land on the business unit that sold the membership rather than the one that performed the work, which quietly inflates your sales team and starves your service department. For a shop with two thousand members, this is a six-figure misstatement. The full mechanics are in ServiceTitan deferred revenue.
Equipment versus parts: two different inventory problems
A condenser is serialized, expensive, ordered for a specific job, and often drop-shipped. A run capacitor is a consumable that lives on a truck. They should not be handled the same way, and in most files they are. Two things go wrong repeatedly. First, equipment cost and purchase order cost can be excluded from job costing by design, so your install job shows labor and parts but not the thing you actually installed, and the margin on that job is fiction. Second, on the parts side, a wrong price on a single vendor bill permanently shifts the weighted average cost of that SKU, and every job that consumes it afterward is mis-costed. Technicians can also mark materials as used without ever allocating them, in which case the cost is gone and no job ever carried it. More on this in ServiceTitan inventory and QuickBooks.
Technician pay: the most expensive line you are not measuring
Labor is the largest controllable cost in an HVAC business and it is where ServiceTitan pay configuration causes the most damage. Overlapping pay rules can pay a technician on both rules for the same work. Spiffs are commonly split among the technicians who performed the job rather than the one who sold it, which changes who your top performer actually is. Labor cost reports $0.00 outright when a technician has no hourly rate configured, so that tech appears to be free. Labor burden double counts when the burden rate is set to include payroll costs already sitting in the account. And the job costing flyout locks once an invoice is posted and exported, so any payroll adjustment made afterward never reaches job cost at all. Every one of those distortions lands on your install margin, which is the number you use to decide whether to add a crew.