# I built an AI commentator that screams about your sourdough like it's the World Cup final

> Source: <https://dev.to/arya_koste_5845807df94776/i-built-an-ai-commentator-that-screams-about-your-sourdough-like-its-the-world-cup-final-34o2>
> Published: 2026-07-13 02:43:54+00:00

*This is a submission for Weekend Challenge: Passion Edition*

Last week my grandpa beat me at chess. Again. He slid his rook across the board, said absolutely nothing, and went to make tea. And I thought: *this man just hit me with a tactic he's been setting up for eleven moves, and the only sound in the room was a kettle.*

Meanwhile, on TV, a man kicked a ball two meters into an open net and a commentator screamed for thirty consecutive seconds, lost his voice, found it again, and thanked his mother.

That gap felt unfair. So I closed it.

**GOLAZO** is an AI hype commentator for your life. You describe a moment — any moment — and it gets called like the winning goal of a World Cup final:

Then Gemini writes the commentary, it streams onto the screen word-by-word next to a blinking REC dot like a live feed, and ElevenLabs stands up in the booth and **roars it out loud**.

Here's what it did with my grandpa:

"...Grandpa — seventy-eight years young, cardigan flapping like a cape — slides the rook home! He's done it again! The pawns are weeping, the knights bow their heads, and somewhere a kettle whistles in triumph! CHECKMAAAAAAATE! Legends never retire, my friends — they just play the long game!"

He listened to it twice. He did not smile. He is The Legend.

There's a sincere idea hiding under the joke, though. Passion in football *is* the commentator — the voice is what turns a ball crossing a line into something people cry about. But that voice only exists for ninety televised minutes. Kids' leagues don't get one. Grassroots matches don't get one. Visually impaired fans watching anything below the top flight usually don't get one. GOLAZO is a tiny, silly step toward a world where **every moment gets a voice in the booth** — including the small ones. *Especially* the small ones.

Here's the booth going live — describe the moment, pick La Radio, dial it to 10, and watch the commentary stream in:

Try it yourself: tap the preset chip **"Grandpa beat me at chess again"**, choose La Radio, intensity 10, and press *Hear it*. I take no responsibility for what your speakers do next.

👉 **Repo:** [https://github.com/Aryakoste/Golazo](https://github.com/Aryakoste/Golazo)

The entire application is **one index.html file**. No framework. No build step. No backend. No

`node_modules`

folder achieving sentience. You could email this app to someone. Please don't, but you could.**The design is a broadcast, not an app.** Chalk white, pitch green, ticker yellow, hard black keylines on everything, and Anton at a full italic skew because passion does not stand up straight. There's a scrolling ticker at the top and a blinking REC dot on the output, and the commentary doesn't just *appear* — it types itself out at broadcast pace, because passion delivered instantly is a paragraph, but passion delivered word-by-word is an **event**. (Ticker, blink, and typewriter all switch off under `prefers-reduced-motion`

. Hype should be opt-in.)

**Google AI (Gemini 2.0 Flash)** writes every line via the `generateContent`

REST API, called straight from the browser with the user's own free key (stored only in localStorage — the only servers your data ever touches are Google's and ElevenLabs' own). The whole project lives or dies in one prompt. Each booth has a personality brief — La Radio's literally includes *"the climactic word MUST be an extended GOOOOOL-style cry adapted to the moment"* — plus the language, the intensity scale, a strict 60–110 word budget, and the single rule I care most about:

Never mock the smallness of the moment. Its smallness is what makes it great.

Without that line, an LLM defaults to gentle irony — it commentates your sourdough with a smirk. With it, the output is *sincere*, and sincerity is the entire product. Your bread deserves a believer, not a comedian.

**ElevenLabs** (`eleven_multilingual_v2`

) is the voice, and this took actual tuning. Default voice settings sound like someone reading a weather report. I dropped `stability`

to 0.35 and pushed `style`

to 0.7, and suddenly the delivery got loose, fast, and genuinely excited — less "newsreader," more "man standing on his chair." The multilingual model means a Spanish La Radio call actually *sounds* like Spanish radio. And if a visitor has no ElevenLabs key, the Web Speech API steps in as the backup announcer, so the demo works for absolutely everyone.

Your last eight commentaries are saved locally as **Match Highlights**, because some victories deserve a replay.

The hardest bug of the weekend, for the record, was not the AI. It was CSS. It is always CSS.

*Now if you'll excuse me, I have a rematch to lose. Intensity 10 is standing by.*
