Designing either surface in isolation breaks the other.
The courier is on a scooter with one thumb and no spare attention. The dispatcher is at a desk trying to see everything at once.
Most delivery products design one properly and let the other inherit its patterns.
Let the two surfaces diverge
Shared data does not mean shared layout. The interfaces should be as different as the contexts are.
Next-action for the courier, exception-first for the dispatcher.
The two applications share entities and nothing else.
The courier sees one thing
Never a list of decisions — always the thing happening now.
Large targets, states readable in peripheral vision, and no screen that requires reading while moving.
The dispatcher sees everything wrong
Exceptions first, normal operations quiet.
Attention goes to what is going wrong rather than what is fine, which is the only way a single person monitors a fleet.
Two interfaces tuned to genuinely different contexts.
Sharing a data model but not a layout philosophy turned out to be the decision that made both usable.