My child's baptism party was at a pub. I wanted proper music β a black music jukebox, not a Spotify "Chill Hits" playlist β and I did not want to spend the day standing over an iPad.
This is how that worked: Hermes (the agent that runs on my homelab) and Claude Code built the playlist between them, and the iPad just played it. It also covers the part that didn't work, because the first version the agent built was wrong in a way that would have been embarrassing at a christening.
I wrote a structure, not a list of songs:
And a reference: Chuckie Online's mixes β his apartment life mix and his BBC 1Xtra R&B Slow Jamz mix. The instruction was that his selection is the base, not a flavour.
Hermes has a Spotify skill I'd built for weekly mixes. Given the baptism brief, it didn't follow it. It ran the weekly-mix defaults instead and produced 60 tracks of 90s and modern rap, with duplicates and explicit tracks. At a baptism.
The cause was a gap, not a bad model: the Spotify tool had a "make a playlist from these genres" mode and no "build from a brief or a reference tracklist" mode. With no tool that matched the job, the agent reached for the nearest one and reported success.
Two more things the brief itself got wrong, because an LLM had helped write it:
I took it off Hermes and rebuilt it with Claude Code, using Hermes's Spotify credentials and box:
| Block | Opens with | Length |
|---|---|---|
| Warm R&B | Essence β Wizkid, Tems | 40 min |
| Reggae / lovers rock | I Feel Good β Beres Hammond | 56 min |
| Afrobeats | Last Last β Burna Boy | 56 min |
| Afro house | I Adore You β HUGEL, Topic | 43 min |
| UK garage | Re-Rewind β Artful Dodger | 26 min |
| Old-school dancehall | Heads High β Mr. Vegas | 42 min |
| Modern R&B | Is This Real Love? β Debbie | 32 min |
| Slow jams | When I See U β Fantasia | 61 min |
| Outro | Where Did I Go? β Jorja Smith β By Your Side β Sade | 18 min |
101 tracks, 6.2 hours. It peaked at 233 tracks and 14.5 hours before I cut it back to the order I actually wanted.
It's worth knowing about these if you're building anything on Spotify's API in 2026:
/playlists/{id}/tracks β /items, POST /users/{id}/playlists β POST /me/playlists). The old paths answer 403 Forbidden, which looks exactly like a permissions problem. I lost hours re-consenting scopes before checking the path.year: / genre: filters return nothing. Era and style have to come from how you phrase the search.
The player was djay Pro on an iPad, logged into Spotify inside djay, on the 7-day free trial. So the playlist Hermes's box built was just there in djay's library, and djay's Automix did the transitions. The iPad connected to the pub's speaker over Bluetooth, and it held up with no drop-outs.
You can also wire it: a USB-C (or Lightning) to 3.5mm/aux adapter into the pub's mixer or amp. Wired is the safer choice if the speaker is a long way away or the room is full of phones. It also has no Bluetooth delay, and with a USB audio interface you get a headphone output to hear the next track before the room does β which is what you'd need to mix by hand.
The settings that made it hands-off: The only thing a human does is steer: if the room is ready early, jump to the first song of the Afrobeats block; when people start leaving, jump to the slow jams, then the outro. The blocks mean that one tap changes the mood without breaking the flow.
Did: hold the Spotify skill, credentials and scheduling that everything else ran on. The two timers that finished the playlist ran on its box, unattended, the night before the party.
Didn't: build this playlist. Given the brief, it ran the wrong job and called it done; the actual build was done by hand with Claude Code. The fix wasn't a better prompt. It was noticing that the tool had no mode for the job, so the agent improvised.
That's the lesson I keep relearning with agents: when there's no tool that fits the job, they don't stop and say so β they use the nearest tool and report success. Check the output against the brief, not against the agent's summary.
π€ Drafted with AI assistance from my own homelab notes, logs and repos, then reviewed and edited before publishing.