Fine-Tuning a Spotify Playlist with AI

I wanted to build a playlist around a specific vibe but couldn’t quite name it. Songs like Kurt Vile’s “Check Baby” and Mark Lanegan’s “Hit the City” captured that laid-back, unhurried confidence. Not slacker enough to be lazy, not energetic enough to be aggressive. Just effortlessly cool. Searching by genre or artist wasn’t cutting it. The usual categories were too broad, too vague. So I decided to use AI to help me find every song in my 2,500-plus track library that fit this aesthetic.

I used Chosic to duplicate my Spotify liked songs into a working playlist, then exported it to CSV. This gave me access to all of Spotify’s audio feature data, the hidden metrics that define how each song actually feels.

My first instinct was to work with Claude on a traditional filtering approach: identify artists and genres that fit the vibe, then search for those patterns. I’ve been using Claude as my AI assistant of choice—its superior models and capabilities compared to ChatGPT make it particularly good for complex analytical work like this. Claude’s initial attempt cast a wide net, pulling in artists like Air (too ethereal and electronic), Alice in Chains (too heavy and angsty), Deftones (strong emo undertones), Radiohead (too melancholic), and Beach House (too dreamy). This approach found 1,146 songs, but most didn’t fit at all. The problem was clear: genre tags and artist names are too subjective and inconsistent. “Psychedelic rock” could mean The Doors or Tame Impala, completely different vibes.

Instead of guessing based on labels, I turned to Spotify’s actual audio features. The first iteration used happy scores of 50 to 75 (not too sad, not too upbeat), energy of 50 to 75 (for that mid-range confident stride), dance scores of 0 to 50 (head-nod rather than dance floor movement), and rock as the parent genre. This narrowed it down to 29 songs, much better, but still too broad on tempo.

The final iteration expanded happy slightly to 35 to 80, increased energy to 50 to 90 to allow more powerful tracks, adjusted dance to 25 to 65 since some groove works well in this tempo range, and added the crucial constraint: BPM of 105 to 125. This was the missing piece. That range represents the perfect walking pace tempo, the speed of a confident stride. Combined with moderate energy, dance, and happiness metrics, it created a sweet spot.

The breakthrough came from studying two songs side by side: Mark Lanegan’s “Hit the City” and Bass Drum of Death’s “Way Out.” Both had similar profiles: mid-tempo (between 105 and 125 BPM), moderate energy (between 50 and 90), some groove but not dancey (with dance scores between 25 and 65), and that sweet spot of emotional content (with happy scores between 35 and 80). They’re confident without being aggressive, groovy without being poppy.

After some manual refinement, removing alt-grunge and classic rock tracks that technically fit the metrics but felt wrong, I ended up with 21 songs that perfectly capture this vibe:

  1. Kurt Vile - Check Baby
  2. Mark Lanegan, PJ Harvey - Hit the City
  3. Bass Drum of Death - Way Out
  4. Arctic Monkeys - My Propeller
  5. Arctic Monkeys - Crying Lightning
  6. Echo & the Bunnymen - It’s Alright
  7. Franz Ferdinand - Take Me Out
  8. Led Zeppelin - Dancing Days
  9. Pink Floyd - Have A Cigar
  10. Queens of the Stone Age - I’m Designer
  11. Queens of the Stone Age - You Would Know
  12. R.E.M. - Orange Crush
  13. Red Hot Chili Peppers - Don’t Forget Me
  14. Sebadoh - Not Too Amused
  15. Slint - Nosferatu Man
  16. The Breeders - Cannonball
  17. The Brian Jonestown Massacre - Vacuum Boots
  18. The Pack a.d. - Making Gestures
  19. The Raconteurs - Steady, as She Goes
  20. The Rolling Stones - Gimme Shelter
  21. The Vines - Ladybug

You can listen to the full Cruiser Rock playlist here.

Genre tags and artist similarities are useful starting points, but audio features like BPM, energy, danceability, and happiness capture the actual feel of music far more accurately. The tight BPM range was crucial. It locked in that cruising speed tempo that defines the vibe. Without it, the playlist was all over the place. The metrics work together in meaningful ways. Mid-tempo plus moderate energy plus low-to-mid dance equals confident stride. Mid-happy plus mid-tempo plus rock equals neither sad nor euphorically happy, just assured. Even with perfect metrics, some songs technically fit but don’t feel right. The final refinement required human taste, removing tracks that had the numbers but lacked the quality I was looking for.

After all this analysis, I settled on a name: Cruiser Rock. It captures that cruising speed energy, the feeling of driving with the windows down, not in a hurry but moving with purpose. The 105 to 125 BPM sweet spot is literally cruising tempo. The moderate energy, dance, and happiness metrics all contribute to that effortless, confident vibe. It’s rock music for the open road, for the moments between destinations. Not aggressive enough to be hard rock, not mellow enough to be chill-out music. Just that perfect middle ground of assured forward motion.