Pool Service & Maintenance// CASE STUDY · April 8, 2026
// The build

Daily route optimizer saves 32 hours a week on dispatch

An Orange County pool service was burning a manager every morning on route changes. A 5am workflow now regenerates the optimal route from cancellations, add-ons, and per-tech constraints — and pushes it to each tech before they leave the yard.

Hours saved per week
32
from 6+ hrs/day to ~10 minutes
// Demonstration scenario — realistic for this category, not a named client

The problem

The shop ran roughly 120 pools on a weekly recurring schedule. Add-ons (chemical-balance calls, equipment installs) and cancellations ("we're out of town this Tuesday, skip us") came in by SMS and email all day. The dispatcher spent the first 90 minutes of every morning copying changes into a Google Sheet, eyeballing a new route, and texting each tech individually.

When the dispatcher took a one-week vacation, route quality collapsed — techs drove an extra 90 minutes a day because nobody else knew the service area well enough to optimize by hand.

What we built

Two pieces, wired together. An SMS / email intake agent classifies inbound messages (skip, reschedule, add-on, complaint) and writes the structured change to a Supabase table. A 5am scheduled workflow then pulls today's bookings plus any open work orders, runs them through a route optimizer with per-tech constraints (geographic zone, certifications, vehicle type), and pushes the resulting route to each tech's phone before they leave the yard.

route.generate --date today
→ pulling bookings :: 117 stops
→ resolving constraints :: 4 techs
→ optimizing :: drive time -38%
→ pushing to techs
READY

The intake agent's "did the customer mean skip-once or cancel-forever?" disambiguation is one of the smaller pieces of the system that turned out to matter the most.

Inbound textClassification
"skip us next tues we're out of town"skip-once
"please cancel our service"cancel-forever
"can you come weds instead this week"reschedule-once
"we've moved, pls update address"update-customer-record

The numbers

Hours saved per week on routing
32
dispatcher reviews, doesn't build
before :: 6 hrs/day
after :: ~10 min/day
before :: Daily drive time
8h 40m
after :: Daily drive time
5h 20m

"We didn't need a new dispatcher. We needed the existing one to stop building the route by hand." — operator note, post-launch retro

The stack

n8nSupabaseGoogle RoutesTwilioCustom optimizer

Want one of these?

[ TL ][ TR ][ BL ][ BR ]

Stop clicking. Start automating.

15 minutes. No pitch deck. No sales theater. Just a real conversation about what's slow, what's broken, and what we'd automate first.

Book a 15-min Intro Call
Prefer email? sergio@alphaprism.net