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