case study · maddogscheduler
Sixteen years of Excel, retired by a solver I directed.
shipped · ran the 2026 tournament Python · Google OR-Tools CP-SAT · AI-built (Claude Code)Sixteen years of Excel
My family has run the Mad Dog Mania Showcase Tournament, a high-school soccer showcase in upstate New York, since 2003 — more than twenty editions. I have owned its technology since around 2009, today as its Director of Technology; I keep the business’s books; and since 2013 I have been sole director of our eight-field Gavin Park venue. At its 2019 peak: 141 teams and 141 college coaches across two venues.
The schedule was the hard part. Every June, roughly 90 teams must be paired into competitive matchups and placed onto fields under constraints that all fight each other: teams that cannot play each other, coaches running multiple teams, travel windows, rest gaps targeted between two and four hours, gender scheduling rules, day-length limits, and venue changes that need two-hour buffers. The tooling was a sixteen-year accretion of cross-referenced Excel workbooks, and building the schedule took about 40 hours of hands-on work, compressed into the one-to-two-week window between final registration and kickoff.
The thirteen-year-old idea
I first tried to solve this properly in college. My sophomore research project at Union (2011–12) was a constraint-programming tournament scheduler written in C++ with GECODE — the same problem, the same tournament: 99 teams, 198 games, 9 fields, and the same two-hour-minimum spacing rule the tool enforces today. It produced ideal schedules for up to about seven teams and hit a wall past that: the full problem is NP-complete (I estimated the search space at a 371-digit number of arrangements), beyond what 2012 compute could search. The paper’s own future-work section proposed the fix — pre-compute the matchups, then let the solver place games. In graduate school I made a second attempt, a solo-scrum rewrite of the registration backend as my agile-methods course project (2017); the schedule itself stayed hand-built.
In 2025–26 the tooling finally caught up. I specified and directed MadDogScheduler — a Python application around Google OR-Tools’ CP-SAT solver that handles team data entry, constraint-aware schedule generation, validation with ranked fix suggestions, drag-and-drop manual editing, and exports to every format the tournament needs. The matchup-first idea from my 2012 paper became its first architecture, and the modern unified solver eventually solved in one model what 2012 called intractable.
Here is the part that matters: I spent my early career writing software professionally — and I barely typed any of this. Claude Code wrote the code; I directed it.
What “directing an AI” actually means
My contribution was everything except the typing: the product vision, the architecture, the data model, the hard/soft constraint definitions, the acceptance criteria — and relentless testing and troubleshooting of what the AI produced. The job is being a demanding customer with an engineer’s vocabulary: I know what a correct schedule looks like because I built them by hand for years, and I know what good software behavior looks like from my early career as a software engineer.
That knowledge is load-bearing. The AI writes excellent code for the problem you actually specify. The forty hours I used to spend scheduling became the specification: every painful edge case from sixteen Junes — the coach with three teams, the team that must leave by 4 PM on Sunday, the sibling clubs that should not meet in round one — became a named constraint with a defined hardness, a weight, and a test. When the solver’s output looked wrong, my job was to determine whether the model was wrong, the weights were wrong, or my expectation was wrong — the same debugging discipline as any engineering work, applied one level up from the code.
Results
- 40 h → 1–2 hannual hands-on scheduling effort (solver runs overnight)
- 53.8% → 65.2%rest gaps in the 2–4 h target band (human-built 2025 schedule → solver)
- 28 → 3over-maximum rest gaps
- 1 → 0back-to-back games
- The solver built the 2026 tournament schedule — the only solver path in the system, not a demo — and the tournament ran on it, June 13–14, 2026.
- Benchmarked against the 2025 human-built schedule on the dials families and coaches actually feel: the figures above.
- The sixteen-year Excel workflow is retired, and the system absorbed twenty years of tournament archives, so every scheduling decision is now benchmarked against history.
The code is private; it runs a family business. I am happy to talk through the constraint model and what the build taught me about directing AI-written software.
Why I wrote this
Because “AI-assisted development” is easy to claim and hard to show. This project is my proof of what the skill actually is: not prompting tricks, but product ownership, architecture, domain modeling, and acceptance discipline — the things engineering leaders are supposed to be good at, pointed at an AI that writes code faster than any team I will ever manage. The code was written by a machine. The sixteen years of knowing exactly what to ask for were not.