Coaching and youth-sports SaaSLaunch story
A coaching platform on web and mobile, with billing that survives refunds.
SkillSchedule gives private coaches and the parents who book them one place to schedule, pay and stay in touch. We built all of it: parent, coach and admin portals, a marketing site, an Expo app for iOS and Android, Stripe billing with refund splitting, live-streamed sessions, guarded AI scheduling, and the email, SMS and tracking that run the business between sessions.
- Engagement
- Client
- Client
- SkillSchedule
- Sector
- Coaching and youth-sports SaaS
- Story
- Launch
- On the web
- skillschedule.com (opens in a new tab)
The number
The one figure we’ll stand behind.
Open the receipt for where it came from, how it was counted and when we last checked it. How we count
v1.0.4
SkillSchedule’s iOS and Android app, built on Expo alongside the web portals
Expo / React Native with Stripe billing and refund splitting, sharing one API with the parent, coach and admin portals.
receipt
SOURCE · SkillSchedule mobile repository (app version and EAS build configuration)
METHOD · Version string from the app’s production build configuration.
VERIFIED · 2026-09
CLASS · repository
✓ every number on this site opens its receipt
CLAIM · app-store-live
How we count01 · Where they started
Coaches, parents and a lot of moving parts
Private coaching runs on sessions, payments and communication between three kinds of people: coaches, parents and the team running the platform. SkillSchedule needed each of them to have their own view, and needed money, reminders and scheduling to work without anyone chasing them.
02 · The wall
Scheduling is the easy part
The hard parts are money that moves correctly (per-session charges, consolidated billing, promotions, and refunds that split properly), an app ready for App Store and Play Store review, live-streamed sessions with moderation and retention rules, and messages that reliably reach parents by email and SMS.
03 · What we built
What we built.
Named systems, described by what they do, one part at a time.
Part 1: Three portals, a marketing site and a mobile app
Parent, coach and admin portals are React + Vite PWAs over an Express + Postgres API, with role-based access across all three. The Expo app adds Apple and Google sign-in, push notifications, the Stripe payment sheet, speech input, and crash reporting through Sentry and Bugfender, with iOS and Android builds produced through EAS. A parallel re-platform onto Cloudflare Workers and Next.js is under way, with Vitest coverage.
- Role-based access across parent, coach and admin
- EAS build pipelines for iOS and Android
- A marketing site on Strapi CMS
Part 2: Money plumbing that gets audited
Stripe handles per-session charges, consolidated billing, promotional pricing, waivers and refund splitting, and a nightly payment run follows up on failures automatically. Receipts are audited to state exactly what the card was charged, and the commit history shows dedicated correctness passes on money display and email amounts.
- Refund splitting and consolidated billing
- Nightly payment runs with failure follow-ups
- Receipts that match the charge, audited
Part 3: Live sessions, and AI on a short leash
Sessions stream over LiveKit with comment filtering and retention policies. A coach assistant runs on GPT-4o with Claude as a fallback, and coaches can create sessions in plain language under a strict rule: the LLM extracts, the server decides. The model proposes names, dates and times; deterministic server code resolves them against the coach’s real roster, and the model has no write access at all.
- A dual-provider assistant with automatic fallback
- Deterministic entity resolution against the real roster
- No write path for the model
Part 4: Lifecycle messaging and attribution
Scheduled jobs send session reminders, coach check-in reminders and payment-failure follow-ups by SendGrid and Postmark email and by Telnyx SMS with Twilio fallback, using branded short links. Google Tag Manager runs on all three web surfaces, Meta Pixel on the marketing site, and UTM-tagged QR posters attribute offline coach sign-ups the same way paid clicks are attributed.
- Email plus SMS with a second carrier as fallback
- GTM across the site, parent portal and coach portal
- QR posters with offline attribution
04 · Up close
The work, up close.
Real screens and real product photography, uncropped. Select any image to enlarge it.




