Johnboy RoxasCase study
← Back to portfolio
Live nowBuilt from zeroSample data, labelled

Coach OS

A complete client-management platform, designed and built from zero, wired into GoHighLevel in both directions. Not a template, a snapshot, or a funnel. A running product, and you can click through every page of it before you read another word about me.

Build statusCounted from the repository
29,474
Lines of production code
24
GoHighLevel webhook events
83
Automated email templates
26
Page routes
34
API endpoints
8
Scheduled background jobs
The live demo runs on sample data and is labelled as such on every page that shows it.
/01 Why it exists

Every CRM build hits a wall. This is what I do there.

A one-to-one coach sells a six month engagement, then runs it out of a calendar, a spreadsheet, a payment link, and a folder of documents. Nothing talks to anything. The client pays, then waits for a welcome email somebody has to remember to send.

GoHighLevel solves a large part of that, and I use it for exactly that part. But there is always a gap between what the CRM can do natively and what the business actually needs. Most contractors stop at the edge of that gap and call it a platform limitation.

Coach OS is what I build when I do not stop there: a real application on the other side of the gap, talking to the CRM in both directions, so the coach keeps one system and the client never sees the seam.

/02 The product, in screens

Real screenshots, not mockups.

Every screen below is the running Harper Quinn demo practice, captured live: the four lead generation tools, the client portal, and the owner's dashboard. The public ones are one click away in section /06.

harperquinn demo · /diagnosticLive
Lead gen tool 1 of 4: the Alignment Diagnostic. A four-minute quiz that scores the visitor, writes the result into the CRM, and books the call from the result page.
Lead gen tool 1 of 4: the Alignment Diagnostic. A four-minute quiz that scores the visitor, writes the result into the CRM, and books the call from the result page.
harperquinn demo · /challengeLive
Lead gen tool 2 of 4: the 3-Day Reset. A three-day challenge with its own intake, daily email drip, and completion tracking.
Lead gen tool 2 of 4: the 3-Day Reset. A three-day challenge with its own intake, daily email drip, and completion tracking.
harperquinn demo · /blueprintLive
Lead gen tool 3 of 4: the 90-Day Blueprint. Five questions in, one AI-personalised plan out, delivered to the lead's inbox.
Lead gen tool 3 of 4: the 90-Day Blueprint. Five questions in, one AI-personalised plan out, delivered to the lead's inbox.
harperquinn demo · /front-deskLive
Lead gen tool 4 of 4: the AI Front Desk, answering a real visitor question live. It qualifies the lead and tags the CRM while it talks.
Lead gen tool 4 of 4: the AI Front Desk, answering a real visitor question live. It qualifies the lead and tags the CRM while it talks.
harperquinn demo · /coach · logged in as a demo clientLive
The client portal: the AI companion chat, the live commitment strip at the top, daily check-ins, weekly booking, courses, progress, and signed agreements, all behind one passwordless link.
The client portal: the AI companion chat, the live commitment strip at the top, daily check-ins, weekly booking, courses, progress, and signed agreements, all behind one passwordless link.
harperquinn demo · /dashboard · owner onlyLive
The admin dashboard: active clients, recurring MRR, today's calls, and everything needing attention, on one screen.
The admin dashboard: active clients, recurring MRR, today's calls, and everything needing attention, on one screen.
harperquinn demo · /dashboard · unified pipelineLive
Every lead from every tool on one board, with at-risk, unsigned, and gone-quiet filters, per-card notes, checkout links, and CSV export.
Every lead from every tool on one board, with at-risk, unsigned, and gone-quiet filters, per-card notes, checkout links, and CSV export.
/03 What is inside
The client side

What the client sees

  • A private portal they reach by email, with no password to forget and no app to install.
  • An AI companion that answers using their own history: their intake answers, their plan, their progress, their last session.
  • A course area with modules, nested lessons, per-lesson completion, and a certificate at the end.
  • Milestone check-ins that ask how things are actually going, and record the answer.
  • A service agreement they read and sign in the browser, then download as a real PDF.
The coach side

What the coach sees

  • A pipeline board where every lead's quiz answers, payment status, signature, and course progress live on one record.
  • A health score per client, computed from signals already on the record, so churn shows up before the client goes quiet.
  • Revenue by source, conversion by stage, and package performance, with attribution carried from first click to closed deal.
  • A single Client 360 panel: everything the system has ever learned about one person, in one scroll.
  • Testimonials that turn into branded, downloadable cards without leaving the dashboard.
The automation layer

What runs by itself

  • 24 distinct webhook events moving in both directions: app to GoHighLevel, and GoHighLevel back to the app.
  • 8 scheduled jobs handling onboarding weeks, check-in reminders, access expiry, no-show recovery, and a weekly digest.
  • 83 email templates, including follow-up sequences that escalate on day 2 and again on day 5 instead of firing once.
  • Booking and pipeline stage changes sync back from the CRM, so nobody keeps two systems in their head.
The money layer

What handles payment

  • Stripe checkout for one-time packages and recurring subscriptions.
  • The full subscription lifecycle handled: payment succeeded, payment failed, and cancellation, each with its own recovery path.
  • Webhook signature verification, so nobody can spoof a payment into the system.
  • Access windows that open on payment and close on expiry, enforced at the data layer and not just in the interface.
/04 The parts that were actually hard

Anyone can list features. These are the decisions underneath.

They are the reason the system still works on a bad day.

  • A signed contract that cannot be quietly overwrittenEvery other collection in the system allows updates. A signed agreement must not. That rule is enforced in the database security rules themselves, not by trusting the app to behave, and each signature stores a permanent snapshot of the exact clause text shown at signing. If the coach edits the template a year later, you can still prove what the client actually agreed to.
  • Retried webhooks that never double-chargePayment providers retry. If your handler is not idempotent, a network hiccup becomes a second charge or a duplicate email. Every write path is built so that running it twice produces the same result as running it once. Invisible when it works, and the reason nobody gets woken up at 2am.
  • AI that degrades instead of breakingEvery AI feature has a hard-coded fallback. If the API key is missing, the service is down, or the call times out, the visitor sees a complete, sensible page instead of a spinner or an error. An AI feature that only works when the weather is good is not a feature.
  • Dashboards that add zero extra queriesEvery aggregate on the dashboard, the health scores, the revenue trend, the referral leaderboard, the compliance alerts, is derived from data already loaded once. No new reads. That discipline keeps the dashboard fast at ten clients and still fast at a thousand.
  • Checked at 320 pixels, not just on a laptopMost of this gets opened on a phone, often from a link in a message. Every public page is verified for horizontal overflow at 375px and 320px before it ships. A page that scrolls sideways on a phone reads as broken, no matter how good it looks on a monitor.
/05 Built with
Next.js (App Router)ReactFirebase FirestoreFirestore security rulesStripe (one-time + subscriptions)Anthropic Claude APIGoHighLevel webhooks + APIVercel (hosting + cron)pdf-libCanvas rendering

If your GoHighLevel build has hit a wall

That wall is usually where my work starts. Send me one workflow that is broken or one funnel that is not converting, and I will tell you what is wrong with it before you spend anything.