Inspiration
Have you ever felt lost in what to hear? Like no recommendation from your usual music player fits your current mood? We realized a way to solve this is by having humanity in our recommendation.
Ask your music app why it played a song. It can tell you that you played it, skipped it, or that it is popular. It cannot tell you the song feels like a late night drive, or that it is built on a saxophone. That is how people actually describe music, and no catalog records it.
With SongTagger, you can search for music through listener given tags, that reflect genres not yet cataloged, feelings and vibes the song gives off and any other thing that comes into someone's mind when listening to a song!
What it does
SongTagger lets listeners tag songs in a way that expresses their view of it. The tags are separated by four categories: artist, genre, feeling and instrument. Those tags can be directly searched for, and are used to make new recommendations for you should you want them.
- Discover by stacking tags. Tags combine with AND:
jazzreturns 9 songs, andjazz+late-nightreturns the one you meant. Title search is local first. On a miss, it pulls a recording from MusicBrainz, avoiding live, remix and karaoke versions. - Picked for you, with reasons. Every recommendation shows why it is there: "Because dreamy · late night." No black box.
- Tag these songs! Pick fitting tags for songs you know (or are just getting to know) and help other people find what they are looking for. Your contribution improves everyone's results.
- A song page that reacts to its tags. The page has 7 visual "scenes" (Daylight, Night, Neon, Lounge, Tropical, Haze, Street) chosen live from the song's tags: tag Purple Rain as jazz and the page turns into a lounge.
- Community, anonymously. Trending songs, rising tags, and the tags listeners agree on, shown only when multiple people contributed and agreed on their tags.
- Your library, connected. Playlists with drag-to-reorder, searchable favorites, and Spotify playlist synchronization.
How we built it
Software
- MySQL/MariaDB database with our songs, tags and relationship between them;
- Python API backend providing our song search and managing the other API (MusicBrainz and Spotify);
- React frontend providing our beauty and interactions
Challenges we ran into
Cold start with 3 real listeners. You cannot tune a recommender on three people and call it validated. We built a synthetic evaluation harness: 60 simulated listeners per world, with genre anchors and Gumbel noise. We ran it next to leave-one-out testing on the real data and only accepted changes that held up on both.
Bad metadata. MusicBrainz returns live cuts, remixes and karaoke versions of the same song, so recording selection became its own ranked algorithm. Source tags are noisy too: one Daft Punk track arrives tagged rock. We solved that by ranking tags by how strongly they co-occur with the song's other tags, so electronic wins.
Spotify in practice. PKCE with single-use state. For a basic developer account, you can only allow up to five accounts to access the app. Many endpoints we wanted to use that showed song stats were also deprecated.
Different IDs through platforms. The different music ID for each platform makes it difficult to find the same song in every API we work on.
Accomplishments that we're proud of
Every pick explains itself. The reason line comes straight from the math, not from a template.
Design. We are very proud of how good-looking our website turned out to be.
Source centralization. Multiple music sources in one place. We feel like our application is really useful for finding new songs and managing already existing playlists.
What we learned
We learned how to think of real-life challenges as opportunities to provide solutions.
We used design tools more than in any other project of ours!
Log in or sign up for Devpost to join the conversation.