Tessellate
Payments, waivers and class scheduling for a chain of climbing gyms — the lot, in one place.
Three tools, none of them talking.
The gyms took class bookings in one app, payments in another, and waivers on a clipboard. Front desks reconciled it by hand, double-bookings were normal, and nobody could answer "how full is Tuesday's 6pm?" without three tabs.
The brief was narrow on purpose: one place to book a class, pay for it, and sign the waiver — across all four sites. Not a CrossFit-sized platform. The three jobs that actually hurt, joined up.
One booking, start to paid.
A member picks a class, pays, and signs the waiver in one unbroken flow — and the front desk sees the same truth in real time. Capacity is enforced at the database, so two people can't take the last spot, and a waiver is never missing when someone walks in.
Stripe handled cards and memberships; the schedule, capacity and waivers were one Postgres model so the four sites shared a single source of truth instead of four diverging ones.
The desk had to trust it.
The win wasn't the booking screen — it was the staff view: who's checked in, who hasn't paid, who hasn't signed, refreshing live. Once the desk trusted the screen over the clipboard, the clipboard went in the bin.
"The clipboard's gone. Nobody misses it."
Have something narrow and real?
That's exactly the kind of brief I like. Two slots open for Q3.
Start a project