Twirlmate
Contest Schedule Builder: From 50 Hours to 3
Overview
Event organizers spent 50+ hours manually scheduling baton twirling contests in Excel, coordinating hundreds of athletes while avoiding judge-coach conflicts and timing overlaps—often with errors still slipping through.
I designed and built an intelligent scheduling wizard that automates conflict detection and algorithmic schedule generation while preserving organizer flexibility through real-time editing and drag-and-drop controls.
By shifting data entry from organizers to families during registration and balancing performances across lanes, the system reduced scheduling time by 80-90% and eliminated errors almost entirely.
The result: organizers now complete schedules in 1-5 hours with 100% satisfaction and adoption in the first season.
Where: Twirlmate / 2025 - Used by 7 contests to schedule 4,000+ performances
My Role: As the sole designer and developer, I conducted user research with event organizers, designed the complete user experience from registration through schedule generation, and built the full-stack solution using Django and Vue.js.
The Challenge: Manual Chaos in Excel
A never-ending game of guesswork to create conflict-free schedules
Event organizers spent 50+ hours manually building schedules in Excel, coordinating 250+ athletes across 1,250 performances while avoiding judge-coach conflicts, timing overlaps, and convention violations. Despite this massive time investment, errors were common: missing performances, scheduling conflicts, and cascading problems from last-minute changes.
The Solution: Intelligent Automation Meets Human Control
A wizard that handles the complexity while preserving organizer flexibility
I designed a multi-step wizard that captures scheduling preferences (lane configuration, block structure, lineup ordering), then automatically generates conflict-free schedules using a greedy algorithm that balances performances across lanes while respecting judge-coach relationships, timing constraints, and sport conventions.
Organizers retain full control through an editable interface that highlights conflicts in real-time and allows drag-and-drop adjustments, manual additions, and regeneration.
By shifting athlete data entry from organizers to families during registration, the system eliminated the 25+ hours of manual setup that plagued existing solutions.
Technical Innovation: Speed Through Smart Architecture
Generating 1,250 performances in under a minute
Built with Django and Vue, the system uses prefetching and in-memory storage to minimize database queries during generation, processing schedules through batched requests (one per outlined event). The algorithm works greedily: for each event, it finds the lane with fewest performances, checks for conflicts, and optimizes for minimal future scheduling issues.
When I discovered that top-of-schedule edits caused performance bottlenecks (updating everything downstream), I restructured generation to happen independently per event block, transforming 10-second freezes into instant updates.
</div>x