Event Schema · Orchestrator

15 event types · event-driven · zero coupling

Event cascade — autonomy flow

inventory.updated

freshscore recomputes on stock change

freshscore.updated

pricing applies FreshScore-band discount

freshscore.updated

zero-waste lists if score < 40

price.adjusted

behavior AI surfaces discounted Smart Basket

recommendation.generated

worker subscribes / orders

order.created

routing assigns driver

delivery.completed

ledger finalizes settlement

order.fulfilled

sustainable-action credits awarded

subscription.renewed

renewal dispatches fulfillment order

commerce

inventory.updated

Emitted when stock changes are detected from POS / RFID / shelf sensors / expiry OCR / warehouse systems.

Producer

inventory-telemetry-service

Consumers (3)

freshscore-enginezero-waste-marketplace-servicepricing-orchestrator-service

Payload

inventory_item_idstringrequired
skustringrequired
batchstring
locationstringrequired
quantity_deltanumberrequired
conditionenum: ambient|chilled|frozen
telemetry_sourceenum: pos|rfid|shelf_sensor|expiry_ocr|warehouse|manual

Triggers

  • freshscore-engine recomputes FreshScore
  • zero-waste lists overstock/near-expiry
  • pricing re-evaluates if needed
commerce

freshscore.updated

Emitted when FreshScore (0-100), spoilage probability, and discount window are (re)computed for an item.

Producer

freshscore-engine

Consumers (4)

pricing-orchestrator-servicezero-waste-marketplace-servicemeal-planner-servicebehavior-ai-service

Payload

inventory_item_idstringrequired
skustringrequired
freshscorenumber (0-100)required
spoilage_probabilitynumber (0-1)required
recommended_discount_window_hoursnumberrequired
recommended_discount_pctnumberrequired
factorsstring[]

Triggers

  • pricing applies FreshScore-band discount
  • zero-waste auto-lists if score < 40
  • meal planner prioritizes discounted produce
commerce

price.adjusted

Emitted when a dynamic price is set from FreshScore bands, employer subsidy rules, and partner margins.

Producer

pricing-orchestrator-service

Consumers (4)

supplier-hub-serviceworker-osemployer-ospartner-os

Payload

inventory_item_idstringrequired
skustringrequired
old_price_aednumberrequired
new_price_aednumberrequired
discount_pctnumber
reasonenum: freshscore_band|employer_subsidy|promotion|overstock|partner_rule
employer_idstring?
partner_idstring?

Triggers

  • sync to POS
  • sync to consumer app
  • sync to Employer OS
commerce

waste.item_flagged

Emitted when an item is auto-listed on the zero-waste marketplace (near-expiry, surplus, cosmetic defect).

Producer

zero-waste-marketplace-service

Consumers (4)

credit-engineworker-osconsumer-apppartner-os

Payload

inventory_item_idstringrequired
skustringrequired
listing_idstringrequired
reasonenum: near_expiry|surplus|cosmetic_defect|overstock
listed_price_aednumberrequired
bundlestring?

Triggers

  • listing visible in Worker/Consumer surfaces
  • buyers earn credits on purchase
lifecycle

order.created

Emitted when a consumer/worker places an order (Smart Basket, subscription fulfillment, or marketplace purchase).

Producer

checkout-service

Consumers (4)

routing-engineledger-servicecredit-enginesupplier-hub-service

Payload

order_idstringrequired
consumer_idstringrequired
itemsarray<{sku, qty, price_aed}>required
total_aednumberrequired
employer_subsidy_aednumber
credits_appliednumber
sourceenum: smart_basket|subscription|marketplace|manual

Triggers

  • ledger posts atomic transaction
  • routing assigns delivery
  • supplier-hub confirms inventory
lifecycle

order.fulfilled

Emitted when an order is delivered and confirmed complete.

Producer

routing-engine

Consumers (4)

ledger-servicecredit-engineemployer-osworker-os

Payload

order_idstringrequired
delivered_atdate-timerequired
driver_idstring
credits_earnednumber

Triggers

  • ledger finalizes settlement
  • credit-engine awards sustainable-action credits
subscription

subscription.created

Emitted when a new micro-subscription is created (daily essentials, veggie box, employer pack).

Producer

subscription-engine

Consumers (3)

ledger-serviceworker-osemployer-os

Payload

subscription_idstringrequired
consumer_idstringrequired
typeenum: daily_essentials|weekly_veggie_box|employer_sponsored_packrequired
price_aednumberrequired
renewal_cycleenum: daily|weekly|monthly
employer_sponsoredboolean
auto_substituteboolean

Triggers

  • ledger opens subscription ledger
  • first renewal scheduled
subscription

subscription.renewed

Emitted on each successful auto-renewal; billed via ledger with employer/worker split if configured.

Producer

subscription-engine

Consumers (3)

ledger-serviceworker-osemployer-os

Payload

subscription_idstringrequired
consumer_idstringrequired
cyclestringrequired
amount_charged_aednumberrequired
employer_split_aednumber
worker_split_aednumber
next_renewal_datedate

Triggers

  • ledger posts renewal charge
  • items dispatched to routing
subscription

subscription.paused

Emitted when a subscription auto-pauses (travel, job change) or is manually paused.

Producer

subscription-engine

Consumers (3)

ledger-serviceworker-osemployer-os

Payload

subscription_idstringrequired
consumer_idstringrequired
reasonenum: travel|job_change|manual|payment_failed
resume_datedate?

Triggers

  • ledger holds billing
  • auto-substitute disabled until resume
subscription

subscription.failed

Emitted when a renewal charge fails (insufficient credits, payment error).

Producer

subscription-engine

Consumers (3)

ledger-serviceworker-osemployer-os

Payload

subscription_idstringrequired
consumer_idstringrequired
errorstringrequired
retry_countnumber

Triggers

  • ledger reverses hold
  • worker notified
  • subscription marked failed after retries
credit

credit.earned

Emitted when a consumer earns grocery credits for a sustainable action.

Producer

credit-engine

Consumers (2)

worker-osemployer-os

Payload

consumer_idstringrequired
amountnumberrequired
reasonenum: near_expiry_purchase|packaging_return|local_produce|campaignrequired
reference_idstring
balance_afternumber

Triggers

  • GroceryCreditsLedger entry
  • visible as Grocery Benefits in Worker OS
credit

credit.spent

Emitted when a consumer spends grocery credits on a discount, free delivery, or essential pack.

Producer

credit-engine

Consumers (2)

worker-osledger-service

Payload

consumer_idstringrequired
amountnumberrequired
reasonenum: discount|free_delivery|essential_packrequired
reference_idstring
balance_afternumber

Triggers

  • GroceryCreditsLedger entry
  • applied to order total
intelligence

recommendation.generated

Emitted when the behavior AI generates Smart Basket suggestions or personalized discounts.

Producer

behavior-ai-service

Consumers (3)

worker-osconsumer-appmeal-planner-service

Payload

consumer_idstringrequired
recommendationsarray<{title, reason, type}>required
channelenum: smart_basket|discount|subscription_suggestion
model_usedstring

Triggers

  • Smart Basket surfaced in Worker OS
  • meal planner incorporates suggestions
intelligence

delivery.assigned

Emitted when the routing engine assigns an order to an optimized route and driver.

Producer

routing-engine

Consumers (3)

worker-ospartner-osconsumer-app

Payload

order_idstringrequired
route_idstringrequired
driver_idstringrequired
eta_minutesnumberrequired
perishable_priorityboolean

Triggers

  • driver notified
  • ETA shown to consumer
intelligence

delivery.completed

Emitted when a delivery is confirmed complete (order.fulfilled follows for ledger finalization).

Producer

routing-engine

Consumers (3)

ledger-servicecredit-engineemployer-os

Payload

order_idstringrequired
route_idstringrequired
completed_atdate-timerequired
on_timeboolean

Triggers

  • order.fulfilled emitted
  • credit eligibility evaluated

Live event stream

from GroceryEvent store

No events recorded yet — seed sample events to see the stream.

Event-driven orchestrator

Every grocery module reacts to events — no tight coupling. Each event carries a correlation_id linking the full item/order lifecycle. Events are versioned (schema_version) for backward-compatible evolution and tracked through emitted → processing → processed.