| Realtime game state | Cloudflare Durable Objects + hibernatable WebSockets | Authoritative per-game state, strong coordination, cheap idle sockets, already matches the KBT edge stack. | Ably Pub/Sub if we need a managed cross-cloud realtime bus. |
| Host camera/video | Cloudflare Realtime SFU | WebRTC/SFU media on Cloudflare's network, suitable for low-latency presenter feed. | LiveKit or Daily for richer video SDKs if Cloudflare Realtime gaps block us. |
| Broadcast/replay | Cloudflare Stream | Serverless live/on-demand video, recording, playback and simulcast. | Mux if product needs media workflows Cloudflare Stream cannot cover. |
| Operational data | D1 for relational data; DO SQLite for per-game state | D1 is the shared ledger; DO storage is the room-local source during live play. | Postgres only if D1 limits become real business limits. |
| Assets | R2 | Generated images, audio, proof packs and exports need object storage without painful egress economics. | Keep external media CDNs only for third-party assets. |
| Generation | OpenAI Responses + Structured Outputs + Web Search + Batch | Strict schemas, sourced current facts and bulk generation fit KBT's question factory. | Use specialist tools only for media types OpenAI does not handle well enough. |
| Quality gates | OpenAI Evals + Playwright visual QA | Content quality and slide quality both need automated regression gates. | Manual-only review is too slow for mass production. |
| Load testing | k6 WebSocket + browser tests | Live trivia fails at connection spikes, not just page load. | Cloud load testing later for very large national events. |
| Security | Turnstile + Cloudflare WAF/API protection + host audit controls | Protect signups and high-risk actions without making normal pub users miserable. | Passkeys for admin/hosts later. |
| Observability | Workers Analytics Engine + dashboards + structured logs | We need live evidence: latency, reconnects, failures, rooms, venues, players and question performance. | Sentry for frontend exception visibility if needed. |