One of our HVAC clients in central Florida (anonymized below as “Atlas HVAC”) was spending roughly 11 hours per week on dispatch—routing 8 techs across an average of 32 daily service calls, accounting for skill match (refrigeration vs. ductwork vs. install), customer history, time-of-day urgency, and traffic. The dispatcher’s job was 90% Excel and Google Maps. We rebuilt the workflow over 3 weeks. The end-state cut dispatch time to 3 hours/week, an effective 73% reduction.
Below is the full setup, tools, and the cost.
The starting state
- 8 service techs, 4 install techs, all mobile
- 32 daily service calls average, peaking at 45 on hot summer days
- Dispatcher (one person) spent 7am–9am routing the day, then 1–2 hours throughout the day rebalancing as new emergencies came in
- Tech-specialty mismatch happened 2–4 times per week (refrigeration tech sent to a ductwork-only call, etc.)
- Customer no-shows: 12% of scheduled appointments, mostly because day-before reminders were inconsistent
The build
We did not switch their CRM (they were on ServiceTitan and the migration cost would have been prohibitive). We wrapped the existing CRM with three automation layers:
Layer 1: Tech-specialty matrix
A simple JSON config in n8n mapping every tech to their certifications, comfort categories, and customer-history flags. When a job hit the queue, the matrix scored available techs against the job category and recommended the top three.
Layer 2: Daily route optimization
A morning Zapier job pulled the day’s scheduled calls from ServiceTitan, hit the Google Maps Distance Matrix API, ran a simple traveling-salesman optimization (we used Google’s OR-Tools constraint solver as a Python microservice on Cloudways), and pushed an optimized route back to ServiceTitan with the recommended tech-call assignments. Total compute time: ~12 seconds per day.
Layer 3: Day-before reminder system
Auto-text the customer at 6pm the night before, with confirm/cancel/reschedule links. Confirms feed back into ServiceTitan, cancellations and reschedules trigger a re-route in the morning. No more manual reminders.
What the numbers looked like at 90 days
- Dispatch time: 11 hrs/week → 3 hrs/week (-73%)
- Tech-specialty mismatch: 2–4/week → less than 1/month
- No-show rate: 12% → 4%
- Productive minutes per tech per day: ~5.8 hrs → ~6.6 hrs (+12%, primarily from optimized routing reducing dead travel)
- Customer satisfaction score (post-job survey): 4.6 → 4.8 (+0.2), driven mostly by tighter arrival windows
Cost to build and run
- One-time setup: $4,800 (custom routing microservice + n8n workflows + ServiceTitan webhook integration)
- Ongoing monthly: $120 (Google Maps API + Cloudways VPS for the routing service + n8n cloud)
- Time-to-implement: 3 weeks from kickoff to full production
Total payback period at the dispatcher’s loaded cost ($28/hr fully-loaded) was about 6 weeks from go-live. The productivity gain on the techs themselves was an additional benefit that we don’t count toward payback because it’s harder to attribute precisely.
What we’d do differently next time
Two lessons from the Atlas build that we’d front-load on a future client:
- Build the day-before reminder system FIRST. It’s the cheapest piece and has the biggest customer-experience impact. Dispatchers love it because no-show rebooking is the most frustrating part of the day.
- Map the tech-specialty matrix in week one, before any automation work. Atlas had a more nuanced tech-specialty structure than they initially described (one tech only does residential, two only do commercial, one is the senior who takes the complex diagnostics). Building the matrix later forced us to refactor the routing logic.
If your dispatcher is spending 8+ hours a week routing, the math here is straightforward. Half the work is system design, half is integration with your existing CRM. The technology side is well-established at this point. We can walk through your specific setup in a 30-minute audit.
Spending 4+ hours a week on admin?
We automate the lead-routing, scheduling, review, invoicing, and follow-up workflows so you can focus on the work your customers actually pay for: doing the job well.