#1Why naive greedy matching fails
Greedy matching ignores opportunity cost. A driver dispatched to a nearby short ride may be unavailable for a more valuable distant ride seconds later. The system optimises a local move and a global loss.
#2Defining the objective function honestly
The hardest part of dispatch is not the algorithm — it is admitting what the system should optimise. Customer ETA? Driver earnings? Network throughput? Most products want a weighted blend, and the weights have to be transparent.
#3Picking the right model class
- Bipartite matching with deferred acceptance for small markets.
- Mixed-integer optimisation for batched dispatch windows.
- Reinforcement learning at very large scale when reward functions are well understood.
#4Production engineering around the algorithm
Dispatch math earns its keep only if the engineering around it is rock-solid: fast geospatial indexing, deterministic deadlines, idempotent retries, and observability into every match decision.

