MentorMatch is a service designed to pair mentors to mentees. Each user can create a customizable profile, allowing them to select as many preferred partners as they like. When all of the profiles are complete, MentorMatch will generate a mapping that maximizes the happiness of all parties involved.
The designation of mentors and mentees naturally forms the structure of a bipartite graph. We generate our assignments via solving a max-weight bipartite matching problem. Our weights are defined as follows:
- Both partners listed each other as preferred (2 points)
- Exactly one partner listed another as preferred (1 point)
- Neither partner listed each other as preferred (0 points)
Matching can then be formalized as follows. Let
where the nonzero terms of linear_sum_assignment function.
Once all preference data is accumulated, the full matching can be generated via the "Getting Started" page. It can also be downloaded as a separate CSV file, which lists the mentor-mentee pairs as well as the matching score.
The cloud deployment of MentorMatch can be found here. For users wishing to build locally:
git clone https://github.com/colbyendres/MentorMatch
cd MentorMatch
pip install -r requirements.txtMentorMatch uses Postegres for the database and requires the SECRET_KEY variable for maintaining sessions. The app is configured to set these config variable from an .env file in the top-level directory
echo "DATABASE_URL=your-postgres-url" >> .env
echo "SECRET_KEY=your-secret-key" >> .envWith the configuration variables set, MentorMatch can be run with flask run.
