Agree it in writing, before any code
A spec is where you and Claude write down exactly what you're building and both nod. It's cheap to fix a sentence here. It's expensive to fix a finished feature that was built on a misunderstanding.
Retention Pulse, specced
This is the spec that grew straight out of the brainstorming brief: the same project, sharpened into an agreement. Click "why this is here" on any section to see what makes a spec good.
Our actual spec for Retention Pulse
The clean version up top is the shape. This is the real spec that actually built the app: my own, longer and messier. Beside each part, why it earns its place.
Start with the problem, not the feature
Coffs pays Recovr about $300 a month to spot slipping members before they cancel, and they want to drop it: opaque score, glitches, and it overwhelms a stretched manager. The job: flag slipping members, give the plain-English why, and link to Grow so the human writes the message. No AI messaging. North stars: beat Recovr, and delightfully impress Coffs. Prototype-first, craft over coverage.
Name the architecture up front
One testable rule, not a brittle list
AND Status IN (Active, Scheduled)
AND Package Price > 0
A $0 price means comp, so it's excluded. That one trick catches staff, family and ambassadors without naming them all. (Category drifts plural or singular per studio, so match both.)
Concrete numbers, colour kept apart from rank
| Black | paying + absent 60 or more days |
| Red | paying + absent 21 to 59 days (winnable) |
| Orange | 14 to 20 days out, or a steep frequency drop |
| Yellow | flagged (late or early cancels), still showing up |
| Green | healthy, paying |
| New | own lane: activate, not "we miss you" |
Colour = severity. Rank = winnability.
Their calm, our honesty
The why moves off the card and into a click-in member peek; the cards go light; a calm Home becomes the front door. It's Recovr's structure (bounded glance, one thing per card, depth behind a click) with our honest substance: every flag traces to a real signal, never a black-box score.
Lock the exact words
No em-dashes in client copy. Pipes for heading separators. Locked phrasings so terms never drift: "X days since last class", "down A to B visits this month", "X late cancels in Y", "next payment $X on DATE".
The full spec runs twelve sections: data layer, the score, actions, access, positioning, build state. This is the spine. It ends on one line: once it's locked, turn it into the plan. Which is exactly the next tab.
Once you both nod, the spec becomes the plan
The spec says what you're building. The next step breaks it into the small, ordered steps that actually get built, one verifiable chunk at a time.