As first year students in college this year, we’ve seen firsthand how the pandemic has affected meeting new people and making friends. Although we’ve tried to meet people through social media apps like Instagram and Facebook, these connections are often superficial and aren’t conducive to a true friendship. In addition, social media can breed judgment and insecurity, which further complicate the process of making friends.
What it does
The hardest part of making friends is finding like-minded people. Happn is a social media platform that automates this process by matching users based on their answers to five predetermined questions. Users begin completely anonymized but can level up through conversation and slowly reveal more information about themselves. This serves both to limit users from making preconceived judgements of the people they meet and to help keep the conversation interesting.
How we built it
Our matching algorithm works by using an NLP sentence embedding model to convert each response into a 4096 dimensional vector in an embedding space. We then use cosine similarity to match each user with other users who share their interests.
We have two backend Flask servers.
Our first flask server handles user metadata API calls as well as websocket communication for user chat. This server communicates with MongoDB to store user information, as well as serving as a proxy to flask server #2 (which is connected to a powerful VM instance on google cloud)
Our second flask server handles machine learning computations using our sentence embedding model (InferSent model from fb research). We use sqlite3 to store sentence embeddings associated with mongo user IDs, we iterate over this database to find users with similar interests.
Challenges we ran into
We ran into issues getting our Heroku server effectively handling websocket requests, we ran into issues with our Procfile configuration and other packaging versioning issues.
Accomplishments that we're proud of
Having never worked together before (or even met!), we’re proud that we were able to build a functioning project together. We’re proud of tying together a wide range of technologies from machine learning to websocket chat communication - using multiple servers, and databases architectures to suit different use cases (no sql vs sql)
What we learned
We improved our knowledge of NLP and methods of computing similarity scores with multiple embeddings using methods like SIF (smooth inverse frequency).
What's next for Happn
We hope to continue optimizing our matching algorithm. In the long term, we plan to build a mobile app for Happn so that users can access the platform on the go.
Front end: https://github.com/SreehariRamMohan/happn-fe
Back end #1 (Heroku): https://github.com/SreehariRamMohan/happn-be
Back end #2 (Google Cloud): https://github.com/SreehariRamMohan/happn-gcloud