A national financial institution needed its raffles, prize wheels, and giveaways to be as trustworthy as its transactions, on an event stage and at a branch kiosk alike. Andes Development built a multi-tenant platform where the bank's own team creates, tests, and runs its games: three game types, prizes with per-branch stock, cryptographically random draws, encrypted data, and a connector that lets the team set up games with Claude without exposing a single participant's data. It's the evolution of our corporate games portal and in-branch prize roulette, now as a product.
// The challenge
A corporate game is entertainment, but it's also a public promise of fairness. Once the game leaves the event and reaches the branches, that promise repeats at every location. The key challenges were:
- A draw has to be fair, and prove it In front of hundreds of employees or customers, any doubt about a result's randomness becomes a reputation problem.
- From the stage to the branch The bank wanted instant-win prizes on kiosks in its branches, each with its own stock, staff, and business hours.
- Prizes that reconcile Every unit delivered, voided, or returned had to match inventory, with vouchers branch staff could validate on the spot.
- Sensitive data Participant lists and forms that collect national ID numbers had to be protected at every step, from import to export.
- Autonomy with control The events team needed to create, brand, and test games without sending every change to a developer, and now with AI help that can't touch customer data.
- One product, many companies The platform had to serve several clients with their data, brands, and files fully isolated.
// The technology solution
Andes designed the platform so security and showmanship live in the same product:
- A modern stack Laravel 13 and Filament 5 for administration, React 19 with Inertia and TypeScript for the game screens, PostgreSQL, and private AWS storage served only through signed URLs.
- Three games on one engine Raffles with encrypted bulk import and a prize mode that draws winners in order for each prize; prize wheels for a presenter or a kiosk; and instant-win games in two variants, pick a card or scratch.
- Branches and kiosks at scale Regions, imports of up to 5,000 branches per file, a staff PIN per branch, kiosk pairing by code or link, and layered business hours (platform, bank, and branch) with the bank's own time zone.
- Prizes with stock and vouchers A prize catalog with stock per branch, an append-only ledger of every movement, vouchers that staff deliver with their PIN, and prize days with their own quantities and hours.
- Five ways to decide who wins Fixed odds, always win, wheel wedges, winning moments spread across business hours, and a sequence set by the organizer.
- Forms that protect identity Nine field types, including national ID, 16 validation rules, encrypted answers, and an HMAC fingerprint that caps plays per person without storing the value in plain text.
- Test before opening Test kiosks whose plays are undone exactly, a test clock to simulate the day, an odds simulator of up to 2,000 plays, and a rehearsal mode for raffles and wheels that saves no results.
- Custom branding that can't break the game Custom CSS at three levels (layout template, game template, and game), validated in full before it's saved, with critical kiosk elements protected and the last 20 revisions restorable. The game screens have their own design system, with self-hosted fonts and support for reduced-motion preferences.
- Claude as a setup assistant One MCP connector per workspace, with 49 tools that only configure. Andes turns it on per client, and each connection uses OAuth 2.1 with PKCE, is bound to a single workspace, and requires two-factor authentication. Claude can't delete, open or close a game, draw, or spin, and it never sees players, winners, form answers, or vouchers.
- Cryptographically random draws A cryptographically secure generator with a Fisher-Yates shuffle, row locks on every draw and spin, and tests that race two processes for the last unit of a prize.
- No master keys No role can reach another workspace, platform administration lives in a separate operator panel with mandatory two-factor authentication, and every change is audited, including those made via Claude.
// Results and key wins
In three months, the platform grew from two games at events to a system the bank runs at its events and in its branches:
-
3 games
Raffles, prize wheels, and instant-win games in production, at events and on branch kiosks. -
49 tools
To configure games with Claude, with no access to participant data and no irreversible actions. -
1,600+ tests
Automated, plus an internal review of 70 findings with all 10 high-priority ones fixed.
// The bottom line
What started as a raffle on the big screen is now a platform the bank's own team runs, from the event stage to the kiosk in each branch. The organizer sets up and tests a game before it opens, staff deliver prizes with their PIN, and compliance has a record of every play, prize, and change. Screens don't sync with each other in real time yet. Each kiosk checks the game's state on its own, and a wheel mirrored across several screens is still in design.