This project implements a mentor-mentee matching system for Northwestern University's Emerging Coders Student Organinazation. If you are unaware about Emerging Coders, here is some background about us:
Emerging Coders is a community for FGLI (First-generation, Low-income) students who are interested in Tech. Our purpose is to enable students in the club improve their skills (e.g., coding projects, networking etc.), provide mentorship and resources throughout your college experience, and to create meaningful projects.
- Reads mentor and mentee data from a CSV file
- Matches mentors and mentees based on multiple factors:
- Major/school preferences
- Time commitment
- Expertise and support areas
- Communication methods
- Mentoring term preferences
- Handles multiple iterations to optimize matches
- Produces a CSV output of matched pairs
- Provides matching statistics and identifies overloaded mentors
This project uses Python 3 and requires the following libraries:
- numpy
- dataclasses
- typing
- scipy
A virtual environment (.venv) is set up at the root of the project.
-
Clone the repository:
git clone https://github.com/yourusername/mentor-matching-program.git cd mentor-matching-program -
Activate the virtual environment:
source .venv/bin/activate # On Unix or MacOS .venv\Scripts\activate # On Windows -
Install the required packages:
pip install -r requirements.txt
-
Ensure your input data is in a CSV file named
mentor-program-responses.csvin thedata/directory. -
Run the
pairing_matchingscript:python pairing_matching.py -
The program will generate a
mentorship_matches.csvfile in thedata/directory with the matching results.
pairing_matching: The main script containing all the logic for data parsing, matching, and output generation.data/: Directory containing input and output CSV files.requirements.txt: List of Python package dependencies..venv/: Virtual environment directory.
You can modify the calculate_similarity function in pairing_matching.py to adjust the weighting of different factors in the matching process.
Contributions to improve the matching algorithm or add new features are welcome. Please fork the repository and submit a pull request with your changes.