DEV Community

bright jack
bright jack

Posted on

Ritual Radio — Turn Your World Cup Rituals into Legendary AI Commentary

DEV Weekend Challenge: Passion Edition Submission

This is a submission for Weekend Challenge: Passion Edition (https://dev.to/challenges/weekend-2026-07-09)

What I Built

Ritual Radio is a World Cup fan-ritual announcer. It takes the superstitions fans actually do before a match —

wearing lucky socks, spinning three times, only sitting in one chair — and narrates simulated match moments as if
those rituals were a real force on the pitch.

You pick your team, describe your ritual, choose a commentator voice, and hit Start Broadcast. The app generates

live match events (red cards, miracle saves, last-minute free kicks) and calls each one with dramatic,

AI-generated commentary that weaves your ritual into the action.

It was built for the Passion Edition theme: football devotion is irrational, emotional, and deeply personal.

Ritual Radio turns that passion into a broadcast you can listen to.

Demo

https://youtu.be/uJW1HOg3Iuc

Code

🔥 Ritual Radio

A World Cup fan-ritual announcer powered by ElevenLabs + Google Gemini.

Built for the DEV Weekend Challenge: Passion Edition.

concept

What it does

Every football fan has a ritual. Ritual Radio turns yours into live, dramatic match commentary.

  1. Pick your team.
  2. Describe your match-day ritual.
  3. Hit Start Broadcast.
  4. The app simulates live World Cup moments and calls them like a legendary radio announcer — weaving your ritual into the action as if it were a supernatural force on the pitch.

The voice is generated with ElevenLabs and the commentary script is written by Google Gemini.

Tech stack

  • Python / Flask — backend API
  • ElevenLabs API — text-to-speech in a passionate commentator voice
  • Google Gemini API — AI-generated dramatic commentary
  • HTML / CSS / Vanilla JS — retro radio UI
  • Web Speech API — graceful fallback when ElevenLabs key is unavailable

Run locally

cd ritual-radio
#
Enter fullscreen mode Exit fullscreen mode
                                                                           </p>
Enter fullscreen mode Exit fullscreen mode

Live repo: https://github.com/yueliao11/ritual-radio

How I Built It

• Flask serves a single-page app and two JSON APIs:

• /api/next-event returns a simulated match moment.

• /api/commentary writes the script and converts it to speech.

• Google Gemini generates the commentary when a key is provided, prompted to act like a superstitious World Cup

radio announcer.

• ElevenLabs is the heart of the demo. It turns the script into audio using a passionate sports-announcer voice. I
use the eleven_flash_v2_5 model, cache generated MP3s by content hash, and serve them back so the broadcast

feels instant.

• The frontend is vanilla HTML/CSS/JS with a retro radio UI, an audio visualizer, and an optional API-key section
so anyone can try it with their own keys.

• I recorded the demo video with Playwright, automating the browser so the submission would have a clean,

reproducible visual.

ElevenLabs is not a decorative add-on here — it is the experience. Without the voice, Ritual Radio is just text on
a screen. With it, the broadcast feels real.

Prize Categories

Best Use of ElevenLabs

Top comments (0)