AI for Route & Crew Scheduling

IndustryHome ServicesAI SolutionAI scheduling engine

Lust For Dust is a house cleaning company, and every day starts with the same puzzle: who cleans what, when, and in what order.

For years that puzzle lived in one giant Google Sheet, with the owner juggling staff and client availability, travel time across town and a steady stream of last-minute changes, all by hand. So we built them a custom web app with an AI scheduler at its core.

We turned hours of planning into minutes
The goal

Take the manual work out of scheduling without taking the owner out of a single decision.

01
Obstacles

Moving Parts

Every booking balances crew skills, client time windows, travel distance and priority, all at once.

Travel & Routing

Crews cross town all day. A bad stop order burns hours and gas that never show up on an invoice.

Real-Time Disruption

One 7am call-in reshuffles the whole day, and the schedule has to rebuild around the gap fast.

Judgment Calls

Every schedule has rules. Real days break them, and knowing when is a judgment call no spreadsheet makes.

02
Decision

Every project starts with one question:
buy, automate, build, or wait?

Buy

We find the software that already solves it, vet it against how you work, and get your team running on it. Live in days.

Automate

We connect the tools you already use so the manual steps disappear and data moves on its own.

Build

We design and develop something custom from the ground up. Built for how your business runs, owned by you.

Wait

We tell you when holding is smarter. You leave with a clear reason and a date to revisit.

Why We Choose Build

  • Buy failed: no off-the-shelf scheduler models a cleaning crew's real constraints.
  • Automate failed: wiring spreadsheets together doesn't solve the optimization or the judgment calls.
  • Wait failed: every week in the spreadsheet costs real hours.
Audit Results

Before we recommend anything, we score the project on three things: how unique the work is, what a mistake costs, and how much of it runs on human judgment.

Company Specificity4 / 5
Off-the-shelf fitsOne of a kind
Cost of Error4 / 5
Low stakesMissed cleans, wasted drives
Judgment Required5 / 5
Rote and rules-basedHeavy human judgment
03
How It Works

The engine solves; Katie decides.

1

Intake

Unified data model

Crew availability, client windows, job types, and priorities all live in one place instead of scattered across a spreadsheet.

2

Solve

Constraint solver

The engine generates a full day or week at once, assigning crews and ordering stops to satisfy the most constraints and cut drive time.

3

Route

Google Distance Matrix

Every route is scored against live road times and ETAs, so crews aren't doubling back across town.

4

React

Event-driven re-solve

A call-in or cancellation fires an event and the affected day rebuilds itself in seconds, no manual scramble required.

5

Override

Human in the loop

Katie can pin, swap, or force any assignment. The system treats her call as fixed and recalculates drive times and ETAs around it.

6

Notify

AWS Pinpoint SMS

Clients get texts only when they should. Per-client rules and a notify-some-or-all control keep it precise, with dedupe so no one gets doubled.

7

Bill

Time + invoice sync

Team leads log a cleaning-vs-checking split before clocking out, and it flows onto pending invoices for admin review and approval.

04
Results

Before vs. After

TaskBefore the OptimizerWith the Optimizer
Building the weekly scheduleHours in Google Sheets, by handGenerated in seconds, ready to tweak
Drive-time planningGuesswork and memoryLive ETAs and optimized stop order
A morning call-inManual scramble, rebuild by handAutomatic re-solve around the gap
Client notificationsManual texts, easy to double-sendRule-based and deduped, notify some or all
Breaking a rule for one jobOnly in Katie's headBuilt-in override with recalculated impact
Billing accuracyCleaning vs. checking tracked looselyEnforced split on every timecard
05
Technical

The Technical Build

Constraint Solver
Schedule generation

Models crew skills, client windows, travel, and priority as constraints, then searches for the schedule that satisfies the most of them. Where optimization logic earns its keep.

Google Distance Matrix
Drive times + ETAs

Real road times between every stop, so routes are ordered against actual traffic instead of a straight-line guess on a map.

Event-Driven Re-solve
Real-time

A call-in or cancellation emits an event; the affected day re-solves on its own instead of waiting for someone to notice and start over.

Override Engine
Human in the loop

Any assignment can be pinned or forced by hand. The solver treats it as fixed and recalculates everything downstream around it.

AWS Pinpoint
Two-way SMS

Custom two-way texting with an inbox UI - less work than forcing messages through a third-party field tool, and fully under our control.

Notification Ledger
Dedupe

Tracks exactly who's already been told, so hitting "notify everyone else" never doubles up a client who already got the text.

System Architecture
Admin Dashboard
Web app
API
Backend
Scheduling Engine
Constraint solver + re-solve workers
Optimization core
PostgreSQL
Crews · clients · schedules
External services
Google MapsAWS PinpointHouse Call Pro
OptimizationConstraint solver weighs crew skills, client windows, travel, and priority in a single pass.
RoutingGoogle Distance Matrix for real drive times, with stops ordered to cut total mileage.
Real-timeEvent-driven workers re-solve the day the moment a call-in or cancellation lands.
MessagingAWS Pinpoint two-way SMS with a dedupe ledger and a pending-communications queue.
OverridesAny human decision is locked, and the schedule recalculates its impact around it.
RoadmapBuilt MVP-first, with House Call Pro sync and granular crew permissions scoped for later.

Have a schedule too complex to keep doing by hand?