Prepaid hour tracking for tutors

SaaSWebweekendNext.jsSupabaseStripe

The idea

Solo tutors sell 10-hour blocks because it smooths income, then track the balances in their heads or a note on their phone. The failure modes are both bad: awkward disputes when a parent thinks three hours remain and the tutor thinks one, and unpaid sessions the tutor delivers because nobody noticed the package ran out two lessons ago.

Tutoring marketplaces solve this but take 15 to 30 percent of every lesson. The wedge is being just the ledger layer on top of the tutor’s own clients: no marketplace, no commission, no scheduling engine. Log a session, hours tick down, the parent sees the same number the tutor does, and the top-up link arrives before the balance hits zero.

Who pays

The buyer is the solo tutor or a two-to-three-person tutoring outfit charging $40 to $80 an hour. At $15/mo, preventing one unpaid session a month covers it several times over. Distribution: tutoring subreddits and Facebook groups, tutor-training communities, and word of mouth among parents, who see the receipts and tell other tutors they wish they got them.

MVP scope

  • Two-tap session logging that decrements a prepaid balance
  • Append-only per-student ledger visible to tutor and parent
  • Automatic parent receipt email after every session
  • Auto-sent Stripe top-up link at a low-balance threshold and at zero
  • Manual credits for cash payments and configurable no-show debits
  • Skip for v1: scheduling and calendar sync, group lessons, parent login portal, invoicing PDFs, multi-tutor permissions
// Build prompt — paste into Cursor / Claude Code / Lovable / Bolt
Build HourBank, a prepaid-hours ledger for private tutors. Stack: Next.js App Router, Supabase (Postgres, magic-link auth), Stripe for payment links and subscriptions.

Core flow: the tutor adds a student with a parent email and defines packages (for example 10 hours for 500). When a parent buys a package via a Stripe payment link the hours credit automatically through the webhook; the tutor can also credit hours manually for cash payments. After each lesson the tutor logs a session in two taps: student, duration (defaults to the usual lesson length), optional note. Hours decrement, and the parent gets an automatic receipt email showing the session, the note, and the remaining balance. When a balance hits a threshold (default 2 hours) the app emails the parent a pre-filled Stripe payment link for the next package, and again at zero.

Pages: today view with quick session logging, students list with balances and colour-coded low-balance flags, per-student ledger (every credit and debit, timestamped), packages and pricing settings, email template editor, billing.

Implementation details: store the ledger as append-only rows and derive balances by sum, so corrections are new entries, not edits, and disputes are settleable by scrolling. Handle no-shows as a configurable debit type.

Pricing: $15/mo flat via Stripe Checkout, 30-day trial, unlimited students.

// More SaaS ideas