The second-brain operating system
Helping My Wife Build a Playlist Builder With Her AI Assistant
My wife teaches spin twice a week and rebuilds her class playlist every month. She has her own AI assistant now. Most of that job is a writing problem, and the one number it depends on is the one Spotify stopped publishing.
My wife Natalie teaches spin twice a week. Every month or so she builds a new playlist for her classes, which takes an evening she would rather spend on something else. She has her own AI assistant now, a second brain she set up yesterday and named Halo. We are about to teach it to build the playlist.
The interesting part of that job is not the code. It is working out which half of the work is hers and which half can be written down well enough to hand over.
01What is she actually trying to do?
Build a ride, not a track list. A spin class is an arc: a warmup, a build, a set of peaks, recoveries between them, a cooldown. A song's job depends on where it sits in that arc, and what decides whether it can do that job is its tempo. She also cannot repeat what she taught last month, so the work carries a memory requirement on top of a taste requirement.
Written down, her rules are short. A class is an arc. Do not repeat recent tracks. Tempo carries the effort. Everything else is judgment.
02Why hand it to her assistant instead of just doing it for her?
Because a favour has to be asked for again next month, and a handover does not. If I build her a playlist, she has a playlist. If her assistant learns to build playlists, she has an evening back every month for as long as she teaches.
It also has to be hers in a literal sense. Her assistant runs on her laptop, under her accounts, with her notes. I am helping her set it up, not operating it for her. The failure mode I am trying to avoid is the one where the useful thing only works when I am in the room.
03What does her assistant need that she already has in her head?
Three things: her back catalogue, the tempo of the tracks she is considering, and her rules for the arc. The rules are written down now. The back catalogue lives in her Spotify account, which can be read. The tempo used to live there too, and that is where this got interesting.
04Why can't Spotify supply the tempo any more?
Spotify closed that endpoint to new applications. Their announcement of 2024-11-27 states that new Web API use cases can no longer access Audio Features, and that only applications with existing extended mode access were unaffected. Apps still in development mode without a pending extension request lost it too, along with any app registered from that date on. The same announcement cut Audio Analysis, Recommendations, Related Artists, 30-second previews and Spotify-owned editorial playlists. Developers who registered since then report a 403 with no route to access, and Spotify has not announced a replacement. The February 2026 changelog then removed popularity from tracks, albums and artists as well.
For most software that is an inconvenience. For a spin instructor it removes the one number the job runs on. You cue a class to the beat, so a confidently wrong tempo is worse than no tempo at all.
05Which parts of the Spotify API still work?
Reading her own playlists and writing new ones, though nearly every playlist path was renamed this year. From Spotify's own changelog:
POST /me/playlistscreates a playlist, replacingPOST /users/{user_id}/playlists.GET /me/playlistslists hers, replacingGET /users/{id}/playlists.GET /playlists/{id}/itemsreads contents andPOST /playlists/{id}/itemsadds to them, both replacing the/trackspaths.- The playlist object was renamed,
trackstoitems, down toitems.items.item. GET /searchstill works, butlimitnow caps at 10 instead of 50, with a default of 5.
One behavioural change matters more than the renames: a playlist she did not create returns metadata only, with no contents. Combined with the 2024 removal of Spotify-owned editorial playlists, reading a professionally built ride for ideas is no longer something the API supports.
Anything written about this API before this year is wrong, including most library wrappers and the tutorials.
06Where does the tempo come from instead?
A separate database. GetSongBPM publishes tempo, key and time signature, says it covers more than six million songs, and returns the number in a single call with no OAuth. Their free tier requires a backlink, which is why they are linked here.
It also answers the question in reverse, which matters more than the forward lookup. Give it a target BPM and it returns songs at that tempo, which is how the work is really done. She does not ask what tempo a song is. She asks what she can ride at 140.
Their changelog is candid about why the extra fields exist: version 1.3 added danceability and acousticness "to help developers stuck with their app in development after spotify's announcement." A platform withdrew a field and a smaller database absorbed the demand.
07So what are we building, and what stays hers?
Nothing is built yet, so this is the design rather than a description. Her assistant reads her existing playlists from Spotify to learn what she has taught and what she avoids, asks GetSongBPM for the tempo of those tracks so the arc is measured rather than remembered, queries by target BPM to find candidates for the peaks, and lays the whole ride out in one table.
Then it stops. She reads the list, swaps what she does not like, and says go. Only then does anything get written into her account.
What stays hers is the taste and the call. She decides how long the ride is and how hard it should get, and she is the one who knows that a technically perfect track is wrong for her Tuesday class. The assistant does the assembly, the lookups and the clicking.
There is no server in this and no scheduled job. It runs when she asks, because she opens her brain when something happens rather than on a schedule, and a tool that nags her monthly is a tool she stops opening. The whole thing is a written procedure plus two credentials in a file on her laptop, which is the bet I make everywhere: reliability is a writing problem before it is an infrastructure problem.
08Where does the human stay in the loop?
Before the write, every time. That is stage one of an autonomy ladder I have run several times, with agents and with people. It proposes, a human approves, and the gate moves only after the proposals have been right for long enough to be boring. Some of my ad agents sit at that stage today. One runs a real budget on its own inside set bounds, because it earned that. This one has earned nothing yet, and pretending otherwise is how you end up with a tool nobody trusts.
09Where does this stand right now?
Her assistant is a day old, the credentials exist, the tempo source is chosen, and none of it has run. The next step is a first playlist she approves or rejects.
I will write the second half of this when it has worked or broken. The code is a handful of HTTP calls and is not the hard part. The open question is whether her rules, written down as plainly as I have written them, are enough to hand over a creative job at all, or whether the taste turns out to be inseparable from the assembly.