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 built our front end with React, Javascript, and Material UI.

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.

Github Links

Front end:

Back end #1 (Heroku):

Back end #2 (Google Cloud):

Share this project: