Case study · AI automation · Built with Claude Code
Unstoppable: 14 AI tools for a coaching company's weekly launch, built in eight weeks
Unstoppable is a coaching company for entrepreneurs. It fills a free five-day challenge with about twelve thousand people every few weeks, then sells and delivers a twelve-month program. The work between those steps ran on spreadsheets and people copying data between systems. We built fourteen tools that carry it, with Claude drafting and a person approving.
- Client
- Unstoppable, a US coaching and education company for entrepreneurs
- Founder and CEO
- Robert Hartwell
- Industry
- Coaching and online education
- Engagement
- Client since February 2026. These fourteen tools: September to November 2026
- Our team
- One developer working with Claude Code
- Client's team
- The founder, an operations lead, three follow-up staff, coaches and a production manager
- What we built
- AI follow-up, ad comment replies, sales dashboard, live chat, sales calculators and client production tools
- Built with
- Claude Code
- AI in the product
- Claude
- Status
- 14 tools shipped. Twelve run in accounts the client owns
- 14tools shipped, most of them one to three days from brief to production
- 5% to 98%of AI drafts passing the founder's voice rules after a rewrite, across 1,217 drafts
- 3 minfrom a comment on an ad to a reply
- 0errors in a load test with 600 live chat viewers and 200 people posting
The problem
The business restarts every few weeks. Ads fill a challenge that opens on a Monday, the founder presents the program on day three, and the following week is the selling week. Clients who join then work month by month through an offer, content, a photo shoot and a showcase.
The data for all of this sat in an ads platform, an email list tool, a CRM, intake forms, a client portal and hand-coloured spreadsheets. None of them talked to each other, so people did: clearing attendance tags before each day one, colouring payment cells every month, retyping homework and answering ad comments for hours over the weekend.
Four constraints shaped every tool:
- Live rooms. Hundreds of people open the same tool in the same minute when the founder says “open it now”.
- The founder's voice. Anything sent under his name must sound like him and must never contain a number, result or promise the person did not give.
- Privacy. Participants share income, goals and personal stories. Each tool sees only what it needs, and no names reach logs or chat channels.
- Ownership. New systems live in the client's accounts, so the client can change staff or vendors and keep every tool.
What we built
Personal follow-up for twelve thousand people.
Every participant is scored and given one named follow-up person for the whole challenge. Attendance is read every ten minutes, and Claude drafts a personal email in the founder's voice from what that person wrote on their intake form. A staff member approves, edits or skips each draft. Approved emails go out through the CRM within fifteen minutes and never between 9 PM and 8 AM.
1,500+ tests · only intake replies above a 0.7 confidence score send without a person
Replies to ad comments in three minutes.
Each comment on a Facebook or Instagram ad is sorted into one of ten types. Claude drafts a reply of one to three sentences, code checks it, and it is published three minutes later. Spam is logged and never answered. A comment type publishes without review only after the team has ticked it.
309 tests · nothing goes out between 11 PM and 6 AM Eastern
One sales number everyone agrees on.
The dashboard pulls ads, list and purchase data every half hour. A sale is a person whose first cleared payment falls inside the selling window, placed in the challenge they signed up for. Audiences are graded on whether their buyers kept paying first and on lead cost second. The founder gets a Slack update four times a day during a campaign and a daily summary written by Claude.
360 tests · sales matched the operations team's hand count exactly
Live chat that holds a full room.
A chat that sits under any video player. The team gets a screen to open and close the room, pin and hide messages, post as the team and show the offer button at the right moment.
17,371 feed requests and 1,054 posts in the load test, with no errors · a message reaches screens in 0.7 seconds at the median
The other ten tools
- Challenge portal tools. Participants answer by voice for up to two minutes a question and get a marketing story back. Audio is deleted once it is transcribed. 630+ tests.
- Future-self letter. Five short questions become a letter dated 100 days ahead, returned to the participant on day three. Built the day it was briefed.
- Media outlet finder. Ten podcasts, ten press outlets and ten speaking stages for each person, from a researched list that grew from 223 to 1,291 entries.
- Sales calculators. Eight versions from one codebase. 800 of 800 simultaneous saves in a load test.
- Internal operations dashboard. Client payment status read from the CRM in place of a hand-coloured sheet, with a compare view for checking the two against each other.
- Carousel generator. A brand guide, photos and one reel transcript become a carousel in two versions. Every slide line quotes the transcript, and photos are never retouched or generated.
- Brand package generator. From shoot photos and approved copy: a five-page media kit, a one-sheet and a WordPress site in 2.5 to 4 minutes, approved piece by piece by the production team.
- Offer audit. 203 homework answers become a twelve-page client report and a two-page brief for the founder. Every number is computed in code, and only the founder can approve.
- Offer asset generator. A ten-section sales page, a twelve-slide deck and five emails from the audited offer in about two and a half minutes.
- Team time study. The team logs its day in twenty-minute blocks, so leadership can see which work to keep, delegate or automate.
Seven of the other ten tools
Screens from the other tools
Sample data throughout. Select a screen to see it larger.
How every AI step works
A rule written only in a prompt was treated as not existing. Voice rules, privacy rules and “never say” lists became code with tests. Every feature shipped switched off, ran against real data in a mode that prints what it would do, and was then turned on in stages.
Bugs that looked like success
The costly bugs in this project had one thing in common. Nothing errored, and every page looked right. Each was caught by comparing two numbers that should have agreed.
The attendance that matched nobody.
Attendance was keyed by CRM contact id and the roster by email, so 11,790 of 11,907 participants could never be matched. “We missed you” notes would have gone to people sitting in the session.
Fix: Match on both keys and compare independent counts as routine.
The safer retry that saved fewer people.
When several hundred people opened a calculator at once, the database ran out of connections. Retrying on the server halved the result: 185 of 800 simultaneous saves.
Fix: Pooled connections and retries in the browser. 800 of 800.
Purchase rows are not buyers.
In one week the purchase feed held more than twice as many rows as there were buyers. Declined cards, split payments and old instalments all shared the feed.
Fix: A sale is a person whose first cleared payment falls inside the window.
Results
| Before | Now |
|---|---|
| Three people writing follow-up for about twelve thousand sign-ups | Every participant gets a personal email, drafted by Claude and approved by a named staff member |
| Ad comments answered by hand for hours each weekend | A reply three minutes after the comment |
| Sales counted from purchase rows | Sales counted as people, matching the operations team's hand count |
| Payment status coloured by hand in a spreadsheet | Read from the CRM, with a view that lists every difference |
| A brand package taking outside vendors weeks | A draft in 2.5 to 4 minutes for the production team to approve |
Figures from the project's own records, November 2026.
Under the hood: stack, models and tests
Stack: Next.js 16, React 19, TypeScript and Tailwind. Supabase Postgres with row level security. Hosted on Vercel, with scheduled jobs guarded by secrets. Playwright with headless Chromium for PDFs and slides.
Models: Claude (Opus and Sonnet tiers) for drafting, sorting and analysis, with structured output and prompt caching. Speech to text for voice answers, with the audio deleted after transcription.
Connected systems: Ontraport for contacts, purchases and email sending. Meta Graph API for ad data and comment replies. Slack for updates and private failure alerts. A client portal on Airtable, which opens each tool through a signed one-use pass. WordPress for client sites.
Email: our apps never send email directly. Approved messages are written to the CRM, and its own automation sends them, so the client keeps one sending reputation and one unsubscribe list.
Ownership: twelve of the fourteen tools run in the client's own GitHub, Vercel and Supabase accounts. The two oldest predate that rule and still run in ours.
Tests: more than 2,800 automated tests across the four client-owned codebases.
How it was built: Claude Code was the development environment and sits in no live data path. Briefs arrived as documents or messages from the founder, often with a demo date days away.
Running a launch on spreadsheets and copy-paste?
Tell us where the hand work is on a 30-minute call. You leave with a plan and a cost, in writing.
Book a discovery call