This is a submission for Weekend Challenge: Passion Edition
(
🔥 Rivalry Radar — World Cup Passion Engine
Fans drop 280-character Terrace Takes on any World Cup matchup. Google AI
(Gemini) scores the emotion behind every word and writes a stadium-announcer Hype Verdict; Snowflake stores every take and computes a live Heat
Index that ranks exactly which rivalry is boiling hottest right now.
Built for the DEV Weekend Challenge: Passion Edition 🏆 Best Use of Google AI and Best Use of Snowflake
Why this exists
Passion is easy to feel and hard to measure. Every World Cup rivalry generates
an ocean of unstructured text — chants, rants, one-line hot takes — that
traditionally just... disappears into group chats. Rivalry Radar treats that
text as data: Gemini reads the emotion in it the moment it's written, and
Snowflake turns that into a live, rankable leaderboard.
How the work is split
Does what
Google AI (Gemini)
Scores each take's sentiment (positive/negative/mixed/neutral)
├── backend/app.py # FastAPI service — real Gemini + Snowflake calls, with a demo-mode fallback
├── backend/requirements.txt
└── sql/schema.sql # Snowflake DDL and the Heat Index / leaderboard views
How I Built It
The build started from the Heat Index formula, since that's the number the
whole app orbits around: avg_passion * 0.5 + avg_sentiment_intensity * 3 + log2(take_count + 1) * 2. Volume matters (a rivalry with one take isn't
"hot"), but so does how emotionally loaded the language is — and that's
where Google AI comes in.
Gemini reads each take and classifies its sentiment:
CODE
prompt=( "Classify the overall emotional sentiment of this football fan " "comment as exactly one word — positive, negative, mixed, or " f"neutral. Reply with only that one word.\n\nComment: {text}" ) response=client.models.generate_content(model="gemini-2.5-flash",contents=prompt)
That categorical result gets mapped to a numeric intensity — fury counts
exactly as much as joy, both are passion — so it drops straight into the
Heat Index math.
For the fun part, Gemini also turns the most recent takes for a rivalry into
a punchy one-liner:
CODE
prompt=( "You are a stadium hype announcer. In under 40 words, deliver a " f"punchy verdict on the {team_a_name} vs {team_b_name} World Cup " f"rivalry based on these fan takes: {joined}" )
Snowflake handles the other half of the job: storing every take and
computing the leaderboards with real SQL — aggregation, a derived metric,
and a RANK() window function per rivalry and per fanbase. It's a clean
split: Gemini reads the emotion, Snowflake turns it into a ranking.
The backend is a small FastAPI service with two independent fallbacks,
keeping the whole flow explorable without handing out API keys for a
weekend project: no GEMINI_API_KEY → sentiment scoring falls back to a
keyword heuristic; no SNOWFLAKE_ACCOUNT → the whole API runs in demo mode
with seed data.
The frontend leaned into the subject: a split-flap "departure board" digit
animation for the Heat Index, a scrolling terrace-chant ticker, and a
submission form styled like a stadium chalkboard — an attempt to make the
data feel like the thing it's measuring.
Prize Categories
Submitting for Best Use of Google AI and Best Use of Snowflake — Gemini does the real intelligence work in this project: reading the emotion behind every fan take and writing the Hype Verdict. Snowflake plays an honest supporting role as the data warehouse, storing every take and doing the ranking analytics that turn Gemini's scores into a live leaderboard.
Thank you.
Vollständiger Original-Bericht
Ausführliche Details, Code-Beispiele & Hersteller-Stellungnahme auf dev.to.
Video von AI News auf YouTube: OpenAI's GPT-6 Astra, Anthropic's Claude Fable 5.1, and Google's Gemini 3.8 Flash all launched within days of each other — so…
SOCIAL SHARE CARD GENERATOR