Link my Lineup

Published on June 17, 2025

Over 1100 artists performed at Glastonbury 2024. With that many groups playing, it’s really hard for people to find everyone they might want to see. Even if you, like many, went through all of the posters and stage times, you could easily miss someone you liked. I know as well that there are songs I really like but don’t know the artist of off the top of my head.

I built the first version of Link my Lineup in May 2024 to help with this problem. It cross-references your Spotify data with a festival’s lineup and displays all of your matches. Spotify already has a really nice personalised Glastonbury playlist, and there is a genre to help you explore what’s happening. Link my Lineup is slightly different in that I wanted it to be a fairly raw display of data for the user to explore.

In 2025, I redesigned the website so it works for different festivals across multiple years. The screenshot below shows how users see the results.

User data

Link my Lineup pulls the user’s listening data from the Spotify API. I use a few different sources, because I found in testing that my friends use Spotify in different ways. Some keep track of songs they like by saving them; some only save albums or follow artists. Others don’t save anything, but add the songs they like to playlists. I therefore use four sources of data:

  • Top artists: the artists a user has listened to most in the short-term (last four weeks), medium-term (last six months), and long-term (several years).
  • Saved songs/albums: artists that are on songs or albums that the user has saved
  • Followed artists: any artist that the user follows
  • Playlists: optionally, the user can select playlists that contain artists they’d like to include in their results

I did all data processing on the client side so users didn’t have to share their listening data with me, as that can be pretty personal.

The result of this process is a set of artist IDs that the user is interested in. Next, I need a similar set for the lineup so I can present the intersection to the user.

Accurately building the lineup

For the 2024 festival, I (obviously?) used the artist names to find their Spotify IDs. The Glastonbury website has a list of people playing, but that required a bit of processing. For example, “Shygirl presents Club Shy” needed to be normalised to “Shygirl”. The format for multiple artists playing together can get quite complicated: “Hedex B2B Bou ft B Live 247 & Eksman” contains four people. There is no standardisation, but fortunately LLMs are good at normalising this kind of thing.

With a list of normalised artist names, I used Spotify’s API to find the corresponding artist ID for each. Frequently though, there was more than one artist on Spotify with the same name, so I developed some heuristics for disambiguation. If there was only one exact match, I used that. If there were multiple, but only one had a profile picture set, I used that one. Otherwise, if one artist had a substantially higher ‘popularity’ metric than the others, I used that one. Rarely, I had to fallback to manual disambiguation, which mostly looked like me checking whether one of the artists had posted on socials about the festival.

For the 2025 festival, the Glastonbury website provided not only artist names, but also a URL each. These were most often links to the artist’s official webpage or social media (mainly Instagram). I felt that using these links to find Spotify IDs would be more robust than matching on name, given that my heuristics could have given false matches.

MusicBrainz is an open source music database that lists information about artists, including, crucially, known websites and social media profiles. I queried the MusicBrainz API with each artist’s URL to find their database entry. If there was a match, I used that. If that failed, but there was only one artist in the database with exactly the same name as my query, I used that. This is slightly risky, because our artist may not be present the database and you wouldn’t believe how many artists there are with the same name. We could end up matching against the wrong artist because they were present and ours wasn’t. I decided this was a risk worth taking because the database is reasonably complete and it saved a lot of manual effort. After finding a MusicBrainz entry, I used the Spotify ID from there if present.

I didn’t use the Spotify API in my artist matching at all in 2025. It would certainly be a good idea to, and I’ll incorporate it with my MusicBrainz lookups in the future. Honestly, I spent a fair bit of time manually disambiguating artists, and it wasn’t too hard with the nice admin interface that Claude Code built for me. A benefit of this is that I was able to contribute new artist entries, social media links, and Spotify profiles to MusicBrainz (you can see these on my profile).

Next steps

My goal previously was to take the 2024 site and re-write it so it could handle more festivals. I completed this with a lot of help from Claude Code. In fact, there is not a single line of human-written code in the project.

I’ll expand Link my Lineup to more festivals over the course of summer 2025. At the moment, gathering the lineup for new festivals is a fairly manual process, as each festival website needs custom scraping logic. There is no reason that this cannot be automated with an agent.