Kafka or Pulsar streams accept sanitized clicks, views, and payment updates, batching with exactly‑once semantics. Windowed aggregations compute recency, momentum, and saturation, while a governed feature registry versions definitions, backfills history, and guarantees that experiments use the same business logic everywhere, avoiding shadow metrics.
Contextual bandits and propensity ensembles balance exploration with conversion goals, refreshing on near‑real‑time snapshots without memorizing individuals. We monitor AUC and calibration, retrain with data drift triggers, and allocate traffic adaptively so better offers expand reach while still protecting new ideas from premature shutdowns.
P99 response budgets shape feature scope and model complexity, while autoscaling microservices isolate traffic spikes from dependencies. Circuit breakers, idempotent writes, and dead‑letter queues protect integrity. Blue‑green deployments and synthetic load tests rehearse failure, making delightful offers more likely to appear than timeouts or confusing duplicates.