Prize Wheel
A portrait prize-wheel kiosk built for the premium hospitality lounge at a major golf championship in July 2026. Guests unlock the screen, swipe, and the wheel lands on a prize — but the spin is cosmetic. A weighted allocation engine decides every outcome so prize ratios, daily limits and rare-item timing exactly match the sponsor's pre-agreed plan. The kiosk runs the engine locally so it never depends on venue wi-fi, and a separate admin platform gives the operations team live inventory, an activity log, a spreadsheet importer and a full-event simulator.
The brief, the build, and the result.
Prize Wheel is the kiosk activation Remiam built for two co-sponsoring financial brands in the premium hospitality lounge at a major golf championship across eight days in July 2026. The visible experience is deliberately simple: a masked portrait screen shows only a circular wheel, staff unlock it with a shared password, the guest swipes, and the wheel decelerates onto a prize. Everything underneath exists to make that moment trustworthy. The wheel is not fair chance — it animates to an outcome an allocation engine has already chosen, drawing each prize with weight equal to the units still available and decrementing as it goes. Over the run that reproduces the agency's prize plan exactly: no oversell, no early grand prize, no day that runs dry before it should. Per-prize gates hold rare items back until a given spin number or date; unclaimed stock carries forward automatically instead of being lost to a per-day bucket; and when only gated stock remains the engine returns a free 'better luck next time' so the wheel keeps turning and the day still progresses. The architecture question that mattered most was where the outcome authority lives. A venue lounge is a hostile network environment, and a stalled wheel in front of a queue is the one failure the client could not accept. So the kiosk became offline-first: it loads the whole plan once, runs the pure TypeScript engine locally in the browser, writes every spin to IndexedDB, and syncs to the server whenever there is a connection. The kiosk is the source of truth; the server is the record, the backup, and the thing that powers the admin dashboard. That is only safe because there is exactly one kiosk — two would diverge and oversell — so the single-device constraint is a deliberate part of the design, not an accident of it. The admin side is where the operations team actually lived for eight days: a live dashboard on Supabase Realtime, per-prize inventory bars, an editable allocation calendar showing released / taken / available / carried-over per day, a wheel-layout editor mapping physical wedges to prizes, a filterable activity log that merges every spin with every admin change and its field-level diff, and a full-event simulator that replays the whole run on demand to prove each prize hits its exact total before anyone stakes a live day on it. A spreadsheet import wizard reads new revisions of the agency's allocation workbook, cross-verifies every sheet against the others, previews the diff, and applies days, quantities and wedges in one atomic go — so a plan change the night before an event is a two-minute upload rather than a redeploy. Two spin modes ship: the weighted algorithm above, and a fixed-wins mode that follows an imported schedule row by row when the client wants a deterministic sequence. Over the eight days the kiosk took 3,850 spins and handed out 1,208 physical prizes — 97.1% of the stock allocated to it — peaking at 794 spins in a single hour, roughly thirteen a minute, with zero fallback outcomes and no wheel stall. Brand, event and prize details are intentionally generalised.
- 01Portrait kiosk, masked to the wheel — password-gated, swipe to spin
- 02Backend-decided outcomes: the spin animates to a prize the engine already chose
- 03Weighted-by-remaining-stock draw reproduces the agreed prize plan exactly — no oversell
- 04Per-prize gating by earliest spin number and earliest date for rare items
- 05Automatic daily carry-over — unclaimed stock rolls forward, no manual rollover
- 06Offline-first kiosk: engine runs locally, spins buffered to IndexedDB, synced when online
- 07Admin platform — live dashboard, allocation calendar, wheel editor, settings, danger-zone resets
- 08Full-event simulator replays the whole run and proves every prize hits its exact total
- 09Spreadsheet import wizard cross-verifies the agency workbook and applies a new plan atomically
- 10Activity log merging every spin and every admin change with field-level diffs and CSV export
- 11Analytics surface — footfall by hour, prize mix per day, win-rate curves, rare-win timeline
- 12Resolution-independent sizing in container-query units — identical at 1080p and 4K
Engagement model varies — direct, partner-delivered, subcontract, or confidential. Some client names and implementation details have been intentionally generalised.
