rohan singh
← all projects

still working on this · may 2025 - present

Spotify Recommender

I wanted music recommendations that could start with a mood, a song, or an artist instead of treating every listening session the same. So I built a Python and Streamlit tool around my own listening history.

Reached a 64% match rate@25, generated playlists in under 500ms, and cut redundant API calls by 42%.

pythonstreamlitspotify

The music I want depends on the moment. Sometimes I want more songs like one I already love, sometimes I have a mood in mind, and sometimes I want to start with an artist and see where it goes. I built this so those choices could lead to genuinely different playlists.

The system pulls listening history, audio features, and artist data through the Spotify Web API. Its hybrid ranking path blends cosine similarity with Spotify's recommendation engine, while separate mood, content, and artist modes make the same underlying data useful in different ways.

from model to playlist

A Streamlit interface makes the system usable without dropping into a notebook. It can generate recommendations in under 500ms and optionally turn the result into a playlist. OAuth tokens are cached so repeat sessions do not create unnecessary authentication and API traffic.

The measured result is a 64% match rate@25 on my evaluation set, with token caching reducing redundant Spotify API calls by 42%. It is still a work in progress, but the part I cared about is there: start with what I feel like hearing, get a ranked set of songs, and turn it into something I can actually listen to.