Rhythm Lab Selector
Twenty years of a radio show's archive, turned into pages a listener can actually use.

01
The Problem
Rhythm Lab Radio has been on the air since 2005 and syndicated for most of it. Every week produces a playlist worth publishing and almost none of them got published, because a show page that is actually useful needs track credits, label and catalogue numbers, release art and video, and that material lives in four different places. Discogs has the credits, Spotify the metadata, YouTube the video, Spinitron what actually aired. Assembling one show page by hand is an evening, so twenty years of archive is not a backlog, it is a decision not to bother. The listener side is the part that stung: people hear something on the show and want to know what it was and where it came from, and the answer was in the station data the whole time.
02
The AI Design Decision
The facts and the writing come from different places on purpose. Credits, labels and release dates are looked up in the music databases, and the AI is only allowed to write the connections between things that are already known to be true. It can also find a track by what it sounds like rather than by its exact title, which is how a listener actually remembers music. What I chose not to build is the automatic publish. The show has been on air since 2005 and the station's name is on every page, so a page goes up when a person decides it goes up, not when the writing finishes.
03
The Architecture
- 01Take what aired from the station's own logs and the show archive
- 02look each track up across four music services for credits, artwork and video
- 03the AI writes the story around the facts, and never the facts themselves
- 04the page is built and saved as a draft
- 05nothing reaches the station site until a person presses publish
04
The Responsible AI Constraint
This publishes under a real radio station's name, to an audience that has trusted it for twenty years. An AI-written artist biography that invents a session player isn't embarrassing, it's the station being wrong in public about music, in front of the people who care most. So the model never supplies a fact. Credits, labels and release dates come from the music databases, and the AI's only job is writing the connections between things that are already true. And the function that publishes a page to the station site exists but nothing calls it. Every generated page sits as a draft until a person reads it and presses publish.
05
The Result
Winner of the "Add content discovery with Algolia" award at the Storyblok x Code and Coffee Hackathon 2025. Live at rhythmlabradio.com, where it is the actual website of a syndicated radio show rather than a demo of one. It carries the live show, the full Mixcloud archive with track by track detail, artist profiles with expandable discographies, and multi index search across all of it.
06
If you remember one thing
The function that publishes to the station's website exists, and nothing calls it. Every AI-written page waits as a draft until a person reads it and presses publish.
Tech Stack
- Next.js 15
- React 19
- Supabase (Postgres)
- Storyblok
- Algolia
- Perplexity
- Discogs
- Spinitron
- Mixcloud
- Clerk
Links