← All work
Case 04Scheduling engine

Cadence

A constraint-based scheduling engine for 900 field technicians, replacing a nightly batch job that everyone had learned to work around.

ClientField-services platform
Year2023
RoleArchitect
Engagement4 months

01 — The problem

Dispatch ran overnight and was wrong by nine in the morning. Technicians rearranged their own days by phone, the schedule of record became fiction, and the company was billing from the fiction.


02 — What I did

Reframed scheduling as continuous constraint solving rather than a nightly batch, with incremental re-solves on every real-world event.

Built the solver service in Python with a hard 300ms budget for re-dispatch, so the schedule reacts before a human would.

Modelled the constraints with the dispatch team in the room, which surfaced four rules nobody had written down.

Fig. 1 — the system as designed
Fig. 2 — the system in production

Dispatch stopped arguing with the schedule. First time in nine years.
Operations director, Field-services platform

03 — Outcome

18%

More jobs completed per technician-day

300 ms

Re-dispatch after any schedule event

1

Schedule of record, finally


04 — What I left behind

A constraint model the dispatch team can read and amend themselves.

A simulation mode for testing rule changes against last month’s reality.

One schedule of record, and billing wired to it.

Stack
PythonOR-ToolsPostgresRedisFastAPI

NorthgateAll work
Next case — 05 / 2023

Slate

The paved road for forty engineers: one way to create, ship and observe a service.

Read the case →

Got a system that needsdesigning properly this time?

Contracts from six weeks. I read every enquiry myself and reply within two working days, usually with an awkward question about your data model.

Start an enquiryjoey@startupapps.shopGitHubMedium