TL;DR: FestivalMates calculates music compatibility using a 60/30/10 weighted algorithm: 60% from shared top artists (position-weighted, so your #1 artist matters more than your #20), 30% from genre overlap (Jaccard similarity), and 10% from shared festival attendance. Scores range from 0 to 100 across five tiers: Soulmate (85+), High (65-84), Good (40-64), Some (20-39), and Low (0-19). The system deliberately weights artists over genres because "you both love Amelie Lens" is a much stronger compatibility signal than "you both like techno."
When you connect your Spotify account to FestivalMates, the app calculates a compatibility score between you and every other user attending the same festivals. This score determines who shows up in your discover feed, how matches are ranked, and which people the app suggests you connect with.
This post explains exactly how that score is calculated — the algorithm, the weighting, and the reasoning behind the design decisions.
Why Music Taste Is the Best Matching Signal
Most social apps match people by location, age, or self-reported interests. Festival apps like Radiate match by event attendance. These signals work, but they're broad. Everyone at Tomorrowland is "interested in EDM" — that doesn't tell you much.
Music taste is different. It's specific, honest, and hard to fake. Your Spotify listening data reveals what you actually listen to, not what you say you like. Two people who both have Amelie Lens, Charlotte de Witte, and Reinier Zonneveld in their top 10 will probably want to be at the same stages at the same time.
That's the insight FestivalMates is built on. Shared artists predict in-person compatibility better than any survey or bio.
The 60/30/10 Algorithm
FestivalMates' compatibility score runs from 0 to 100 and is calculated from three components:
| Component | Weight | What It Measures | |---|---|---| | Shared artists | 60 points | Do you listen to the same DJs and producers? | | Shared genres | 30 points | Do you gravitate toward the same styles of music? | | Shared festivals | 10 points | Are you attending the same events? |
The total is capped at 100. Here's how each component works.
Artist Matching (60 Points)
This is the core of the algorithm and carries the most weight for a reason: shared artists are the strongest signal of music compatibility.
When two users' Spotify data is compared, the algorithm:
-
Finds shared artists between both users' top artist lists using fuzzy name matching. "The Blessed Madonna" and "the blessed madonna" are recognized as the same artist. Prefixes like "DJ" and "The" are normalized.
-
Calculates position-weighted scores for each shared artist. An artist ranked #1 in your top list contributes more than an artist ranked #20. Specifically, each shared artist gets a weight based on its position in both users' lists:
weight = (listLength - position) / listLengthSo in a list of 20 artists, your #1 artist gets a weight of 1.0, your #10 gets 0.55, and your #20 gets 0.05. The weights from both users are averaged for each shared artist.
-
Normalizes against the maximum possible score. If two users shared their top 5 artists in identical positions, that would be the maximum. The actual weighted matches are divided by this maximum and multiplied by 60.
Why position matters: If Charlotte de Witte is your #1 artist and someone else's #1 artist, that's a much stronger signal than if she's both of your #18. Position weighting ensures top-of-list matches count significantly more.
Looking for festival buddies who share your music taste?
Try FestivalMates — it's freeGenre Matching (30 Points)
Genre matching uses Jaccard similarity — a standard measure of overlap between two sets.
The formula:
genreScore = (shared genres / total unique genres across both users) * 30
If User A has genres [techno, trance, hardstyle, house] and User B has genres [techno, house, drum and bass, dubstep], then:
- Shared: techno, house (2)
- Total unique: techno, trance, hardstyle, house, drum and bass, dubstep (6)
- Jaccard similarity: 2/6 = 0.33
- Genre score: 0.33 * 30 = 10 points
Why genres are weighted lower than artists: Genres are broad categories. "Techno" encompasses everything from minimal to industrial. Two people who both like "techno" might have completely different tastes. But two people who both have Amelie Lens in their top 5 almost certainly enjoy the same kind of techno.
Festival Bonus (10 Points)
A small bonus is added when two users are attending the same festivals:
festivalScore = (shared festivals / max festivals either user attends) * 10
If you're both going to Tomorrowland and Defqon.1, and the user with the most festivals is attending 4 total, the festival score would be (2/4) * 10 = 5 points.
This component is deliberately small. Attending the same festival is a prerequisite for meeting (you're already browsing the same event page), not a strong compatibility signal on its own.
Fallback: Genre-Only Mode
If one user doesn't have artist data (for example, a new Spotify account with limited listening history), the algorithm falls back to genre-only mode. In this case, the genre score is scaled up to fill the combined artist + genre range (90 points), ensuring these users still get meaningful match scores.
If neither user has any music data at all, the algorithm returns null — no match is calculated.
The Five Match Tiers
Your compatibility score maps to one of five tiers:
| Score | Tier | Label | What It Means | |---|---|---|---| | 85-100 | Soulmate | Soul Mates | You share multiple top artists in similar positions. You'd probably pick the same stages at a festival without even discussing it. | | 65-84 | High | Festival Twins | Strong overlap in artists and genres. You'll have plenty to bond over and want to see many of the same sets. | | 40-64 | Good | Good Vibes | Meaningful overlap. You share enough taste to enjoy a festival together, with enough difference to introduce each other to new artists. | | 20-39 | Some | Worth a Chat | Some common ground. You might share a genre or a few artists but listen to mostly different things. Still worth connecting. | | 0-19 | Low | Different Vibes | Minimal overlap. You probably have very different music taste — but diverse squads can still have a great time. |
Most matches between users at the same genre-focused festival (like a techno or hardstyle event) land in the Good to High range. Soulmate scores are rare and usually mean you'd genuinely pick the same artists if someone handed you both a blank schedule.
What Spotify Data We Actually Use
FestivalMates reads two specific data points from Spotify's API:
- Your top artists — the artists you listen to most, ranked by play frequency over a medium-term period (roughly the last 6 months)
- Your top genres — derived from your top artists' genre classifications
That's it. FestivalMates does not access:
- Your private playlists
- Your listening history
- Your saved songs or albums
- Your account password (Spotify uses OAuth 2.0 — you authorize through Spotify's own login page)
- Your payment or subscription information
The Spotify connection uses read-only API scopes. FestivalMates cannot modify your Spotify account in any way.
Design Decisions and Trade-offs
Why Not Use Playlist Data?
Playlists are curated — they represent what you want others to see, not what you actually listen to. Someone might have a "Hard Techno" playlist but spend most of their time listening to lo-fi. Top artists reflect actual behavior.
Why Fuzzy Name Matching?
Artist names in Spotify's database aren't perfectly consistent. The same artist might appear as "DJ Snake", "Dj Snake", or "dj snake" across different users' data. The algorithm strips common prefixes ("DJ", "The") and normalizes casing to avoid missed matches.
Why Cap the Artist Comparison at 5?
The maximum possible artist score is calibrated against the top 5 positions. This prevents users with very long artist lists from having artificially deflated scores. Whether you have 10 or 50 top artists, the algorithm focuses on how well your top favorites align.
Why Not Weight Genres by Specificity?
A more sophisticated approach would weight niche genres (like "acid techno" or "UK garage") higher than broad ones (like "dance" or "electronic"). This is something we're considering for future updates, but the current Jaccard approach is simple, predictable, and works well enough — especially since artist matching already captures specificity at a higher weight.
How to Improve Your Match Quality
Your compatibility scores are only as good as your Spotify data. A few tips:
- Listen to what you actually like. The algorithm works best when your top artists reflect your real taste, not background listening
- Diversify within your niche. If you love techno, listening to a range of techno artists gives the algorithm more data points to match on
- Update your data. FestivalMates re-syncs your Spotify data periodically. If your taste changes, your matches will evolve too
You can see your own top artists and genres on your FestivalMates profile after connecting Spotify.
Frequently Asked Questions
How is the music score calculated?
FestivalMates uses a 60/30/10 weighted algorithm: 60% from shared top artists (position-weighted), 30% from genre overlap (Jaccard similarity), and 10% from shared festival attendance. The total score ranges from 0 to 100.
What does "position-weighted" mean?
Your #1 most-listened artist contributes more to a match than your #15. If two people share a top-3 artist, that's a stronger signal than sharing an artist at the bottom of their lists. The weight for each artist is calculated as (list length - position) / list length.
Is my Spotify data private?
Yes. FestivalMates only reads your top artists and genres. It does not access playlists, listening history, or account details. Other users can see your shared artists and your compatibility score, but not your full artist list.
What if I don't have Spotify?
You can still use FestivalMates to browse festivals, view lineups, and connect with people manually. However, the automatic music-taste matching requires a Spotify account. Apple Music support is planned for a future update.
Can I match with someone at a different festival?
The matching works across any festivals you're both attending. If you and another user are both going to Sonar and DGTL, your music compatibility score applies to both events, plus you'll get a small bonus for shared festival attendance.


