Product · The floor
A class is a promise about capacity.
Booking windows, waitlists, check-ins, no-shows — a box runs on small promises. The software's job is to keep them without anyone doing math.
The problem
The silent second roster.
Every full class has a second roster nobody manages: the waitlist. Most software renders it as a list to read — names in order, a timestamp, a shrug. But a waitlist isn't information, it's a queue of unresolved promises. It should be a machine that acts: a no-show frees a seat, the next athlete on the list gets it, and nobody has to text anybody at 5:47 a.m. to ask if the 6 a.m. has room.
Check-in isn't one thing, either. The 6 a.m. regular who's walked through that door two thousand times needs a different level of proof than the first-time drop-in, and both need something different again from the 200-member big-box where the front desk can't eyeball every face. Treating "check-in" as a single policy is how software ends up either too loose to trust or too strict to use. That's why check-in here is five configurable factors per location, not a policy debate settled once in a settings page nobody revisits.
And coaches are the scarcest capacity in the room — scarcer than seats, scarcer than barbells. A class can run understaffed for weeks before anyone notices, because nothing forces the gap into view. Assignment, availability, and hours deserve the same visibility as seats — not a spreadsheet a head coach keeps privately.
The schedule
Write the rule once. The instances inherit it.
Recurring templates carry the rules — capacity, booking window, cancellation cutoff, required coaches — and every instance they generate inherits them automatically. When Tuesday's 6 p.m. needs to run differently just this once, that's an exception on one class, one click. Not a rebuild of the week.

Product design preview · fictional gym data
Proof, configured
Trust is a dial, not a debate.
A rotating QR code that renews every 30–60 seconds so a screenshot can't be passed around. A GPS geofence — 150 meters by default — that confirms the phone is actually at the box. Self-declaration for the gyms that just want a headcount. Coach confirm for the ones that don't. NFC for the ones with a reader already on the wall. Pick per location, because a single box front desk and a five-location chain are not solving the same problem.

Product design preview · fictional gym data
The pulse
The floor has a pulse — read it.
Fill rate, no-show rate, and late cancels, laid next to a day-by-hour heatmap that shows exactly where the schedule is lying to you — the slot that looks full on paper but runs at 40% every Thursday, the template nobody's touched the booking window on since it was written.

Product design preview · fictional gym data
Coaches are capacity too
The coach is the coach. The schedule should know it.
A resource view of who's coaching what, this week and next. Fit-scored suggestions when a slot opens up, so filling a gap isn't a group text to everyone hoping someone's free. Availability windows that auto-unassign a coach the moment they go out of bounds, instead of leaving a class quietly uncovered. Monthly hours tallied and ready for payroll export — not reconstructed from memory at month-end.

Product design preview · fictional gym data
The specifics
Auto-promotion
5 per location
Every 30–60 s
150 m
Booking + cancel, per template
Exportable
Get started
Run a week on it.
Bring your real schedule and your real waitlist behavior. Get on the list and we'll show you what the floor looks like when nobody's doing the math.