Inspiration
The "find your X" quiz is everywhere. But nobody had built one calibrated to Team USA's actual athlete database that also respected the hackathon's NIL rules and gave Olympic and Paralympic athletes structurally equal treatment. The constraint was the feature.
What it does
You step through a short, gamified onboarding — height, build, reaction-time + quick-twitch mini-games, hometown, optional selfie. The system computes the closest cohorts — never individual athletes — among 8,334 unique Team USA Olympians and Paralympians spanning 1896 to 2026, then generates a personalized archetype name, narrative, and sport recommendations using Gemini.
The result page is cinematic: a 6-second reveal, a 3D DNA constellation of your top matches, a Time Machine slider that scrubs through every decade with live cohort updates, an interactive agent you can talk to by voice or text, and a downloadable share card with an Imagen-generated emblem.
Open any cohort card and a custom 3D scene opens in a modal — 42 sport-specific motion-trail vignettes, from a sprinter's-eye track shot to an actual halfpipe with a 360-spinning snowboard, FITA archery target, diving platform with splash, judo tatami, sled-track tube, sailboat heeling, and more.
How we built it
- Frontend: Next.js 16 (App Router, Turbopack), TypeScript strict, Tailwind v4, Motion for animation, Zustand for onboarding state, Recharts for the strength radar, html-to-image for the share-card export.
- 3D: three.js + @react-three/fiber + @react-three/drei + @react-three/postprocessing (bloom).
- AI:
@google/genaiSDK —gemini-2.5-flashfor archetype narrative + sport recs,gemini-2.5-flashwithgoogleSearchgrounding for hometown insight + Paralympic athlete enrichment, Gemini vision for photo-based build analysis,imagen-4.0-generate-001for the unique heraldic emblem. - Data pipeline: Kaggle historical Olympic dataset (1896–2016) + custom Gemini-grounded enrichment for modern Olympic, Paralympic, and Milano-Cortina 2026 Winter Games.
- Deploy: Cloud Run via Cloud Build, secrets in Secret Manager.
Challenges we ran into
NIL compliance. The hackathon forbids using individual athlete names in output. Solution: all matching happens at the cluster level (sport × decade × sex), enforced in the matching algorithm, the Gemini system prompt, and the response schema.
Olympic / Paralympic parity. The Kaggle data has 7,500+ Olympians but only a handful of modern Paralympians. We wrote multiple Gemini-grounded enrichment scripts (decade-by-decade, per-athlete deep-dive, and per-Games batch enumeration) to recover Team USA Paralympic history back to Rome 1960 — and were honest when data genuinely didn't exist (about half of 1960s–90s Paralympians have no public height/weight; we returned
nullinstead of inventing).Imagen leaking IOC marks. Imagen will occasionally produce Olympic rings or a torch even when explicitly told not to. We hardened the prompt by leading with numbered absolute prohibitions and stripping trigger words ("Olympic," "trophy," "torch," "medal") from the positive description.
Sport-specific 3D scenes. Routed every individual sport (Diving, Weightlifting, Judo, etc.) to its own purpose-built three.js scene with a real environment and a motion-trail standing in for the athlete — 42 unique scenes total.
Accomplishments that we're proud of
- 8,334 unique Team USA athletes across 130 years of Games, Olympic + Paralympic, Summer + Winter, on equal footing — all the way through Milano-Cortina 2026.
- 42 hand-built sport-specific 3D cohort scenes.
- A voice-mode agent that stays grounded in your cohort data.
- A cinematic reveal that genuinely lands the wow moment.
- Strict NIL compliance — never names a single athlete.
What we learned
- Image-generation models can't be reliably constrained by negative phrasing alone — order, trigger-word hygiene, and prompt structure matter more than how loud you say "don't."
- Honest nulls beat fabricated stats. The grounded search returns "no public data" for genuinely-missing fields, and the matcher gracefully falls back to era + sport similarity.
- Cohort-level matching is more interesting than 1-to-1 lookalike matching — it surfaces the shape of a Team USA generation rather than a single ghost.
What's next for Team USA DNA
- WebXR / AR mode — open the result in AR on your phone or headset, walk around your DNA helix at full scale, and step inside the cohort scenes. Same archetype, same Gemini pipeline, but you're in the venue, not watching it.
- Sub-discipline differentiation: Athletics Throws vs Sprints get distinct scenes, per-stroke swim trails.
- 4-week personalized training plan, Gemini-generated and calibrated to your archetype and the cohort's typical training mix.
- Wider Paralympic backfill via deeper grounded search.
Built With
- cloud-run
- drei
- framer-motion
- gemini
- google-cloud
- imagen
- motion
- nextjs
- react
- react-three-fiber
- tailwindcss
- three.js
- typescript
- zustand
Log in or sign up for Devpost to join the conversation.