About Laurel
An Olympic and Paralympic moment explainer powered by Gemini. Built for the Team USA × Google Cloud Hackathon 2026.
What it does
Capture a frame from your TV with your phone, or share your screen on a laptop, and Laurel explains what just happened, the rule behind it, and why it matters. Conversational follow-ups via text or voice. Sharable links with rich previews. Olympic and Paralympic content treated as equals (3 sports each in the MVP).
Two demo scenarios
Scenario A
Judge ruling negates the highlight
Friends watching together, big moment is overturned by a judge call, group is confused. One pulls out their phone, captures the frame, gets a clear rule-based explanation in seconds.
Scenario B
Was that a big deal?
A world record falls. The user captures it, asks for significance, gets historical context with concrete past records and a sharable link to text the family group chat.
Stack
Frontend
Next.js 16, React 19, Tailwind 4
Hosting
Vercel
Backend
FastAPI, Python 3.12, uv
Container
Google Cloud Run
AI
Gemini 2.5 Flash via Vertex AI
Embeddings
text-embedding-005
Storage
Cloud Storage + Firestore
Voice
Web Speech API (browser-native)
Architecture
[Phone Camera / Laptop Screen Share / File] -> [Next.js client (Vercel)]
|
v
[FastAPI on Cloud Run]
|
+--> [Gemini 2.5 Flash Vision] (sport ID)
|
+--> [In-memory vector index] (KB chunks)
|
+--> [Gemini 2.5 Flash text] (synthesis, SSE)
|
+--> [Cloud Storage] (frames)
|
+--> [Firestore] (moment metadata)
|
v
[Next.js client renders explainer]Sport coverage (MVP)
Six curated sports, balanced 3:3 between Olympic and Paralympic.
Figure Skating
Olympic · Winter
Curling
Olympic · Winter
Athletics
Olympic · Summer
Wheelchair Curling
Paralympic · Winter
Para Alpine Skiing
Paralympic · Winter
Para Athletics
Paralympic · Summer
Credits
Built for the Team USA × Google Cloud Hackathon 2026. Apache 2.0 licensed at github.com/dawsonpar/laurel.