I spent most of my free time over the last week turning twelve months of Last.fm scrobbles into something resembling what I might get from the digital music streaming platforms. The goal was to achieve narrative clarity about how my listening habits are shaped by genre, vibe, purpose, and pattern.
Two things became obvious fast:
- The raw data is messy. Pulling a year of listening into a meaningful shape requires way more cleaning, classification, and context than I had done since switching from Spotify to Tidal. I’m not Every Noise at Once.
- The story isn’t in the numbers alone. Meaning can’t be easily derived from play counts alone.
I wanted to be a more intentional listener this year, leaving Spotify’s algorithmic overreach for a more human, artist-centric product experience in Tidal. I achieved that. Now, if I feel like I’m in a rut, I can’t really blame the technology. I have to work my way out of it. Building more playlists helps with that, as does trying out more of the user playlists that the platform’s home page surfaces to me.
The Sources
Three inputs shaped the foundation:
- Last.fm scrobble history for every play, including timestamps and track-level breadcrumbs.
- My own tags and taxonomies:
This year, I built an artist descriptor system to replace Last.fm’s chaotic tag soup. I capped it at three genres and two descriptors per artist. For songs, I added a mood and a mode. I’m sure both dictionaries will expand in 2026. - Context logs:
I tracked my weekly and monthly top performers, which made it easier to tie shifts in listening to what was happening in my own life.
The Tools
- A Last.fm data exporter. The one I used always pulls your full history (though you can download partial fills during the process). I’ve found another that allows you to draw an update based on a timestamp. I’ll be using it going forward unless I come across something better.
- Google Sheets for merging, normalizing, and verifying counts.
- A personal KPI tracker to keep genre weights, album totals, and monthly shifts consistent.
- ChatGPT as an analyst assistant, primarily for structuring and processing data logs, similar to how I use AI to assist me at work, where I also have limited resources. It helped me think through how I wanted to set up a data analysis framework, and then I implemented it in tools outside the LLM that aren’t prone to hallucination, bad math, or fantasy. One area I intend to explore early in the new year is AI solutions explicitly designed for data analysis and exploration. I’ve gotten to play around with these kinds of tools in some enterprise products and marketing analytics tools, which I’ve found exciting and delightful, but as I have noted throughout this year, making this stuff work requires a ton of thoughtful setup under the hood.
The Structure
45 Descriptors (like 1980s or Underground or The South)
19 Genres (like Hip-Hop, Funk, or K-Pop)
12 Moods (like Cinematic, Energetic, or Spiritual)
12 Modes (like New Day Vibes, Working Out, or Still Processing)
I enjoy the classification process despite (or perhaps because) how challenging and time-consuming it is. I learned during my Paramount+ days that building a single, consistent metadata system is hard, and few want to own it.
I get it. It’s daunting to take on this task even if you’re the lone customer, but c’est la vie.
The Playlists
I do a lot more playlist management on Tidal than I ever did on Spotify, and this process has encouraged me to create more playlists.




You can find all my publicly available playlists on my profile.
The Stats
- 42.6k streams
- 17.3k tracks
- 9.8k albums
- 5.2k artists
- ~53% of my spins this year were categorized.
Top Artists

Top Albums

The 2025 Mixtape
Improvements for 2026
On Saturday morning, I spun up a BigQuery project connected to a Google Colab notebook so I can process my Last.fm data at scale. Each month, I’ll ingest new scrobbles, update artist and song classifications, and sync them all to my active playlists.
The goal is 80% classification over the next 12 months. I want a much more comprehensive understanding of my listening patterns, defined on my terms.
The one data point I’m still missing: song length. The public metadata ecosystem is thin, and time-listened has become the backbone metric of every streaming recap. Getting accurate, open song-duration data may be an uphill battle.
Is it weird that I have been having a lot of fun nerding out on this little data project?










