Dispatch intelligence for field service
Squeeze one more job out of every truck, every day.
Routely assigns the right technician, builds the optimal route, and rebuilds the board in under five seconds when an emergency hits. Runs standalone or bolts into ServiceTitan, Jobber, and Housecall Pro.
Seven engines. One API. One learning loop.
Each engine is a pure TypeScript module. Unit-tested. Independently replaceable. No engine imports another. Composition happens at the API layer.
Assignment
Scores every technician against every job on five factors. Explainable. Weights are versioned and pinned to every decision.
Routing
Greedy insertion with time windows. Sub-second for a daily board. LRU-cached distance matrix to control map API spend.
Emergency Rerouting
Priority one job arrives. Board rebuilds in under five seconds. Displaced jobs get new owners and customers get notified.
Prediction
Rolling mean and variance per technician per skill. Falls back to skill-level prior, then job estimate. Welford's algorithm online.
SLA Risk
Flags jobs that will probably miss the window before they do. Logistic model over driving slack, day load, and technician variance.
Simulation
Add a truck, shift windows, close a territory. Get the projected throughput, on-time rate, and revenue delta in seconds.
Learning
Nightly retrain on ninety days of outcomes. Grid perturbation around current weights, bounded step size, versioned history.
Audit trail
Every assignment persists scoring inputs, predicted duration, delay risk, and weights_version. Replayable forever.
Integrations
Normalized internal job model. ServiceTitan REST, Jobber GraphQL, Housecall Pro REST. Adapters, not dependencies.
Explainable by design
Every assignment carries a reason.
Not a black box. Not a prompt. A deterministic score built from five weighted factors, with the weights version pinned to the decision. Any assignment can be replayed against the exact inputs that produced it.
See the decision trail{
"technicianId": "tech_taylor",
"score": 94.2,
"rank": 1,
"reason": {
"skill_match": 1.0,
"distance_score": 0.95,
"priority_weight": 1.0,
"performance": 0.96,
"availability": 1.0,
"predicted_duration_minutes": 88,
"delay_risk": 0.08
},
"weightsVersion": 14
}"Dispatchers stopped triaging the board and started running the day."
— Operations lead, 42-truck HVAC company
"Rolled out the ServiceTitan bolt-on in an afternoon. Drive minutes dropped the next day."
— General manager, regional plumbing chain
"The audit trail on every assignment was the deciding factor for our enterprise rollout."
— VP operations, commercial field services
Ready to look under the hood?
OpenAPI spec, security posture, and the full decision model are linked below. API keys by request.