Inspiration

Sports have always been the greatest passion of my life. As a volleyball player and an avid follower of numerous sports, I meticulously followed the games every single day during the Olympics and Paralympics. I see sports not only as an arena for competition and entertainment, but also as a place where injustice, physical risks, and data breaches may occur.

Two years ago, at the Paris Paralympics, I watched a para-taekwondo match that I still think about. A Turkish athlete, competing without either arm, was matched against an opponent about 30 cm taller with one fully functional arm. The Turkish athlete lost, not from lack of skill, but because the matchup itself was never balanced to begin with. A sport built to include people with disabilities, undone by an unfair pairing. That contradiction bothered me enough that I wanted actually to fix it, not just be frustrated by it.

What it does

ParaMatch is a tournament pairing platform designed specifically for para-taekwondo. It pairs athletes using the EBAE score (Equitable Height-Limb Fairness Index)—a transparent 0-100 fairness metric. Organizations can seamlessly create tournaments and generate brackets, while para-taekwondo athletes can see exactly who they are fighting and the verified fairness score behind that pairing.

How I built it

  1. Category Lock: Before any math runs, para-taekwondo athletes are strictly grouped by their official classification categories. Different categories are never even considered as candidates for each other.
  2. EBAE Scoring & Weights: Within each category group, the algorithm calculates a $0-100$ fairness rating. The exact weights for the physical factors were determined by analyzing past Paralympic matches and conducting deep interviews with both a Turkish national para-taekwondo athlete and her head coach. This dual perspective helped ground the algorithm in both real fight experience and coaching strategy:
    • Functional limb difference (45%): Weighted heaviest because, as confirmed by the coach, a missing or impaired limb severely limits defensive blocking options and counter-attacking angles—exactly like the unfair Paris matchup that inspired this project.
    • Arm length difference (30%): Crucial for maintaining distance and controlling the pace of the match.
    • Height difference (25%): Provides a natural reach and leverage advantage, but secondary to actual limb functionality in para-sports.
  3. The Mathematical Logic: Instead of just averaging numbers, the algorithm converts these physical differences into individual 0-1 penalty scores using continuous normalization functions. These penalties are multiplied by their respective weights, aggregated, and then subtracted from $100$. This ensures that a massive disparity in even a single heavy category drastically drops the final fairness score, preventing unfair pairings.

The mathematical formulation behind the algorithm is structured as follows:

$$\text{Total Penalty} = (0.45 \times P_{\text{limb}}) + (0.30 \times P_{\text{arm}}) + (0.25 \times P_{\text{height}})$$

$$\text{EBAE Score} = 100 \times (1 - \text{Total Penalty})$$

where $$P \in [0, 1]$$ represents the normalized penalty score for each physical factor.

The Tech Stack

  • Backend: FastAPI and PostgreSQL hosted on Render for a robust, persistent relational database.
  • Frontend: A responsive React application hosted on Replit, communicating with the backend via a token-authenticated REST API.

Challenges I ran into

  • Database Persistence: My initial prototype used in-memory storage, meaning data wiped silently every time Render’s free tier spun down. I migrated to a persistent PostgreSQL database to make accounts persistent.
  • Strict Category Isolation: I initially treated category differences as a heavy scoring penalty. I soon realized category mismatch must be a hard, unbreakable rule, requiring me to restructure the entire algorithm to group athletes before running the matching logic.
  • Frontend-Backend Sync Issue: At one point, despite configuring everything correctly, the frontend persistently kept sending requests to the old, inactive backend endpoint. Debugging this persistent caching and environment variable mismatch took a significant amount of time.
  • API Tracing: I caught and resolved a tricky "response body read twice" bug within our frontend fetch error handling.

Dealing with all these technical setbacks and compounding errors was incredibly overwhelming at times. There were even moments when I was on the verge of giving up on the project entirely. However, my deep-seated desire to find a solution to that injustice and my passion to build something better for para-taekwondo athletes always brought me back to the computer and pushed me forward to do even better.

Accomplishments that I am proud of

Turning a moment of frustration from watching one unfair match into a working, end-to-end platform, with real authentication, a real database, and a fairness formula I can explain and defend line by line, is something I'm genuinely proud of.

What I learned

I learned how challenging it is to translate a subjective concept like sports fairness into a rigorous, mathematical formula. Developing the EBAE algorithm taught me how to weight competing physical variables and structure database queries to enforce strict real-world constraints, proving that backend logic must mirror the exact rules of the sport.

But honestly, the bigger lesson wasn't technical. This is a problem I'd wanted to solve for two years and kept putting off, there was always a reason to start later. Having a hard deadline for this hackathon forced me to actually sit down and build it, and even when I hit real setbacks along the way, that time pressure is exactly what stopped me from delaying it again. I learned that I don't need the perfect moment to start something that matters to me, I just need to start.

What's next for ParaMatch

I started with taekwondo specifically because that's the sport, and the exact problem, that inspired this project in the first place. But I don't want it to stop there. Before finishing the project, I reached out to a Turkish national para-taekwondo athlete to get real feedback. She knew the sport's matchmaking problems firsthand, and after seeing how ParaMatch worked, she said it genuinely addressed something para-taekwondo athletes personally experienced, and she offered to share it with other para-taekwondo athletes she knows. That kind of validation is exactly what pushes me to keep going: getting ParaMatch in front of real federations and athletes, and expanding the fairness model beyond taekwondo to other para-sports where different physical factors, not just limb length, determine a fair matchup.

Built With

Share this project:

Updates

Submission history