Inspiration

The idea was to make an website where users could find matches based on music tastes.

What it does

Finds other users based on similarity in music tastes. Music tastes are gaged from the user's top 50 tracks from spotify

How we built it

We started with looking into potential algorithms and methods to match users with each other. One idea was to use a variational encoder to take a user's top listens and encode it into a list of arbitrary parameters which could be compared with other users. Unfortunately we didn't manage to produce a working implemention of this so instead we opted for using TF-IDF vectorisation to calculate scores for all of the other users.

We built the frontend of the site with Next.js, using tailwind for css. We incorporated Auth0 for allowing users to log into the system. Since the calculation logic was written in python, we opted for using Flask for a backend REST API, which we wrote to find recomendations and serve them to the webapp. We used the spotify api with the spotipy library to get user data. We use redis as a cache to store this data to avoid ratelimits from spotify.

Challenges we ran into

The main challenge we ran into was figuring out the best way to match users Another challenge was getting to grips with using Next.js Trying to overcome annoying connection issues, including connecting to the redis database Trying to get api keys from Auth0 for spotify

Accomplishments that we're proud of

We incorporated redis to cache results Produce cleanly desgined webpage with interactive components

What we learned

Next.js, Flask, and the libraries / frameworks we used for full stack development
Collaborative filtering is diffult, using a variational encoder is not necessarily the best way. 26 hrs is a short amount of time

What's next for Music Matcher

Train a model a larger dataset Refine / redesign the algorithm for matching users to be accurate Come up with a business plan Tuning recomendations based on user input Messaging system with matches

Built With

Share this project:

Updates