SOPHIE YANG / work
MEWORKTHOUGHTSRESUME
back
Dec 2024
Completed

Chime

Tinder, but for music. Swipe right and left on your next new favourite song, with a custom recommender engine that learns your preferences over time.

This project will always hold a special place in my heart. Not just for the fact that I love music, nor am I particularly passionate about dating apps. However, this idea came to me at the right place, at the right time.

from short -> long term projects

Much of my early coding journey was centred around hackathons. In fact, at some point, I had a running streak of doing a hackathon every week for 5 weeks straight– no doubt, it was awful for my health, but something about being surrounded by so many passionate people, and brainstorming ideas in Discord calls for hours on end kept me coming back.

Yet, even after a dozen hackathons, one thing I always felt a lack of was technical confidence. Within my team, I would often end up defaulting to frontend– something I was comfortable with and knew well. Pre-chatGPT, I prided myself on my ability to conjure up a nicely looking navbar in 20 minutes.

And thus, Chime was the shift I needed to go from short bursts of projects with the lifespan of a weekend to projects that were curated with the intention of learning over time.

A slightly technical ramble on recommender systems

After I realized that I wanted to be more intentional with my projects, I began thinking about what really fascinated me within technology. Somewhere along the way, the idea of recommendation systems landed in my head. And thus, I began researching how recommender systems were designed and developed.

At their core, recommender systems are algorithms that help people discover what they might like next. You often see them in action, even if you don’t call them by name: Netflix recommending your next show, Spotify curating playlists based on your listening habits, or Amazon nudging you toward products that “customers like you also bought.”

What’s fascinating to me is how context-specific they can be. A news recommender system, for instance, has to weigh factors like geographic location and recency much more heavily than Netflix’s algorithm, which leans more on long-term taste patterns and genre similarities.

The classic types are collaborative filtering (making predictions based on what similar users have liked) and content-based filtering (recommending items that are similar to what a user already liked). Then there are hybrid approaches, which blend the two to balance their strengths and weaknesses. For example, collaborative filtering might struggle with the “cold start” problem (where there’s no data on a new user or item), but content-based methods can help fill in those gaps until more user behaviour is collected.

So, Tinder…for music?

Amongst the many use cases of recommender systems, one particularly interesting case was dating apps– using math to handle and predict our very fragile human emotions. That, in combination with my love for music (like, 140k minutes/year on Spotify), blossomed into Chime.

Building Chime

After asking mentors, talking to ChatGPT and reading docs, I decided a Django backend that managed user preferences and exposed an API to serve recommendations, then layered in a hybrid engine. On one side, the content-based model looked at song traits like genre, tempo, and mood; on the other, collaborative filtering tried to capture overlap in what different users enjoyed. Together, they made the matches feel personal while still leaving room for discovery. The trickiest part, though, was the data.

Real recommender systems rely on millions of interactions, and I was starting from zero. To make progress, I wrote an algorithm to generate synthetic likes, skips, and matches—basically faking a crowd of users so I could test accuracy and keep tuning the system until it felt right.

Final Thoughts

And so, Chime was a warm reminder to me that the process of learning is supposed to be difficult, frustrating and embarrassing. But you will always get back what you put in—and that thought has stayed with me in everything I do.

END.
BUILT WITH
ReactTypeScriptDjangoPythonPostgreSQL/SQLiteAWS S3Scikit-learn
FIND OUT MORE
back
Dec 2024
Completed

Chime

Tinder, but for music. Swipe right and left on your next new favourite song, with a custom recommender engine that learns your preferences over time.

This project will always hold a special place in my heart. Not just for the fact that I love music, nor am I particularly passionate about dating apps. However, this idea came to me at the right place, at the right time.

from short -> long term projects

Much of my early coding journey was centred around hackathons. In fact, at some point, I had a running streak of doing a hackathon every week for 5 weeks straight– no doubt, it was awful for my health, but something about being surrounded by so many passionate people, and brainstorming ideas in Discord calls for hours on end kept me coming back.

Yet, even after a dozen hackathons, one thing I always felt a lack of was technical confidence. Within my team, I would often end up defaulting to frontend– something I was comfortable with and knew well. Pre-chatGPT, I prided myself on my ability to conjure up a nicely looking navbar in 20 minutes.

And thus, Chime was the shift I needed to go from short bursts of projects with the lifespan of a weekend to projects that were curated with the intention of learning over time.

A slightly technical ramble on recommender systems

After I realized that I wanted to be more intentional with my projects, I began thinking about what really fascinated me within technology. Somewhere along the way, the idea of recommendation systems landed in my head. And thus, I began researching how recommender systems were designed and developed.

At their core, recommender systems are algorithms that help people discover what they might like next. You often see them in action, even if you don’t call them by name: Netflix recommending your next show, Spotify curating playlists based on your listening habits, or Amazon nudging you toward products that “customers like you also bought.”

What’s fascinating to me is how context-specific they can be. A news recommender system, for instance, has to weigh factors like geographic location and recency much more heavily than Netflix’s algorithm, which leans more on long-term taste patterns and genre similarities.

The classic types are collaborative filtering (making predictions based on what similar users have liked) and content-based filtering (recommending items that are similar to what a user already liked). Then there are hybrid approaches, which blend the two to balance their strengths and weaknesses. For example, collaborative filtering might struggle with the “cold start” problem (where there’s no data on a new user or item), but content-based methods can help fill in those gaps until more user behaviour is collected.

So, Tinder…for music?

Amongst the many use cases of recommender systems, one particularly interesting case was dating apps– using math to handle and predict our very fragile human emotions. That, in combination with my love for music (like, 140k minutes/year on Spotify), blossomed into Chime.

Building Chime

After asking mentors, talking to ChatGPT and reading docs, I decided a Django backend that managed user preferences and exposed an API to serve recommendations, then layered in a hybrid engine. On one side, the content-based model looked at song traits like genre, tempo, and mood; on the other, collaborative filtering tried to capture overlap in what different users enjoyed. Together, they made the matches feel personal while still leaving room for discovery. The trickiest part, though, was the data.

Real recommender systems rely on millions of interactions, and I was starting from zero. To make progress, I wrote an algorithm to generate synthetic likes, skips, and matches—basically faking a crowd of users so I could test accuracy and keep tuning the system until it felt right.

Final Thoughts

And so, Chime was a warm reminder to me that the process of learning is supposed to be difficult, frustrating and embarrassing. But you will always get back what you put in—and that thought has stayed with me in everything I do.

END.
BUILT WITH
ReactTypeScriptDjangoPythonPostgreSQL/SQLiteAWS S3Scikit-learn
FIND OUT MORE