DEPLOYMENTS / QUESTMODE
MOBILE APPQuestMode
Real-life AI micro-quests. Claude generates challenges tailored to a venue, Claude Vision verifies photo proof with a witty verdict, and Supabase Realtime pushes XP to a projector-friendly leaderboard — stranger to player in under 90 seconds, and nothing on screen looks broken even when the AI fails.
CLIENT
Hackathon product
YEAR
2026
SYSTEMS
MOBILE · AI
STATUS
DEPLOYED
<90
s stranger → player → first quest
100%
demo uptime — even with AI down
1
server secret. Zero keys in the client bundle
[ THE BRIEF ]
The challenge we walked into.
A 3-minute demo window at a hackathon. The app had to onboard total strangers, run a full AI-driven loop live on a projector, and keep working even if venue wifi flaked and every API dropped. Nothing on screen was allowed to look broken. Zero manual moderation, zero visible error states, and the Anthropic key could never touch the client bundle.
[ TOPOLOGY ]
How the system is wired.
// SYSTEM TOPOLOGY
[ WHAT WE SHIPPED ]
Feature by feature.
Under ten seconds from QR to playable.
Scan the QR on the projector, land in Expo Go, pick a nickname, tap a zone. Auth email confirmations are disabled for the event so registration yields a session instantly — no inbox round trip on venue wifi. Every player is a first-class Supabase user by the second screen.
- ▸Metro QR on the projector
- ▸Tap-to-pick zones — indoor GPS lies
- ▸Instant sessions, no email verify
- ▸players.id = auth.users.id (XP follows accounts)
[ APPROACH ]
How it came together.
01 — RESILIENCE
Fallbacks are the primary path, not the exception.
Every AI call has a mirror in seed data. The whole app assumes network flakes and API refusals will happen mid-demo — because they always do — and hides them under a working game. The default state is 'the game is fun'; the exceptional state is 'someone in the room notices something'.
02 — SECURITY
One server secret, zero keys in the bundle.
The Anthropic key lives in Supabase secrets, not in the app. Edge Functions proxy every AI call — even with the client bundle in hand, you cannot extract the key. RLS on players, quests and submissions keeps the demo from being weaponised by a bored engineer at the venue.
03 — DELIVERY DISCIPLINE
Everything the demo needs, nothing it doesn't.
No QR-share screen, no password reset flow, no in-app rules doc. The projector holds the QR, resets happen in the dashboard, and the rules are a 3-minute spoken intro. Every polish item was cut against the demo clock — if it didn't make the loop faster or the fallback safer, it didn't ship.
04 — TESTABLE AI
The parser has its own test file.
Claude's JSON isn't always JSON — sometimes it's fenced, sometimes it's prefaced, sometimes it's technically valid but shaped wrong. The parser layer both edge-fn actions depend on is covered by parse.test.ts under Deno test. The AI can misbehave in known ways and the app still runs.
[ DELIVERY ]
What the build looked like.
01 ▊
[ TECH STACK ]
What’s under the hood.
HOVER FOR ROLE
[ IMPACT ]
What changed.
QuestMode ran the full demo without a single visible error — every attendee got a quest, a verdict and their name on the projector. The resilience patterns proved under live conditions: the Anthropic API dropped once mid-demo and nobody in the room noticed. The patterns generalise: any consumer AI product needs the same discipline — schema-strict outputs, tested parsers, seed-data fallbacks and server-only keys.