Adventures in AI-recommended media
reinventing the wheel
I have always been skeptical of music streaming services. In the advent of their popularity, this was due mostly to pragmatic reasons. I have an odd and somewhat contrarian taste in music, and so most of the music I listened to would see itself as selling out or betraying itself if it were put up for sale on a platform like it. Other artists were probably too niche or disinterested to proactively learn how to enrol their music in streaming if they were not backed by a major label that would do it for them, and since this was not yet treated as the primary method to consume music, they simply didn't. Being stuck in the backwaters of the Mexican Caribbean, my only choice was to slowly build a collection of MP3s of all of my favorite music.
As time went on and the music industry was swallowed by the streaming services, my little music collection remained. Since all of my favorite music was already on my disk and there was still a large amount of music that was not present on any streaming service (and still isn't, last time I checked) I never felt the need to move. I had stopped manually curating the data, instead relying on beets to do it for me, and slowly replaced all the lossy music I could find with lossless copies, and if I ever stumbled across a new artist that I wanted to add, chances are they had a Bandcamp where I could easily get their stuff.
The depressing realities of post-university life sapping my previously free time to proactively go out and look for new artists to listen to and download opened up a gaping hole in my setup. I realized that all of my friends, who were dirty Spotify users, would outpace me in the breadth and quality of artists they'd find in a given amount of time. This was due to the streaming sites' recommendation algorithms, which I grew to understand as their key upside over curating my own media.
Enter Claude
To plug this gap, and as a way to gauge Claude's ability to help in areas outside of software engineering, I decided to create my own recommendation engine with the LLM as the key processing unit. In order to do this, I instructed Claude to build a comprehensive music taste profile through the use of recommendations. I seeded the chat with a list of the 15 or so artists that I had been listening to the most during that time, along with as much detail as I could muster about what made those artists uniquely enjoyable along with some definite nos, and went from there. The core loop would go as follows: Claude recommends a set of artists, I listen to the ones that I am unaware of, and I provide a paragraph or so of review. At the end of the reviews, I provide some commentary on the set, or the direction, or on the model's insight into what made me appreciate it, rinse and repeat.
Since the aim is to map a taste profile rather than provide recommendations at this point, the model was generally smart enough to vary the music selection, usually clustering around a particular concept it wants to test against my reactions or a genre we're trying to explore. Once the model's hypothesis on the particular point of taste was confirmed or rejected, or more often nuanced, we would move on.
In my experience this method was prone to local maxima, and the model would home in on specifics often, which would require me to tell it to move on as part of my post-review comments. Luckily, this was mainly done at airports on an intercontinental commute, so I had little better to do than to give it my attention and I was not too concerned with time efficiency.
After this mapping, I dumped the artist list (~1200 artists) of my home media server to it as a final stress-test of the taste model it created, instructing it to tell me which artists didn't fit the profile and why. Its accuracy was impressive, as it picked out almost perfectly my least listened-to or otherwise liked artists. Convinced of the veracity of the model, I went on to phase 2.
Music recommendations by LLM
I was in a work stint in Japan at this point, and while I can hold my own in identifying and sometimes enjoying Japanese pop music, their domestic underground scenes were effectively unknown to me beyond the bits and pieces that were picked up over time by the west. I thus tested out my new recommendation engine on the local alt-idol scene. The hit rate in its initial batch was about 40%, which was a respectable number given that I generally can't stand idol music.
I followed the same method of reviewing the artists and trying to be specific about what I liked and disliked in each, and asked for a second batch. As it went on, the hit rate improved, and eventually the model gave up on finding more suitable candidates, stating that it had exhausted its search space.
I am pretty sure that it wasn't as exhaustive as the model claimed, but I thought it did a pretty good job. I've since used this engine to find many new artists across a bunch of different genres, many of which I've never been able to really appreciate due to a lack of a proper entry point. I therefore consider this a success. It was a pretty fun if overly-long exercise in stretching what I used my LLMs for.
I'm quite curious about how much this can generalize, and whether it is better at some media over others. I've since recreated it with art, which I found to be even more successful than music. I am hoping to try it with movies, travel destinations, books, design patterns, and food.
I still own my music. I can still find more of it. Streaming never had anything I actually needed, convenience be damned.