DEV Community

Mario Gutierrez
Mario Gutierrez

Posted on

EL RELATOR - your life, narrated like a World Cup goal (in two languages)

DEV Weekend Challenge: Passion Edition Submission

This is a submission for Weekend Challenge: Passion Edition

What I Built

EL RELATOR takes any moment of your life — "my test finally passed after three hours of debugging", "I found parking on a Friday at 6pm", "my daughter took her first steps" — and narrates it as an over-the-top radio football commentary, complete with the legendary elongated ¡GOOOOOOOL!, delivered as real audio.

You type the moment, pick a language (Spanish or English — the whole UI and the narration switch), pick an intensity, and a relator loses his mind over your small victory like it's stoppage time in the World Cup final.

Three intensity levels:

  • Radio 🎙️ — classic radio call, emotional but controlled
  • Final 🏆 — championship final energy
  • Infarto / Cardiac 🔥 — minute 93, World Cup final, on the verge of happy tears

The goal: with the World Cup ongoing, everyone deserves their own personal commentator. Because passion doesn't distinguish between a stoppage-time final and a green test suite on a Friday deploy.

Demo

🎬 Watch the 60-second promo (with sound — the voice IS the demo)

The promo itself was narrated with the same ElevenLabs voice the app uses — including a live "GOOOOOOOAL!" over a passing test suite.

Here's what it produced for "I found parking right in front of the building, on a Friday at 6pm" on Cardiac mode (English):

It is ninety-three minutes on the clock. Friday evening. The rain is pouring, the traffic is a wall of steel, and the hope is fading. […] He cuts inside, he cuts back, he guides the vehicle into the tightest of corridors, AND HE HAS DONE IT! GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOAL! THE PARKING SPACE IS HIS! […] I am weeping, ladies and gentlemen, we are witnessing absolute perfection!

And in Spanish, for "after three hours of debugging, my test finally passed" on Infarto:

[…] le da play a la consola y el cursor empieza a correr, corre, corre, busca el destino de gloria, se enciende la pantalla y se pone, se pone, ¡SÍ, SE PONE VERDE! ¡GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOL! ¡GOL DE LA VIDA! ¡PASÓ EL TEST! […] ¡y el alma que vuelve al cuerpo en un grito sagrado que lo escucha todo el barrio!

Run it locally in under a minute (both APIs have free tiers):

git clone https://github.com/terrizoaguimor/el-relator
cd el-relator
cp .env.example .env         # add your Gemini + ElevenLabs keys
npm install && npm run dev   # open http://localhost:4321
Enter fullscreen mode Exit fullscreen mode

Code

GitHub logo terrizoaguimor / el-relator

Any moment of your life, narrated like a World Cup-winning goal. Gemini writes, ElevenLabs screams. DEV Weekend Challenge: Passion

EL RELATOR ⚽📻

Any moment of your life, narrated like a World Cup–winning goal. In Spanish or English.

Passion doesn't distinguish between a stoppage-time final and a green test suite on a Friday deploy. EL RELATOR takes any moment you give it — "my test finally passed", "I found parking", "my daughter took her first steps" — and turns it into an over-the-top radio football commentary, complete with the legendary elongated ¡GOOOOOOOL! / GOOOOOOOAL!, delivered as real audio.

Built for the DEV Weekend Challenge: Passion ❤️‍🔥

Example output (input: "I found parking right in front of the building, on a Friday at 6pm", intensity: Cardiac):

It is ninety-three minutes on the clock. Friday evening. The rain is pouring, the traffic is a wall of steel, and the hope is fading. […] He cuts inside, he cuts back, he guides the vehicle into the tightest of corridors, AND HE…





How I Built It

If there is one universal language of passion, it's the voice of a football relator. That voice doesn't distinguish between a Champions League final and a green test suite — passion is passion.

Tech stack

Layer Technology
Script generation Google Gemini (gemini-flash-latest, Google AI Studio API)
Voice ElevenLabs (eleven_multilingual_v2)
Framework Astro 5 — SSR with the Node adapter; the page and the API route live in one project
Frontend Vanilla HTML/CSS/JS: floodlight sweeps, LED ticker, scoreboard, audio equalizer, confetti on every goal
Your moment + language + intensity
        │
        ▼
  Astro API route (/api/relato)
        ├─► Gemini ──► writes the commentary script
        └─► ElevenLabs ──► gives it the voice
        ▼
  MP3 + script back to the browser
Enter fullscreen mode Exit fullscreen mode

Google AI (Gemini) — the writer 🖋️

Gemini runs with an in-character system prompt per language: it IS the relator. The prompt encodes the craft of radio commentary — short phrases that build tension, accelerate, and EXPLODE at the climax with elongated vowels, then land on a poetic closer ("y lo grita todo el barrio" / "and the whole neighborhood is screaming"). Each intensity level changes the writing brief, and sad moments are narrated too — with the epic dignity of a lost final.

A detail that mattered: the prompt treats the output as a radio performance, not text — no emojis, no markdown, elongated vowels, punctuation as pacing, 60–110 words (~30–45s of audio). I also set thinkingBudget: 0 so tokens go to the script, not reasoning.

ElevenLabs — the voice 🎙️

The script goes to ElevenLabs, and this is where the project comes alive. Two tricks:

  1. One multilingual voice (eleven_multilingual_v2) performs both Spanish and English — same commentator, two languages.
  2. Voice settings are tuned per intensity level:
Intensity stability style
Radio 0.45 0.55
Final 0.30 0.80
Infarto 0.15 1.00

Lower stability + maxed style = a genuinely unhinged, cracking, emotional delivery. On Infarto, the voice actually sounds like it's about to lose it during the ¡GOOOOOL! — which is exactly the point. The elongated vowels Gemini writes give the TTS something real to scream.

The same intensity knob drives both the writing brief and the voice settings — writer and performer are directed together, which is what makes the output feel coherent.

What I learned

  • ElevenLabs' stability/style settings are a legit performance direction tool, not just quality knobs.
  • Writing FOR text-to-speech is its own discipline: the system prompt treats the script as a radio performance, not text.
  • Astro's SSR mode makes this kind of project trivial: src/pages/api/relato.ts keeps both API keys server-side, and the page ships almost zero framework JS.

Prize Categories

This submission is for Best Use of Google AI and Best Use of ElevenLabs:

  • Google AI: Gemini (gemini-flash-latest) is the writer — bilingual in-character system prompts turn any life moment into a 60–110 word radio goal call, with the intensity level shaping the writing brief.
  • ElevenLabs: eleven_multilingual_v2 is the performer — one voice speaks both languages, and per-intensity stability/style settings direct the emotional delivery, from controlled radio call to full minute-93 meltdown.

Passion doesn't need a stadium. Sometimes it's just you, a green test, and a voice screaming ¡GOOOOOOOL! at 2am. ❤️‍🔥

Top comments (0)