← Portfolio

Operating company · Dance education

CPF Dance

Studio operations for dance instructors, their students, and the studios that host them.

CPF Dance runs the business side of professional dance instruction: class schedules across studio locations, enrollment, private lessons, lesson packs, payments and signed waivers, in one place. Live with NYC dance studios.

Status
Live
Domain
Dance education
Since
2025
Role
Product, engineering, operations
Dancers' legs in white socks and jazz shoes on a studio floor

The problem

Independent dance instructors run their business across text messages, payment apps and paper waivers. The studios that host them have no shared view of who is enrolled, who has paid, and who has signed.

What was built

  • Class scheduling across multiple studio locations, with enrollment and roster management.
  • Private lesson requests and rescheduling, plus lesson packs: buy a block of lessons, track what is used.
  • Payments with a full event ledger, so every charge can be traced back to its source.
  • Digital waivers: reusable templates, one instance per student, e-signatures on file.
  • Progress notes on every student, visible to their instructor.
  • Instructor onboarding behind manual approval, studio inquiries, and reviews.

How it was built

  1. 01

    Shadow the operation

    Mapped how one instructor actually runs classes across a dozen studios before writing anything: who books, who pays, who signs what, and where it breaks.

  2. 02

    Model the business

    Twenty-two tables with row-level security tuned so a studio sees only its roster and an instructor sees only their students. The permissions are the product.

    • Supabase
    • SQL
  3. 03

    Build with AI, review by hand

    AI generates the screens and a first pass at every policy. Every policy is read and tested by a person before it ships, because a wrong one leaks a roster.

    • Claude
    • Cursor
  4. 04

    Operate

    Live with NYC studios. Payments, waivers and lesson packs run without anyone touching a spreadsheet.

Stack

Backend
  • Supabase: Postgres 17, Auth, row-level security on all 22 tables
  • Policies written as subqueries and tuned for performance
Payments
  • Processor webhooks feed a payment_events ledger
  • Lesson-pack purchase and usage tracking
Documents
  • Waiver templates, per-student instances and signatures
  • Asset storage for studio and instructor media

Outcomes

  • Live at cpfdance.com with NYC dance studios.
  • Waivers, payments and lesson packs moved off text threads and into the product.
  • Every table behind row-level security from day one.