Slow check-ins were creating a crowd at the front door and making classes start late. I built a lightning-fast attendance system that clears the lobby in seconds and keeps the gym's schedule on track.
My role
Senior Product Designer (IC, PM-leaning)
Duration & company
Multi-phase rollout over a 18 months
Collaborated with
Product, engineering, QA, customer support, sales
Context
MyStudio is an all-in-one management platform used by martial arts and fitness studios to run memberships, classes, payments, and student progress.
Attendance was the most repeated task in a studio’s day—and one of the most critical in martial arts.
It drives class limits, belt promotions, eligibility, and reporting. If attendance is slow or inaccurate, it affects both operations and student outcomes.
Problem
Manual attendance and read-only schedules increased staff workload and reduced retention insight
Low adoption (~10%) revealed attendance wasn’t working in practice. Staff had to manually search participants, verify memberships and payments, and check students in one by one. The system was slow enough that teams avoided relying on it in real time.
The class schedule didn’t help either. It showed registrations, but not what instructors actually needed to manage a class — who attended, who missed, or who was falling behind.
Decisions and tradeoffs
Made check-in fast enough to be used during peak hours
Attendance was skipped because it slowed staff down. If it took more than a few seconds, they postponed it.
Decision:
Reduced check-in to a single, repeatable action: QR • PIN •Name search and later, locked the selected method to avoid repeated clicks.
Tradeoffs:
We showed less validation detail at check-in time and moved complex membership rules to admin controls.
Constraints:
Backend eligibility checks still take time (membership, limits, capacity). We couldn’t remove that logic — so we optimized interaction instead.
Result:
Attendance became usable in real time. This is now the most used feature (~3M users).
Allowed check-ins even when business rule errors exist
In V1, payment or limit errors stopped students from checking in. Staff had to resolve issues before class could begin.

Decision:
Studios control which errors block check-in. Payment issues can be allowed. Access rules define who can register and appear in the roster.
Tradeoffs:
Not every rule can be overridden. Expired trials and permission restrictions remain enforced.
Constraints:
The backend performs heavy validation during registration and check-in. We could not remove that logic, so we added controlled flexibility instead.
Result:
Classes no longer pause because of billing issues. Attendance gets recorded in real time.
Turned the class schedule into a daily operations tool
In V1, the class schedule showed data but did not help instructors manage the class.
Decision:
Studios could see who registered, but they couldn’t easily mark attendance, handle walk-ins, update skills, or check promotion readiness from the same screen. In V2, attendance, skills, and rank live together. Instructors can move between classes in the same day, update progress, and manage rosters without leaving the schedule.
Tradeoffs:
We removed bulk rank and bulk skill updates due to engineering complexity. Updates now happen student by student to keep logic accurate.
Constraints:
Legacy backend validation and complex membership rules limited how much could be done in real time. We prioritized clarity and reliability over adding more actions.
Result:
Owners no longer treat the schedule as end-of-day reporting. Instructors can see progress where decisions happen. Promotion readiness is visible without spreadsheets. The feature shifted from “analytics” to daily workflow.
Made promotion readiness visible during class — not in spreadsheets
Studios were manually cross-checking attendance and skills to see who was ready for their next belt or tip test.

Decision:
In V1, attendance lived in one place and skills in another. Instructors had to remember progress or maintain separate spreadsheets. In V2, attendance count, skills completed, and rank status are visible together inside the class schedule. Instructors can update skills or ranks immediately after class and add students to eligibility lists in the same workflow.
Tradeoffs:
We did not build bulk skill marking due to backend complexity. Progress updates happen per student to ensure accuracy.
Constraints:
Eligibility logic depends on attendance thresholds, skill completion rules, and membership validity. Real-time sync required working within legacy validation APIs.
Result:
Instructors can confidently answer parents on the spot. Promotion cycles move faster. Attendance data directly drives progression instead of sitting unused. Studios increase retention because progress is visible and timely.
Outcome
80% reduction in check in time.
It’s so fast that I don’t even have to keep a check on the students coming in.
78% adoption in 30 days.
Studios now close their day from here.
(~10% ARR impact)
Contributed to retention and revenue growth for the business.
Improved data accuracy
across attendance, ranks, and skills.
Behind the scenes
This system was first explored in 2022, but an early redesign was paused due to cost and build complexity. When attendance issues started affecting sales and renewals, the project was revisited under tighter constraints and higher stakes.
I interviewed 50+ martial arts studios and found a consistent pattern:
many had abandoned the old attendance system and relied on paper cards, then manually entered attendance for 5–6 classes at the end of the day. Instead of saving time, the software was adding work.
I worked closely with engineering through multiple iterations, documenting edge cases around eligibility, drop-ins, waitlists, and partial data. Several features were cut or simplified based on real usage patterns and business priorities.
Sales and support feedback played a major role—attendance had become a frequent deal-breaker. Fixing it wasn’t about polish; it was about restoring trust in a core workflow studios depend on daily.













