The Mustang Showdown Race Manager is a Python application built with Tkinter to simplify the organization of multi‑round collegiate triathlon events. By importing an Excel roster containing each athlete’s name, team, bib number, and swim/run times, the program uses an optimization algorithm to minimize variance in average performance across heats, ensuring fair and balanced competition.
Key features include automated athlete search, loading names and split times from XLSX files, and dynamic heat assignment that adapts to real‑time results. After the first round, finish‑line bib numbers are entered and displayed in a popup table for manual review and corrections. Two “lucky losers” are selected to fill remaining slots when needed. Detailed race reports can be exported as text or CSV for printing or deeper analysis.
In Round 1, heats are created in advance so participants know their starting groups. Men are divided into three heats and women into two, with both CSV and TXT export options. Round 2 assignments depend on Round 1 performance: the top two‑thirds of men advance to the semi‑final heats (with the remaining third in a consolation heat), while the top half of women move to their final and the rest to a consolation heat. Round 3 merges the top finishers from the semi‑finals into a single men’s final heat. After each round concludes, results are saved automatically to text files following user verification in a pop‑up review window. After each round a dialog box allows you to review and edit entries prior to saving saving as a .txt file.
Issues
I know there are a lot of issues with the program, and I want to keep improving this.
- There is no way to handle if someone doesnt show up for the race/doesn't finish (DNS/DNF).
- Currently the womens program cannot properly load in the heats generated in the mens start up sequence.
- The current save format is not great as it does not print in a visually clear way and needs to be first printed to pdf before actually being printed.
Future Plans:
- Combine Mens and Womens programs into one
- Allow for heats to be loaded into the program, so it doesnt have to stay running the whole time prior to a race
- Have a way to handle DNS's and DNF's
- Record a finishing timestamp to help later with results processing.
- Add a way to input start time in order to calculate full finish time.
The full code for both programs can be found on my GitHub
Project Files
Example data: Mock_Data.xlsx