Skill progress tracking for swim schools

SaaSWeb1 monthNext.jsSupabaseStripe

The idea

Swim schools are re-enrolment businesses: the session ends every 8 to 10 weeks and every family makes a fresh decision to continue or quit. Parents quit for one dominant reason, they cannot tell whether their child is progressing, because progress lives on a laminated card in a binder by the pool. The school knows Maya is two skills from Level 3; Maya’s mother knows she paid 250 USD to watch splashing.

Jackrabbit owns scheduling for this industry, but its skill tracking is clunky, instructor-hostile, and invisible to parents; owners openly complain about it. The wedge is to ignore scheduling and attack the retention layer: a poolside checkoff grid an instructor can use with wet hands, and automated “Maya moved up to Level 3” emails that arrive with a re-enrol button while the pride is fresh. Progress made visible is what converts the next session.

Who pays

The school owner pays 99 USD/month per location. A single-pool school with 300 students turning over roughly 100k USD per session lives on its re-enrolment rate; moving that rate by two points is worth thousands per session, and the dashboard shows the conversion attribution directly. Distribution: the US Swim School Association’s conference and member forum, plus swim-school owner Facebook groups, where Jackrabbit’s skill tracking is a reliable complaint thread to answer.

MVP scope

  • Levels and skills editor with school-specific curricula
  • Poolside instructor grid with tap-to-cycle states and offline queueing
  • Level-up queue with batched approval and automated parent emails with Stripe re-enrol links
  • Mid-session progress emails showing the skill grid
  • Printable level certificates and a re-enrolment conversion dashboard
  • Skip for v1: full class scheduling/billing (coexist with Jackrabbit), waitlists, instructor payroll, native apps, multi-location roll-ups
// Build prompt — paste into Cursor / Claude Code / Lovable / Bolt
Build LevelUp Swim, a web app that handles skill progression and re-enrolment for swim schools. Stack: Next.js (App Router), Supabase (Postgres, Auth, RLS), Stripe Checkout for re-enrolment payments. Roles: admin, instructor, parent.

Data model: Levels (ordered, e.g. Tadpole, Minnow, Level 1-6) each containing Skills (front float 5s, rhythmic breathing, 15m freestyle); Students with a current level and per-skill state (not started, working on, mastered); Classes (level, weekday/time, session dates, capacity, price); Enrolments.

Instructor experience, optimised for a wet poolside tablet: open my class, see a grid of students x skills for their level, tap a cell to cycle its state. Big targets, high contrast, works offline for a lesson and syncs after (queue writes in localStorage). No typing required.

The retention engine: when all skills at a level hit mastered, the student is flagged for level-up; admin approves (one click, batched), which triggers a parent email: the student's name, the new level, which skills they mastered, and a re-enrol button deep-linking to Stripe Checkout for a next-level class with available capacity. Also send a mid-session progress email showing the skill grid, so parents see movement even without a level-up.

Certificates: level-up generates a printable A4 certificate PDF with the school logo, student name, and level.

Pages: admin dashboard (level-up queue, re-enrolment conversion stats), levels/skills editor, class manager, instructor class grid, parent portal (progress view, history), settings/branding.

Pricing: 99 USD/month per location. 30-day trial.

// More SaaS ideas