Real-Time Matching Engine for 5,000+ Users by Pratyush SudhakarReal-Time Matching Engine for 5,000+ Users by Pratyush Sudhakar

Real-Time Matching Engine for 5,000+ Users

Pratyush Sudhakar

Pratyush Sudhakar

The problem
Perfect Match ran matching as an offline batch job. Students submitted, waited, and got results nobody could explain or adjust mid-cycle. With 5,000+ users in a single cycle, one bad run meant a bad experience for thousands of people at once.
What I changed
I rebuilt the matching system around Gale-Shapley stable matching, paired with Google OR-Tools for the optimization layer. Stable matching carries a property worth caring about here: no two people would both prefer each other over the partners they were assigned. When you are allocating something as personal as a match, that fairness guarantee is the product.
The rebuild happened mid-cycle on a live platform with real users, which set the constraint: it had to be correct on the first run.
The rest of the system
A Flask microservice powering a live analytics dashboard for 5,000+ active users, using MongoDB Map-Reduce for aggregation and server-side caching to keep latency down.
A frontend overhaul and a move to a microservices backend for modularity and easier scaling.
Automated personalized engagement emails on cron jobs, which grew active users by 600+.
Outcome
50,000+ matches delivered. I was Head of Engineering and President, which meant owning the technical direction and the organization around it, including the marketing that drove a 185% increase in Instagram engagement. Running both sides taught me something useful for client work: the engineering decision and the growth decision are usually the same decision.
Like this project

Posted Sep 9, 2026

Rebuilt a matchmaking platform's engine on Gale-Shapley stable matching and Google OR-Tools. 50,000+ matches delivered and 600+ active user growth.