STAGE 01
Channels
Orders arrive from seven channel types through three mechanisms — signed webhooks
(Uber Eats, Mr D Food, Deeliver), durable pollers with reconcile sweeps (Yango / SUPA),
and first-party APIs (the embeddable Merchant POS and the Supa customer app).
- webhook · poller · api
- virtual stores included
STAGE 02
Ingestion
Every source gets its own validator and payment strategy — gateway-paid, aggregator-settled
or confirmation-gated. Dead orders are dropped before stock is touched. Combos sold as a
single virtual SKU are exploded back into components, each holding real batch stock atomically.
- idempotent — replays can't duplicate
- reject path: dropped pre-stock
STAGE 03
The Pool
Auto-acceptance within each platform's SLA with verified retry logic — a transient API blip
never kills an order; a truly dead one is failed fast so no packer wastes time on it. Then
fairness-based auto-assignment: least-recently-assigned, driver-aware grouping. No manual claiming.
- unaccepted → auto-timeout, stock released
- failure is a feature, handled honestly
STAGE 04
The Floor
Barcode-driven packing on web terminals, Android handhelds and a native packer app on FCM.
Split grocery / kitchen flows with a kitchen display and order parking. Substitutions, removals
and reductions happen with the customer involved live — refund amounts included.
- barcode-driven fulfilment
- item changes loop back into comms
STAGE 05
Herald → Envoyer
One semantic event per order moment fans out simultaneously to five surfaces — store terminal,
kitchen display, staff feed, packer's phone, and the buyer. Meanwhile the Envoyer pushes state to
each marketplace through protocol adapters that declare what their platform truly supports.
- one event = one emitter, no doubles
- capability contracts — never pretended
STAGE 06
Delivery & Resolution
Aggregator couriers, Uber Direct dispatch, Bob Go shipments — courier events are first-class.
A courier bailing does not cancel the order. Cancellations flow store→platform,
platform→store and customer→store, each exactly once, with refunds and stock release per payment model.
- courier ≠ order
- driver location streamed to tracking