AlgoMatch
AlgoMatch is a Python algorithm designed to efficiently match students with mentors, generate timetables, track unmatched participants, calculate stats, and create visual insights for mentorship programs.
Inspiration
We were inspired by the challenges educational programs face when managing student-mentor assignments. Manually matching students to mentors based on multiple criteria like interest, availability, and school can be time-consuming, error-prone, and inefficient. We wanted to create an automated solution that simplifies this process while providing meaningful insights.
What it does
AlgoMatch performs the following tasks:
- Student-Mentor Matching: Matches students with mentors based on multiple criteria including interest, school, availability, and mentor capacity. Ensures logical, fair pairings.
- Timetable Generation: Automatically generates a timetable assigning students to mentors and available rooms across predefined time slots, avoiding conflicts.
- Unmatched Tracking: Tracks unmatched students and mentors, providing reasons such as no common availability, full mentor capacity, or no available rooms.
- Statistics Calculation: Computes program metrics like total students, total mentors, matches, unmatched participants, average students per mentor, and timetable coverage. Exports stats to CSV.
- Data Visualization: Produces visual insights including:
- Matched vs unmatched students and mentors
- Distribution of students per mentor
- Mentor workload balance
- Students and mentors per school
- Student interests and mentor expertise
- Sessions per timeslot and per school
- Missing values in datasets
- Data Cleaning and Normalization: Removes nulls, duplicates, normalizes text formats, and auto-detects and formats date columns.
- Flexible Column Mapping: Supports mapping custom column names in CSVs to standard algorithm columns using command-line flags.
- Scalable Processing: Handles large datasets efficiently using chunked processing and incremental matching logic.
How we built it
We built AlgoMatch using Python with the following libraries:
- Pandas & NumPy: For data manipulation and handling large datasets.
- Matplotlib & Seaborn: For creating visualizations and graphs.
- Argparse: For a flexible command-line interface.
- Threading & Lock: For optimized performance with large datasets.
The algorithm works by:
- Loading student, mentor, and school CSV files.
- Cleaning and normalizing the datasets.
- Applying matching logic with optional criteria: interest, school, availability, and mentor capacity.
- Generating a timetable for matched students and mentors.
- Calculating statistics and generating graphs for insights.
Challenges we ran into
- Managing multiple matching criteria simultaneously.
- Handling large datasets without slowing performance.
- Ensuring unmatched students and mentors are accurately tracked with reasons.
- Generating timetables that respect room and mentor constraints.
Accomplishments that we're proud of
- Developed a fully automated algorithm for complex student-mentor matching.
- Integrated timetable generation, stats calculation, and visualizations in a single workflow.
- Created a scalable and flexible system capable of handling large datasets efficiently.
- Designed a CLI with column mapping for user-friendly customization.
What we learned
- How to combine data processing, matching logic, and visualization in one algorithm.
- Handling real-world dataset inconsistencies while keeping the algorithm robust.
- Designing scalable and flexible solutions that are easy to use with command-line flags.
What's next for AlgoMatch / Future Improvements
- Web-based Interface: Build a Streamlit or Dash interface for non-technical users.
- Smarter AI-based Matching: Use AI to suggest optimal matches beyond simple rule-based matching.
- School Database Integration: Enable direct import/export with school or institutional databases for automatic syncing.
- Enhanced Reporting: Add more detailed analytics and interactive visualizations.
- Customizable Matching Rules: Allow dynamic weighting of matching criteria for personalized matches.
Log in or sign up for Devpost to join the conversation.