All features
Building
Costumes & recitals

Recital seat sales, cash at the desk, holds that expire

Parents reserve seats online; pay at the desk. Held seats release if the parent doesn't show. Two-show $30 discount auto-applies.

Status note: Absorbs the existing studio prototype data model.

The story

Recital weekend is the studio's highest-revenue and highest-chaos week. The current setup: parents reserve seats via the studio's website, then come to the desk to pay in cash. Seats are tracked on a printed map; double-bookings happen.

Pirouette ships the seat-map model directly from the studio's existing Supabase prototype. Online reservation is a 'hold' with an expires-at timestamp; pay-at-desk converts to confirmed. Two-show discount applies at the line. Cash-only at recital time — no Stripe round-trip when there is a line at the desk.

What this looks like in practice

  • Online seat reservation as a 'hold' with expiry; pay-at-desk confirms
  • Two-show $30 discount auto-applies at the sale line
  • Cash-only at recital time — no Stripe round-trip when the desk is busy
  • 'Entered by' attribution on every payment
  • Cron releases expired holds back to available

Want to see this running on your studio's data?

Walk through a demo with us. We'll show this feature in context against the day-to-day workflow your studio actually has.