← All work
Case study · §03 SaaS · 2026–

A SaaS that grew to 110 clubs on word of mouth.

Rugby Unlocked is the identity and statistics platform for amateur rugby. I co-founded it, I run it, and I built it. Today it serves 400 active users and 40 paying clubs across 110 communities, with zero paid acquisition.

  • 110Rugby clubs on the platform today
  • 400Active users, fully organic
  • 40Paying customers via Stripe
  • 1Engineer running the whole stack

The brief

Amateur rugby is full of statistics that nobody owns. Try counts, tackle counts, season averages. Most clubs keep them in a coach's notebook or a WhatsApp message. A player who moves clubs has no record of what they did at the last one.

The premise of Rugby Unlocked is that every amateur rugby player should own a portable identity and a running set of statistics that travels with them. The clubs they play for get coaching tools on top. Both sides win when the data is in one place.

What shipped

  • Player identity. Every player has a profile that follows them across clubs and seasons. Match history, position history, statistics, and a verified link to the clubs they've played for.
  • Club tools. Match-day team selection, attendance tracking, statistic recording per player per match, season summaries, and a coach view that reads like a coach actually wrote it.
  • Stripe-backed billing. Per-club subscription, monthly invoices, automated retry on failed payments, dunning emails, all of it. The unpaid clubs drop down to the free tier without losing data.
  • Acquisition mechanic. Every player invitation reaches a non-user and asks them to join. The conversion is high because the player who is being invited is already named on a match sheet.
  • Operator dashboard. A small internal admin tool that lets me see growth, billing, and support volume on one screen. The same Next.js codebase as the product.

The stack

  • Frontend & backend. Next.js with the App Router, TypeScript end-to-end, server components for the heavy reads, server actions for the writes.
  • Data. Postgres with a careful schema. Every player, every match, every statistic is its own row with a foreign key to a club season. Reporting is real SQL, not aggregation in app code.
  • Billing. Stripe Subscriptions with metered tiers per club, the customer portal for self-service downgrades, and a webhook listener that keeps the database in sync.
  • Hosting. Vercel for the app. The whole thing runs on a single project with zero infrastructure to babysit.
  • Email. Resend for transactional, custom templates for invitation flows and statistic-summary emails.

Why it matters

Rugby Unlocked is the proof that one engineer can build, run and grow a real SaaS without a marketing team, a sales hire, or outside capital. The product carries itself because the invitation flow is the marketing flow.

It is also the live test bed for the patterns I use on client work. The Stripe wiring, the dunning logic, the multi-tenant data model, the operator admin tool, all of it has been load-tested by a live user base for months before it reaches a client project.

Want a SaaS built and run like this?

Start a project