Skip to content

Service Business

HVAC & Air Con Software — Custom Dispatch System for Capacity Planning, Parts Inventory & Recurring Contracts Beats ServiceTitan Above 10 Crew

All articles
❄️ 🔧 📍

ServiceTitan: $229–449/seat/mo. AroFlo: $80–180/mo. simPRO: $60–150/mo. 15-tech HVAC contractor (heating/cooling installs, maintenance, repairs) bleeds $18k+/yr in per-seat licensing. Custom = service dispatch with real-time GPS (crew ETA to job, customer visibility), capacity planning (load balance residential vs commercial jobs, avoid tech overload), parts inventory management (core stock + express stock by truck, prevent service delays), recurring service contracts (quarterly inspections, bi-annual maintenance, annual cleaning — auto-schedule + auto-invoice), ARC unit tracking (every air con unit registered, service history, warranty expiry), invoicing with parts cost recovery (hardware + labour + markup). AU-specific: ARC (Australian Refrigeration Council) mandatory licence + renewal, refrigerant handling compliance (EPA equivalent Australia, EPA-equivalent certification for staff), WHS at height certification (roof installs/service). ROI: 14 months.

A mid-size HVAC contractor with 15 technicians (10 residential, 5 commercial/industrial) doing 400+ service calls/year pays ServiceTitan $229–449/seat/month ($45.8k–89.6k/year for 15 staff), or opts for AroFlo ($80–180/mo avg $130 × 15 = $23.4k/yr) or simPRO ($60–150/mo avg $105 × 15 = $18.9k/yr). Licensing costs alone: $18.9k–89.6k/year. The problem: ServiceTitan is built for plumbing + HVAC generically. AroFlo and simPRO are job schedulers, not HVAC operational platforms. They don't handle what actually crushes an HVAC business scaling past 10 crew: real-time dispatch with GPS (crew ETA, route optimisation for back-to-back jobs), capacity planning (load balance residential installs with maintenance calls to prevent 3-week waitlists), parts inventory management (every truck stocks 200+ parts; if you're out of capacitors, tech wastes 30 min going back to warehouse), recurring service contracts (quarterly AC maintenance = $500 × 40 customers = $20k/year recurring revenue, but you need auto-scheduling and auto-invoicing to not drown in admin), ARC unit tracking (Australian Refrigeration Council requires every air conditioner registered with service history; system must track coolant type, service dates, EPA-equivalent certification of tech who serviced it), and invoicing with parts cost recovery (AroFlo/simPRO don't auto-calculate parts markup—you're manually adding $50 capacitor as labour cost, look like you're ripping off customers). Custom platform for a 15-tech HVAC contractor = $125–160k build (GPS dispatch + capacity planning + inventory + recurring contracts + ARC tracking + invoicing). Year one: $145–180k. Year two: $4k/year hosting. Break-even: month 18–20. At break-even, custom has saved ~$50k in licensing + labour bleed (manual dispatch rework, inventory chaos, recurring contract admin) compared to AroFlo/simPRO subscription cycle. By year 3, custom saves $50k+/year as crew scales to 20–25 tech without per-seat licensing creep.

Why ServiceTitan, AroFlo & simPRO Fall Short at Scale

ServiceTitan is the US gold standard for trades (plumbing, HVAC, electrical), but Australian pricing is opaque (you get a demo, they quote custom; expect $229–449/seat/mo depending on feature tier and contract term). ServiceTitan has: job scheduling (assign tech to job), GPS tracking (live map of where crew is), customer portal (customer sees ETA, can approve quote online), invoicing (parts + labour). But it doesn't auto-optimise routes (you assign jobs manually, don't know if Tech A has a 45 min commute between jobs), doesn't track parts per-truck (you assume Tech A's van is stocked, he hits a job 40 km away, needs a capacitor, warehouse isn't near job, 30 min delay), doesn't auto-schedule recurring contracts (you manually create 40 quarterly maintenance jobs every January—error-prone, no automation), and doesn't integrate HVAC-specific compliance (ARC refrigerant handling, EPA-equivalent certification, unit registration). AroFlo (acquired by Buildots, formerly an Aussie company) is popular in Australia for $80–180/mo. It's simpler than ServiceTitan (job scheduling, invoicing, customer quoting). But it's still manual: you assign jobs to crew, tech drives there, AroFlo doesn't re-route if a closer job pops up, doesn't alert you if 3 techs are all in the same suburb (you could batch them into one route), doesn't track inventory per vehicle, and doesn't auto-generate recurring contracts (you're typing up 40 quarterly maintenance reminders by hand every season). Parts inventory is a nightmare in AroFlo: you log into inventory, see "Capacitors: 3 in stock," but those 3 are in Tech A's van across town. Tech B (in the CBD) needs a capacitor, doesn't know it's in Tech A's van, goes back to warehouse, wastes time. simPRO (New Zealand SaaS, very popular with AU tradies) is even simpler ($60–150/mo): scheduling + invoicing. No GPS, no real-time tracking, no capacity planning, no inventory management. You're assigning jobs by phone/SMS to crew, hoping they show up on time. Recurring contracts in simPRO: you create a job template ("Quarterly AC maintenance—2 hours labour, $150 parts allowance, $600 revenue"), then manually duplicate it 4× per year per customer. 40 customers × 4 quarters = 160 duplicate jobs to manually create per year = 4 hours of pure admin. ServiceTitan auto-recurring is better (you set "create job every Q" rule), but still doesn't load-balance: if you have 40 Q1 maintenance jobs + 30 urgent breakdown calls in January, ServiceTitan just stacks them. You see a timeline full of red (overbooked), no system warning telling you: "You're 40% overbooked Jan 15–25. Offer customers Feb 1 for 10% discount to spread load." Custom system does this automatically. Capacity planning in a 15-tech HVAC business is the killer lever none of these SaaS systems solve. You've got 10 residential techs (30-min jobs, $300–500 revenue per call) and 5 commercial techs (4-hour jobs, $1.2k–2.5k revenue per call). One residential tech averages 5 jobs/day (150 min travel + 4 hrs work per job × 5 = 6.67 hrs real time = packed). One commercial tech does 1–2 jobs/day (high revenue, long install hours). ServiceTitan and AroFlo see a calendar: Jan 15: 5 residential calls assigned to Tech A, 1 commercial call assigned to Tech F. No red flag. But Tech A at 5 calls/day is at max capacity; if a 6th urgent call (AC down in a data centre, $2k emergency call) comes in, you overbook him or reject it. Tech F (commercial) is at 25% capacity (1 job). System doesn't auto-suggest: "Move one commercial tech to residential surge? Or batch 2 residential jobs + 1 commercial into a route?" Custom system sees capacity in real-time, flags overbooks before they happen, and suggests rebalancing. If you add a $2k emergency call and Tech A is full, system auto-assigns to Tech F, who has capacity. Or system suggests: "Offer customer a 2-hour diagnostic call this afternoon (2-hour residential slot you have open) to assess the problem, do full repair tomorrow when you have a 4-hour residential slot." This turns a lost call into a 2-call revenue sequence. Real-time dispatch optimisation is the next pain point. You've got 15 techs spread across a city. 9am: Tech A (residential, Parramatta suburb) finishes a job. Tech B (residential, Strathfield suburb) has 30 min before next call. Urgent AC breakdown comes in at Rydalmere (10 km from Parramatta, 20 km from Strathfield). ServiceTitan shows both Tech A and B are available, but doesn't auto-calculate: "Tech A: 12 min ETA, 20 km route. Tech B: 25 min ETA, 22 km route. Route Tech A." You manually pick Tech A. If you've got 50 jobs per day and 100+ daily dispatches, manual assignment = error-prone + slow. Custom system: calculates ETA for all available techs (live GPS location + traffic data), picks closest, auto-routes (tells Tech A: "Next job: Rydalmere, take M4 westbound, ETA 9:17am"), pushes to tech's phone (map + customer address + job notes), customer gets text: "Tech arriving 9:17am, registration XXX, click to track in real-time." Tech drives, customer watches ETA live, zero "where are you?" calls. Parts inventory chaos costs HVAC contractors $10k+/year in downtime and wasted labour. A 15-tech operation stocks ~3,000 parts across 15 vans (200 parts per van). Capacitors, contactors, filter cartridges, fan motors, refrigerant, compressor oil, sealant, copper tubing, etc. When a tech arrives at a job, he needs the right part: capacitor for an AC unit, contactor for a furnace, thermostat for a heat pump. If his van doesn't have it, he either (a) improvises with a lower-grade part (wrong), (b) goes back to the warehouse (30 min round-trip + job delay), or (c) reschedules the customer (lost revenue). ServiceTitan and AroFlo have "inventory module," but it's a spreadsheet: "Capacitors: 50 in stock." You don't know which 50 are in which vans or which are sitting at the warehouse unused while Tech A is 5 km away waiting for a capacitor. Custom system: every part is tracked per vehicle. "Tech A's van: 6 capacitors (types: 5µF/450V × 2, 15µF/450V × 4), 2 contactors, 8 filter cartridges, 12 liters refrigerant R410A." Tech A arrives at job, inputs unit type (Daikin AC, model XXX), system auto-suggests required parts: "This unit needs 5µF capacitor. You have 2 in stock. Install one." Tech installs, system logs: "5µF capacitor used 15-06-2026 Job #456, Tech A, customer: Smith, unit: Daikin XXX, parts cost $25, labour $150, revenue $350 (parts marked up to $75)." If Tech A's van is empty on capacitors, system alerts before he drives to the job: "This job needs a capacitor. Your van: 0 capacitors. Option: (1) Detour 5 min to warehouse, pick up capacitor. (2) Reassign to Tech B (5 capacitors in stock, 12 min closer to job). (3) Reschedule customer." You make a conscious choice, not a surprise at job site. Recurring service contracts are where HVAC businesses make passive recurring revenue but drown in admin. An HVAC contractor targets: quarterly AC maintenance (inspection + clean filter + coolant top-up = $200/visit, 4 visits/year = $800 per customer per year), bi-annual heat pump service ($300 × 2 = $600/year), annual heating system checkup ($250). A business with 40 quarterly customers = 40 × 4 visits/year = 160 jobs per year from recurring alone (not counting breakdown calls or installs). Creating and scheduling 160 recurring jobs: ServiceTitan auto-recurring is better (you set rule, it creates jobs), but doesn't load-balance (mentioned earlier). AroFlo: you manually create jobs or set reminder "create quarterly jobs Jan 1" (80 clicks/year). simPRO: same—manual creation or reminders. Invoicing is chaos: quarterly customers get invoiced quarterly (Jan, Apr, Jul, Oct). If you're invoicing 40 customers quarterly, that's 160 invoices/year to create, email, track payment. Customers pay slowly (30–60 day terms). You're chasing invoices, sending reminders, not knowing which customer paid which quarter. Custom system: recurring contracts are templates. You create once: "Customer: ABC Corp, service: Quarterly AC maintenance, price: $200/visit, starts Jan 2026, repeats every 90 days." System auto-creates job every 90 days (Jan 15, Apr 15, Jul 15, Oct 15). Auto-assigns to best available residential tech based on location + capacity. Auto-generates invoice on job completion (tech uploads timestamp photo of completed work + parts used). Auto-sends invoice to customer same-day (email + SMS). Auto-tracks payment (linked to Xero, payment date auto-logged). Recurring revenue becomes passive: you see a dashboard: "Recurring contracts: 40 active, Q2 2026 revenue: $8,000 (all invoiced, payment status: 32 paid, 8 pending)." No admin. Australian HVAC compliance is where ServiceTitan/AroFlo/simPRO completely fall apart. ARC (Australian Refrigeration Council) is mandatory for anyone servicing air conditioning. You must: (1) hold an ARC Refrigerant Handling Licence (issued to individuals and businesses, renewed every 2 years, requires EPA-equivalent certification—Australia follows EPA standards for HFC/HFO refrigerants), (2) register every air conditioner unit you service (unit brand, model, serial, install date, customer location, coolant type—HFC? HFO?), (3) log every service (date, tech name + ARC licence, work performed, coolant quantity/type added or recovered, contactor info if service led to repair). ARC audits randomly: if they find an unregistered unit or a service logged by an unlicensed tech, you face $10k–50k fines + loss of licence. ServiceTitan doesn't have ARC integration (it's US-centric, ARC is Australian). AroFlo and simPRO are very basic; they have "notes" fields but don't auto-fill ARC forms. Custom system: ARC tracking is built-in. When you complete a service: tech inputs unit brand/model/serial (or barcode-scans it if you label units), system auto-registers with ARC (APIs to ARC database, unit now in registry with tech name + licence + date), logs service details (coolant added/removed, pressure test result, noise/vibration check, customer sign-off). Annual dashboard: "ARC services logged: 450. Units registered: 280 (all current, 0 overdue for re-registration). Tech ARC licences: all valid, 0 expiring in next 6 months. Audit-ready: all 450 services have tech licence verified at log time." Refrigerant handling compliance: EPA-equivalent refrigerant in Australia = HFC (older, being phased out), HFO (newer, lower GWP). Tech must be certified to handle both. Custom system: tracks which tech has which certification, alerts when assigning jobs. "Job #456: AC unit uses R410A (HFC). Assign only to techs with HFC certification." If Tech A doesn't have HFC cert, system assigns to Tech B. WHS at height: AC units on roofs or high walls need WHS compliance. Tech must have fall-arrest certification + correct harness + anchor points inspected. Custom system: job location (property address, unit location: ground-level window unit vs 3rd-floor roof unit) determines requirements. "Job #456: Roof unit, 8 metres above ground. Assign only to techs with WHS at-height certification + valid fall-arrest permit." If no certified tech available, system alerts: "Job #456 requires roof work. No certified techs available Jun 15–16. Schedule for Jun 17 (Tech D available + certified)." These Australian compliance requirements are non-negotiable—miss them and you lose licence + face fines. ServiceTitan/AroFlo/simPRO don't address them at all.

What Custom Replaces: Six Features HVAC Contractors Need

1. Real-Time GPS Dispatch with Route Optimisation

9am: 15 techs spread across Sydney. 8 urgent jobs queued (broken AC units, no heating in winter). Manual dispatch: you spend 15 min assigning each job, checking tech availability, assigning close to their last job. 2 hours of dispatch work/day × 250 working days = 500 hours/year = $12.5k labour (dispatch coordinator salary). Alternatively, you text crew: "Job at 36 Maple Ave, go there after current job." Tech goes, takes 30 min wrong turn, arrives late, customer annoyed. Custom system: 8 urgent jobs auto-loaded. System calculates: all 15 techs' live GPS location, 8 job locations, traffic data (real-time, Google Maps API). System runs assignment algorithm: "Assign Job #1 (Parramatta, urgent breakdown) to Tech A (Parramatta, 8 min ETA). Assign Job #2 (Strathfield, urgent) to Tech C (Strathfield, 12 min ETA). Assign Job #3 (Rydalmere, maintenance) to Tech B (nearest available, 18 min ETA), then auto-route to Job #4 (Westmead, 6 min after Job #3 finish). Assign Job #5–8 to remaining techs, load-balanced by expected drive time + job duration." All 8 jobs assigned in 30 sec. Each tech gets a route (Tech B: Job #3 9:32am, Job #4 10:58am, Job #5 12:04pm = 3 jobs back-to-back, zero downtime). Tech A starts 9:08am (Parramatta breakdown), finishes 11:30am (2.5 hr job), system auto-routes to next available job (let's say Job #6 at 11:45am, 8 min away). Tech sees map + customer address + job notes on phone in real-time. Customer sees tech on map (live ETA: 9:08am ± 2 min). Tech arrives on-time, customer trusts you. Dispatch labour: 0 hours (system does it). Wrong turns: 0 (system routes). Late arrivals: rare (system knows traffic). Customer satisfaction: 9+/10 (visibility + reliability). Revenue per tech: +$1,500–2,000/year (3 extra jobs/week, no dead time driving). 15 techs × $1,750 extra revenue = $26.25k/year productivity gain.

2. Capacity Planning & Load Balancing

You've got 10 residential techs (5 jobs/day avg, 3–4 hours each = fully booked) and 5 commercial techs (1–2 jobs/day, 4+ hours each = moderate load). June forecast: 40 quarterly AC maintenance calls scheduled (residential team), plus 30 urgent breakdown calls coming in ad-hoc (you can't predict these). Residential team is already at 50 jobs/month (5 techs × 10 jobs/month). 40 + 30 = 70 jobs = need 7 residential techs, but you have 5. June capacity crisis. AroFlo/ServiceTitan show the calendar is red (overbooked), but don't suggest solutions. Custom system: capacity dashboard shows June is 40% overbooked (70 jobs, only 50-job capacity). System flags: "Propose 2 options: (1) Offer 10 customers Feb 1 rescheduling for 10% discount—moves 10 jobs to Feb, frees June 15–30 for breakdowns. (2) Shift 2 commercial techs to residential surge Jun 1–20, back to commercial Jul 1." You pick option 1, system auto-emails customers: "Your quarterly AC maintenance is scheduled Jun 15. We can move to Feb 1 for 10% off ($180 instead of $200). Reply yes/no." 8 customers agree, 2 want original dates. New June forecast: 60 jobs (40 original + 30 breakdowns) fits in 6 residential techs (existing 5 + overflow dispatch to commercial team on slow days). Crisis averted, no revenue loss, customers get discount (incentive to reschedule). System shows: load is balanced. No red. Breakdowns are auto-assigned to available capacity (instead of "sorry, we're booked, try next week," you say "we can dispatch a tech at 2pm today, $200 emergency fee," customer pays premium, you make more money). Revenue swing: +$4k/month (10 customers × $20 discount loss, offset by 30 breakdowns × $200 emergency surcharge = $6k gain, net +$4k).

3. Parts Inventory Management Per Vehicle

Tech A's van at 8am: 8 capacitors (5µF + 15µF mix), 3 contactors, 2 filter cartridges, 4 liters refrigerant R410A, sealant, copper tubing, misc connectors. Tech A gets dispatch: "Job #123, 36 Maple Ave, AC breakdown, unit type: Daikin FX50D." System checks: "FX50D compressor failure—needs capacitor + contactor + maybe compressor (high replacement cost). Your van: 8 capacitors (has needed sizes), 3 contactors (has needed), 0 compressors." Tech A arrives, diagnoses: compressor dead (bad news—customer paying $1.5k part cost + labour, insurance usually covers breakdown). Tech A's van stock is relevant: if he had 0 capacitors, system alerts him before drive: "Van: 0 capacitors needed. Detour to warehouse (5 min) to pick up, then to job." He picks up, arrives 5 min late, customer annoyed. Parts inventory in custom system: parts-per-vehicle tracking. Every Monday morning, dispatch coordinator reviews: "Tech A's van: 8 capacitors, 3 contactors, 2 filters, 4L refrigerant. (vs standard stock: 12 capacitors, 5 contactors, 4 filters, 8L refrigerant). Recommend restock: +4 capacitors, +2 contactors, +2 filters, +4L refrigerant." Coordinator orders from supplier, Monday evening stock is replenished. Tech A goes full week, zero parts shortages. If an unusual job pops up (rare heat pump model needing a special part), system checks all 15 vans: "Part needed: Mitsubishi PAC compressor (rare). In stock: 0 vans. Warehouse: 1 (but unavailable until 10am supplier delivery). Options: (1) Reassign to Tech B+C combo, they diagnose, order part, install tomorrow (customer waits). (2) Offer customer loaner AC unit ($100/day fee, you rent from supplier), install tomorrow." You pick option 2, customer pays, you manage expectation. Parts cost recovery: a capacitor costs warehouse $25, retail $75 (200% markup). Tech A installs, invoice says "$75 capacitor + $150 labour = $225 job cost." Customer pays. AroFlo/simPRO: you manually type "$75 capacitor, $150 labour," easy to forget markup or undersell. Custom system: parts are auto-priced at cost + markup (set once, system applies). Capacitor auto-charges $75 (not $25). No revenue leakage. 15 techs × 10 jobs/week × avg $50/parts per job × 20% markup margin = $15k/year parts profit (that was being left on table if markup wasn't applied).

4. Recurring Service Contracts with Auto-Invoicing

You target: quarterly AC maintenance (residential). Create contract: "Customer: Smith Residence, 36 Maple Ave. Service: Quarterly AC maintenance. Price: $200 (inspection + filter clean + coolant top-up, 2 hours labour). Schedule: every 90 days starting Jan 15 2026." System creates 4 jobs per year: Jan 15, Apr 15, Jul 15, Oct 15. Jan 15 job goes to available residential tech. Tech arrives, does 2-hour service, uploads photos (filter before/after, coolant top-up log, customer sign-off). System auto-generates invoice: "$200 quarterly AC maintenance, Jan 15 2026, , customer sign-off." Invoice emailed same-day, customer gets SMS: "Your AC service is complete. Invoice $200 sent. Pay here: ." Payment linked to Xero. Customer pays Jan 17 (2 days, faster than mail + cheque). Repeat Apr 15, Jul 15, Oct 15. By Oct, you've invoiced Smith 4 times, collected $800, zero admin. Scale to 40 quarterly customers: 160 jobs/year, 160 invoices/year, all auto-generated. Revenue: $32k/year (40 × $200 × 4 quarters). Invoicing labour: 0 (system does it). Payment chasing: minimal (auto-reminders after 30 days if unpaid). AroFlo/simPRO: you manually create 160 jobs or rely on reminders, manually invoice. 160 invoices × 5 min = 800 min = 13.3 hours/year invoicing labour. Custom system: 0 hours. Savings: 13.3 hours × $25/hr = $333/year, plus faster payment (you get cash in 2–3 days instead of 30–60 days, improves cash flow). Scale this: you also offer "Premium Maintenance Plan" ($600/year = 2 visits, targeted at commercial) and "Annual Heat Pump Service" ($250, 20 customers). Total recurring revenue mix: 40 quarterly ($32k) + 30 premium bi-annual ($18k) + 20 annual ($5k) = $55k/year recurring (on top of breakdown repair revenue). Custom system manages all 3 contract types, auto-creates jobs, auto-invoices. You're collecting $55k/year on autopilot. Equivalent to 4 extra techs' revenue (1 tech = ~$150k/year gross revenue), with zero extra labour.

5. ARC Unit Tracking & Compliance Logging

ARC requires every air conditioning unit to be registered with: brand, model, serial, coolant type, service history. Auditors randomly inspect: pull a customer record, verify unit is registered with ARC, verify services logged are linked to tech's valid ARC licence. Fail = $10k fine + possible licence suspension. Custom system: every unit gets a profile. When you first service a unit (either install or first breakdown call), system prompts: "Unit details: Brand (Daikin), Model (FX50D), Serial (ABC123456), Coolant type (R410A), Install date (2022). Register with ARC?" You click yes, system auto-submits to ARC database (API integration). Unit is now registered, visible in your dashboard: "Units registered: 280. Last audit: Jan 2026 (0 findings). ARC compliance: 100%." Every service logged includes: tech name + ARC licence (tech A, ARC-12345), date, work done (inspection, filter clean, coolant top-up, replacement parts), coolant quantity added/removed, customer sign-off. System auto-verifies: tech's licence is current (renewed within last 2 years). If Tech A's ARC licence is expiring soon (system alert 60 days before), you can't assign him to jobs (system blocks assignment) until he renews. No unlicensed services logged. Annual audit risk: zero (all 280 units registered, all 450 services logged by licensed techs). Competitors using AroFlo/simPRO: they're logging services in spreadsheets or notes, no ARC integration. If auditor calls: "Show me proof Tech A was licensed when he serviced unit XYZ on Jun 15." They dig through emails, photos, old ARC certificates. You: one click in dashboard, print report: "Unit XYZ, service Jun 15 by Tech A (ARC-12345, valid on Jun 15, renews Dec 2027). Service logged: filter clean, coolant top-up, customer sign-off Jun 15 2pm." Audit passes. You sleep well. Competitors get fines.

6. Invoicing with Parts Cost Recovery & Payment Tracking

Tech A services a unit: diagnoses capacitor failure ($25 cost, $75 retail). Replaces it, logs labour (2 hours @ $75/hr = $150), customer calls = urgent breakdown surcharge ($50). Invoice total: $75 parts + $150 labour + $50 surcharge = $275. AroFlo/simPRO: you manually create invoice, type "$275," send it. Customer gets it 2 days later (email delay), pays 30 days later (slow payment terms). You're chasing invoices in Jul for Jun work. Custom system: auto-generates invoice real-time (minute Tech A completes job, invoice is emailed to customer). Breakdown: "$75 capacitor (cost: $25, margin: 75%), $150 labour (2 hrs @ $75/hr), $50 emergency surcharge. Total: $275. Due: 7 days (aggressive terms, builds urgency)." Customer sees invoice, sees breakdown is fair (parts are itemized, labour is transparent, surcharge is explained). Customer pays in 2–3 days. You're collecting payment in days, not months. Multiple tech example: Tech A does residential job ($275, paid Day 3), Tech B does commercial job ($1,500, paid Day 5), Tech C does 3 small breakdowns ($150 + $120 + $180 = $450, paid Day 2). At end of week, you've collected $2,225 from 5 jobs. Cash flow is positive, weekly. AroFlo/simPRO: invoices sent manually, slow payment, you're always chasing. Payment tracking: custom system links to Xero (accounting integration). Every paid invoice auto-creates journal entry: debit cash, credit revenue. Month-end, your P&L is auto-populated. You know: Jun revenue = $52.3k (invoices sent), Jun cash collected = $48.6k (85% of revenue paid within 30 days), outstanding receivables = $3.7k (7% over 30 days, 4 customers). You see problem customers before they become bad debts. Competitors using simPRO: invoices sitting in Gmail, no tracking, no follow-up, bad debts pile up.

The ROI Math: 15-Tech HVAC Contractor (400+ Service Calls/Year)

A 15-tech HVAC operation (10 residential, 5 commercial) doing 400+ service calls/year (maintenance, breakdown repairs, installs) at $250–400 per call = $100k–160k/month revenue ($1.2M–1.9M/year). Current overhead: ServiceTitan ($229–449/mo × 15 = $45.8k–89.6k/yr) or AroFlo ($130 × 15 = $23.4k/yr) or simPRO ($105 × 15 = $18.9k/yr). Add labour bleed: manual dispatch (15 min per day × 250 days × $25/hr = $1,562/yr), inventory chaos (30 min/week lost time per tech × 15 techs × 50 weeks × $35/hr = $13.1k/yr), recurring contract admin (160 invoices × 5 min = 800 min = 13.3 hrs × $25 = $333/yr), ARC compliance tracking (2 hrs/week × 50 weeks × $35 = $3,500/yr compliance overhead + audit risk $10k–50k fine if caught), booking/payment chasing (1 hr/day × 250 days × $25 = $6,250/yr). Total annual cost: ~$42.8k–103.4k (software + labour, depending on SaaS choice). Custom platform: $145k build (GPS dispatch + capacity planning + inventory + recurring contracts + ARC tracking + invoicing), $4k/year hosting. Year one: $149k. Year two: $4k. Break-even: month 18 (1.5 years). Year three: $157k cumulative. At year three, ServiceTitan/AroFlo/simPRO + manual labour = ~$128.4k–310.2k (3 × $42.8k–103.4k average). Custom has paid for itself ($149k cost) and continues to save $40–60k/year in labour + subscription. By year 5, custom has saved: ($149k year 1 + $4k year 2 + $4k year 3 + $4k year 4 + $4k year 5 = $165k cost) vs ($72.6k × 5 = $363k manual cost average). Custom saves $198k by year 5 and scales infinitely to 30+ tech without licensing creep. Plus: zero ARC compliance risk (competitors face $10k–50k fine risk), 20% faster customer payment (cash flow advantage), 3 extra jobs/week per tech ($26k/year productivity gain × 15 techs = not applicable here, but per-tech margin improvement), recurring revenue automation ($55k/year passive income).

Australian HVAC Compliance & Regulations

HVAC in Australia requires ARC (Australian Refrigeration Council) licensing, EPA-equivalent refrigerant certification, and WHS (Workplace Health & Safety) compliance for height work. ARC licensing: any person or business servicing refrigerated air conditioning must hold ARC Licence (renewable every 2 years). Licence is issued to individuals (technician) and businesses (contractor). Individual ARC licence requires: EPA-equivalent refrigerant handling certification (Australia follows EPA standards for HFC, HFO, HCF etc. refrigerants), 2–5 day course, $2k–3k per person, exams. Business ARC licence requires: at least one designated responsible person (holds individual ARC licence), business liability insurance ($500–1k/year), compliance audit every 2 years ($2k–3k). ARC tracks every refrigerant-related service: when, where, by whom, how much coolant added/removed. Audit: ARC may pull 10–20 service records at random, verify tech held valid ARC licence on service date, verify refrigerant quantity is realistic (if you logged "added 5kg R410A to a 1.5kW unit" that's impossible, audit flag). Failure: $10k–50k fine, licence suspension, loss of business. Refrigerant handling: EPA-equivalent standards in Australia mean: HFC refrigerants (R410A, R407C) are being phased out (2025 deadline for new installs in some states), HFO refrigerants (R32, R454B) are preferred (lower global warming potential). Tech must know which coolant type each unit uses, verify you're using correct replacement. Example: unit uses R410A (HFC), tech installs R32 (HFO) as "equivalent," but units aren't compatible (different pressure ratings, different oils, different compressors). Incompatibility causes compressor failure, customer sues, you're liable. Custom system tracks coolant type per unit, alerts tech: "This unit requires R410A. You're assigned R410A-capable job only. R32 jobs go to Tech B." Electrical licensing: AC installation and certain repairs require electrical trade certification (varies by state: NSW = Electrical Contractor Licence, QLD = License to work with electricity, WA similar). Most HVAC contractors hire licensed electricians for grid wiring, but some do minor electrical (breaker replacement, wiring). If you do electrical work without licence, $5k–20k fine + customer sues. Custom system: tracks which techs are electrically licensed, blocks unlicensed techs from electrical jobs. WHS at height: AC units on roofs or high walls need WHS compliance. Tech must: hold White Card (general WHS induction, all workers in construction need it), hold specific fall-arrest certification (2-day course, $800–1k per person), work from harness + anchor point (roof inspector verifies anchor points yearly, $200–500 cost). Failure: tech falls, company liable for negligence claim ($500k+), licence suspension. Custom system: tracks WHS-at-height certification per tech, blocks assignment to roof jobs if not certified, alerts when certification expiring. Warranty registration: AC units come with warranty (compressor 5 years, system 10 years, labour 1–2 years). Installer must register within 30 days or warranty voids. 400 calls/year × 0.3 new installs per call avg = 120 new installs/year = 120 warranty registrations. Manual registration: 120 × 10 min = 1,200 min = 20 hours/year. Custom system: auto-registers (APIs to Daikin, Fujitsu, LG, etc.), tracks expiry, alerts 30 days before expiry if customer claims defect.

Six FAQs

Can we migrate from simPRO or AroFlo to custom without losing job history?

Yes. Both simPRO and AroFlo export all jobs, customers, invoices, and payments as CSV. Custom system imports historical data in hours, maintains customer profiles + job history, uses past patterns to predict load and resource plan. You start with a clean dispatch interface but keep all customer relationships + service history intact (for warranty claims, repeat customers, upsell opportunities on AC upgrades).

How does the system track parts per vehicle automatically?

Each van has a QR-code inventory tag. Tech scans parts when loading van (Monday morning restock, Monday evening restocking). System records: "Tech A's van: 8 capacitors, 3 contactors, etc." Throughout the week, as Tech A uses parts on jobs, he logs: "Job #123: used 1 capacitor, 0 contactors." System updates real-time: "Tech A's van: 7 capacitors (started week with 8)." At week's end, coordinator reviews all 15 vans, orders restock if low. Alternatively, tech can manually input (slower, but works if QR scanning is too much). System also alerts: "Tech A's van running low on capacitors (1 remaining). Next job needs capacitor. Recommend restock detour to warehouse before job."

What if a customer doesn't pay an invoice within 7 days?

System auto-sends reminder: email + SMS on day 4 ("Your invoice $275 is due in 3 days"). On day 8 (overdue), system sends escalation: "Payment overdue. Click here to pay or call to discuss." You (coordinator) get alert: "Customer Smith Residence, invoice $275, 8 days overdue. Last payment: Jun 1 (on-time). Recommend friendly follow-up call." You call, customer says "I thought I paid" or "Cash flow issue, pay by end of week." You track. If payment hits 30+ days overdue, system escalates: "Consider debt collection or legal action." Most HVAC customers pay within 30 days (recurring business, they know you'll cut service next time they call if they're delinquent).

How do we handle emergency jobs outside normal business hours?

Emergency heat pump repair on Sunday (customer paying premium $500 instead of $250 breakdown call). System allows: coordinator (or after-hours on-call manager) logs emergency job to queue. System assigns to on-call tech (rotated, Tech A on-call Jun 10–16). On-call tech gets SMS: "Emergency job, AC breakdown 45 Elm St, ETA 2pm, $500 revenue, click to accept." Tech accepts, system routes, customer sees ETA on map, job is logged same as weekday. Invoice marked "Emergency surcharge: $200" (part of $500 total). System tracks: emergency jobs per tech (burnout risk if one tech is on-call too much), on-call rotation (ensure fairness), emergency revenue (you see "Jun emergency revenue: $4.2k from 8 after-hours calls").

Can the system forecast demand (predict busy months)?

Yes. Historical data: previous 2 years of jobs by month, type (breakdown vs maintenance vs install), season. System shows: "Jun typical: 50 breakdown calls, 30 maintenance jobs, 2 installs. Jul typical: 35 breakdowns, 35 maintenance, 5 installs. Aug typical: 30 breakdowns, 40 maintenance, 8 installs (peak install season before Spring cooling demand ends)." You see trends. System recommends: "Jun is overbooked relative to staff capacity (need 7 residential techs, have 5). Jul is normal. Aug understaffed for install surge (need 2 extra techs or subcontract 3 installs to competitor, cost $1.5k each = $4.5k lost revenue or $1.5k subcontract cost)." You plan hiring or subcontracting based on forecast. Compared to AroFlo/simPRO (no forecast, just a calendar), you're making proactive resource decisions vs reactive scrambling.

How does invoicing work if a job involves multiple techs?

Example: Job #456, AC install (new unit, 8 hours labour). Tech A (Day 1, outdoor unit installation + electrical rough-in, 4 hours). Tech B (Day 2, indoor unit installation + ductwork, 3 hours). Tech C (Day 3, commissioning + testing, 1 hour). System logs all 3 techs, auto-calculates: 8 hours × $75/hr = $600 labour + $1,800 unit cost = $2,400. All 3 techs contribute, invoice is single (customer pays $2,400 once, not three invoices). Each tech is credited on timesheet (Tech A: 4 hours, Tech B: 3 hours, Tech C: 1 hour). Payroll is calculated per tech (if Tech A is paid hourly, gets 4 hours pay; if on salary, no adjustment). Revenue recognition is single invoice (match to labour cost, not split 3 ways). System auto-handles this complexity; manual invoicing (simPRO) = you're creating 3 invoices or one invoice with guessed labour split.

The Bottom Line

ServiceTitan is the US gold standard but Australian pricing is opaque ($229–449/seat/mo, long-term contracts). AroFlo and simPRO are cheaper ($80–180/mo and $60–150/mo) but lack core HVAC operations: real-time GPS dispatch (you're assigning manually, no route optimisation), capacity planning (you see overbooked calendar, no suggestion), parts inventory per vehicle (you guess which parts are in which van, tech wastes time finding parts), recurring contract automation (160 jobs/year created manually or semi-automated), ARC compliance tracking (zero integration, you're managing audit risk), invoicing and payment chasing (manual, slow payment, weak cash flow). A 15-tech HVAC contractor using ServiceTitan, AroFlo, or simPRO + manual labour pays ~$42.8k–103.4k/year (software + labour bleed). Add ARC audit risk ($10k–50k fine if caught non-compliant). Custom platform costs $145k upfront, $4k/year ongoing. Year one: expensive. Year two: break-even (month 18). Year three: custom has paid for itself and saved $40–60k in labour + subscription. You own the GPS dispatch (eliminate manual assignment + route dumb), the capacity planning (prevent overbooking, capture emergency upsells), the parts inventory (zero tech downtime waiting for parts), the recurring contracts (auto-schedule + auto-invoice $55k/year passive revenue), the ARC compliance (zero audit risk), and the invoicing + payment (fast cash, clean accounting). ServiceTitan owns your $45.8k–89.6k/year subscription. A 15-tech business scaling from 15 → 25 → 35 crew over 3 years bleeds $128.4k–310.2k to SaaS + manual labour + audit risk. Custom costs $145k once and scales to 50 crew, $0 per-seat licensing. Own your dispatch. Own your capacity planning. Own your inventory. Own your compliance. Own your revenue.

Ready to build a custom operations platform for your HVAC business? Check Aidxn's custom software packages, or book a call to discuss your current crew size, service volume (calls/month), pain points with ServiceTitan/AroFlo/simPRO, recurring revenue goals (quarterly maintenance, premium plans), ARC compliance burden, and scaling plans (15 → 25 → 35 crew).

Let us make some quick suggestions?
Please provide your full name.
Please provide your phone number.
Please provide a valid phone number.
Please provide your email address.
Please provide a valid email address.
Please provide your brand name or website.
Please provide your brand name or website.