Skip to content
All For One
A backyard pool glowing at dusk behind an Arizona home
All work
Case 02 / 08 Phoenix pool-service company

The operating system for a 200-pool route business

A weekly pool-service company ran on a field app that could not answer the owners' real questions. I built the business system around it: routes, filters, jobs, quotes, a tech portal on the phone, and an assistant the owners can just ask.

Headline figure
341 to 288 miles a week on the routes, from fixing the order of the stops alone
Built with
Next.js, React, MongoDB Atlas, Azure Blob
Client
Phoenix pool-service company, kept anonymous
The problem

A weekly pool route lives or dies on three things: how far the trucks drive between pools, whether filters and equipment get serviced on time, and whether the owners can see what each pool and each tech actually earns. The field-service app held the visits and the invoices. It could not answer any of those questions, and it has no public API.

The numbers

Measured on the project. Nothing rounded up, nothing projected.

01 341 to 288 miles a week on the routes, from fixing the order of the stops alone
02 202 active weekly accounts and 214 weekly stops run through it (September 2026)
03 10,564 invoices from 2016 to 2022 recovered from the old platform, so the history is provable
04 147 former customers with two or more years of history, turned into a call list
03

What I built

A full business system that sits next to the field-service app and makes its data useful:

  • Route optimisation that re-orders each tech's stops (nearest neighbour, then 2-opt)
  • Filter, algaecide and equipment schedules, so nothing due slips past a visit
  • A tech portal on the phone, PIN-gated, where techs log jobs, filter cleans, photos and equipment checks
  • Quotes, jobs, leads and revenue views the owners use every day
  • A weekly refresh that pulls the field-service exports every Monday morning, checks them, loads them and texts the owners the numbers
  • "Ask Jarvis", where an owner types a question about the business and gets an answer from the data in about a minute. It reads only: it never texts a customer, sends an invoice or changes a record.
Inside the build

Mockups with sample data. The way the system works is real.

  1. 01 / 03The owners see accounts, stops and revenue in one place, refreshed every Monday. Sample data.

  2. 02 / 03Routes re-ordered so each truck drives the shortest loop through its pools. Sample data.

  3. 03 / 03Ask a question about the business and get the answer from the data. It reads only. Sample data.

04

What happened

Re-ordering the stops took the routes from 341 to 288 miles a week with no change to who serves which pool. The measured lesson: a full territory reshuffle did not pay at these volumes. Fixing the stop order did.

Recovering the old platform's exports added 10,564 invoices from 2016 to 2022, so years of customer history are provable instead of remembered. From that history the system built a call list of 147 former customers who had been with the company for two years or more, longest tenure first, ready for the owner to call.

Four white service vans parked in a yard at sunrise
Why it matters

Most route businesses already have the data. It is just locked inside an app that was built for scheduling, not for running the business.

Built with

  • Next.js
  • React
  • MongoDB Atlas
  • Azure Blob
  • Field-service exports
  • Route optimisation
  • CRM SMS
  • Vercel

The client is kept anonymous. Every number on this page was measured on the project. Photos are stock and screens are mockups with sample data.