Skip to content

catherineweiss/Entree

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Entree - An App For Warm Introductions

Entree is a warm introduction designed to connect you to classmates and colleagues. It takes information from users via an online form. The app then analyzes possible matches using our matching algorithm using natural language processing. Users are then sent one email per week introducing them to individuals that share common interests, backgrounds, and goals.

The app starts with a form containing simple but fun questions. Sam built this component of the app on Google Firebase. It takes user data and saves it to a Firebase database. The frontend also enables users to securely log in and edit their information.

The backend of the app scores potential matches between users. The scoring is based on similarity of interests, movie preference, and favorite city. The backend uses the spaCy NLP module to analyze similarity for fields that are not restricted to a set of choices. Once all potential matches have been scored, they are ranked and selected. The backend then updates the database so that matches will not be reselected in the future. This process can be repeated until all possible matches have been exhausted. Dan build this component of the app using Python and Firebase and hosted it on a digitalocean server so it can be scheduled to run automatically.

Basic matching explanation:

(1) compares movies; if they are the same, add points (2) compares interests: add points for each interest that is the same (3) compares cities: uses spaCy module to compare the word vectors for the cities; this is necessary because there is no set number of cities for users to select choose from. We therefore have to reduce the words to 200-dimension vectors and find the distance between the vectors. (4) Once all possible matches are scored, they are ranked. The program then goes through the list and selects the best-possible match, taking into account whether people have already been matched.

More spaCy explanation (because word vectors are very cool):

Word vectors are numeric representations of words. They are typically 100-300 dimensions. They are generated by training a model that can predict words based on their context. The model is typically a single layer deep neural network. The "hidden" layer is actually what we are looking for - the weights assigned to each dimension of the hidden layer by the training model form the word vector.

Matches are made once per week and users are notified about details via email. To send the the emails, we used Firebase Cloud Functions to trigger the emails being sent. The Cloud Functions utilize Sendgrid, an email sending service.

Development Team:

Girri Panalyipan, Catherine Weiss, Claire Walker, Samuel Attal, Daniel Ciarrocki

Workflow:

  1. Users register for website at: entreehackathon.firebaseapp.com
  2. From a shell: python entree.py genscores This will regenerate the preference table from scratch (i.e., it will score all of the matches). PLEASE NOTE this will overwrite matches already in the preference table.
  3. From a shell: python entree.py makematches
    where is an integer for the week number This command will make a set of matches, populate the emailLineup with those matches, and update the preference table so that the score of the match will be -100 (so it will not happen again)
  4. python entree.py clearemails: deletes entire contents of the emailLineup. Useful for development and debugging.
  5. Run a Firebase cloud function. This will send emails. Either schedule, or make http request with browser window.

About

App for introductions - MCIT Hackathon 2020

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors