← All projects

Scouty

A two-sided marketplace that matches people with the right health and fitness coach, then lets them message, book and pay that coach, with a full toolkit for coaches to run their business.

Web apps, Marketplace, Integrations, Automation

Visit the live site ↗
Type
My product
Status
Live
Year
2026
Built with
Next.js, React, Supabase, Postgres, Stripe Connect, OpenAI, Inngest, Resend, Sanity, Mapbox, Google Calendar, Vercel

Finding a coach is harder than it should be. Most people pick a personal trainer from an Instagram post, a flyer at the gym or a mate's recommendation. There's no easy way to compare who specialises in what, what they charge, or whether they're any good.

Coaches have the opposite problem. They're great at coaching and stretched on everything else. A typical PT runs their business across Instagram DMs, a booking link, bank transfers, a spreadsheet of clients and a notes app full of programmes.

Scouty fixes both sides. Clients tell us what they're after and get matched with verified coaches near them. Coaches get a profile that ranks on Google, plus one place to take bookings, get paid, message clients and deliver their programmes.

Impact

Coaches on the platform
22
Cities, and growing
2
Google impressions in the last 90 days
23k+
Payments transacting through the marketplace
Live

As of 2026, clients work with their coach through Scouty. They find them, message them, book sessions and pay, all on the platform. Money moves through Stripe Connect straight to the coach, and conversations stay in Scouty rather than drifting off to DMs.

From MVP to marketplace

I've designed and built every part of Scouty: the product, the UX, the front end, the database and the integrations.

  1. January 2025The first version

    Coach profiles, bookings and reviews on Next.js and MongoDB. Enough to put real coaches in front of real clients and see what they did.

  2. June 2025Payments and a new foundation

    Stripe Connect went in so clients could pay coaches directly. The same month I moved everything to Supabase for Postgres, row-level security and realtime.

  3. February 2026Smarter discovery

    Semantic search, Google Calendar sync and link-in-bio pages for coaches.

  4. May 2026Gyms, programmes and SEO

    Gyms can list their whole team. Coaches can build and deliver training programmes. Location pages started pulling in search traffic.

  5. August 2026Everything on the platform

    Two-way messaging closed the loop. Discovery, conversation, booking and payment now all happen inside Scouty.

How it was built

Scouty is one Next.js app on Vercel with Supabase behind it. Anything slow or scheduled runs as a background job, so pages stay fast and nothing is lost when a third party has a bad day.

Clients, coaches and gyms all use the same Next.js app. Supabase holds the data and pushes live updates, while background jobs handle payments, email, AI and calendar sync.

What I built

Pages that rank

People don't search for "fitness marketplace". They search for "personal trainer Queenstown" or "running coach Christchurch". So Scouty generates a page for every combination of city, coach type and specialty, about a thousand in total.

Most of those would be thin, and thin pages hurt a site. So only pages with at least three coaches and hand-written copy get indexed. The rest still work for visitors but tell Google to skip them. One rule decides this, and the sitemap, robots tags and internal links all read from it, so they can never disagree. Every coach profile and page carries structured data, and there are llms.txt files so AI search tools can read the site too.

Matching people to the right coach

The find-a-coach flow asks the questions a good gym manager would: what you want to work on, where you train, how you like to be coached, and your budget. It takes about a minute.

Every coach then gets a match score against your answers, and you can see which criteria they met. If you'd rather just describe what you want, semantic search reads it, works out what you actually mean, and writes a one-line reason for each match. Behind the scenes, a ranking score rewards coaches who are verified, complete, well reviewed and quick to reply.

Results for one client brief. Each coach shows their match score, why they were matched, and what they specialise in.
scouty.co.nz/coaches

Payments on both sides

Every coach connects a Stripe Express account during onboarding. When a client buys something, the payment is made on the coach's own account and Scouty's platform fee comes off automatically. Coaches can sell one-off sessions, recurring plans, training programmes and digital products, with promo codes and subscriptions that end after a set number of weeks.

The payment itself is only half the job. A Stripe webhook kicks off everything that should happen next: the booking is confirmed, the coach's onboarding forms go to the client, the session lands in both calendars and the receipts go out.

One purchase, end to end. The client pays the coach's own Stripe account, and a webhook sets off everything that should happen next.

Tools for coaches to run their business

Coaches don't want another app to manage. They want fewer. So the coach dashboard covers most of what they'd otherwise stitch together: a profile builder with qualification checks, a calendar that syncs both ways with Google, booking requests, client records, intake forms, a programme builder with an exercise library, reviews, and analytics showing where their profile views come from.

The link-in-bio page is the part coaches share most. It turns their Instagram bio link into a mini storefront. They drag sections into order, hide the ones they don't need and watch a live phone preview update as they go.

The link-in-bio editor. Sections are dragged into order on the left, and the phone preview updates as you go.
scouty.co.nz/dashboard/link-in-bio

Conversations that stay on the platform

Messaging was the last piece. Every enquiry becomes a conversation, and replies appear instantly on both sides through Supabase Realtime. Coach contact details are never sent to clients, so the conversation happens where Scouty can support it.

Email is where messaging usually goes wrong. Send one per message and people unsubscribe. Scouty waits three minutes, bundles anything new into a single digest, and skips the email entirely if the person has already read it. Messages are rate-limited in the database, and photo attachments are converted and checked before they're stored.

A coach's inbox. Every enquiry becomes a conversation, and replies appear live on both sides.
scouty.co.nz/dashboard/enquiries

What I'd take from it

Scouty is the most complete product I've built. It's a real marketplace with two sets of customers who want different things, real money moving between them, and a lot of small details that decide whether people trust it. Getting both sides to work in one place, and getting that to feel simple, has been the hardest and most rewarding design problem I've worked on.