Robbie's design guide
Current: the build guide, rewritten Oct 19, last updated Oct 26, plus the brand sheet (Oct 21, not reviewed by Josh). The older design guide and style guide were replaced on Oct 19 and are not used.
The 10 rules that matter most for these pages
- Same colours, fonts and button, but each product gets its own page. Never a copy of the 3-day sign-up page (Josh, Oct 27: "don't dupe the 3 day challenge opt in page exactly").
- Phone first. Build at 390 wide, then laptop. No image taller than about 60% of a phone screen.
- One button: the raised green one, label on one line, static arrow, the small line under it sits outside the button.
- The first screen does the job. On a sign-up page the email box is visible without scrolling.
- Same look everywhere: green #344C3D, sage and light bands, Georgia headings, Open Sans text, nothing under 20px except the footer.
- Robbie is always real, and shown doing the thing. Never an AI image of him, no thumbs-up photo, no straight-to-camera headshot as a hero or section picture; a small round headshot only in a tiny "made by" spot (Josh, Oct 27: "he's STARING into my soul").
- No clutter: no small labels above headings, no intro paragraphs, nothing that looks like a button but is not.
- Prices say USD once ("$27 USD"), never a price inside the button, never "Start for $27".
- Proof is real email screenshots or Robbie's real quotes, never star ratings or invented numbers.
- The thumb product may add more structure and life than the Hand Reset pages, with the same colours, fonts and button (Robbie, Oct 16-17).
Build guide (Oct 19, updated Oct 26)
The one current design guide for Robbie's pages.
Robbie BUILD GUIDE (the one canonical guide, rewritten 19 Oct 2026)
Every other design guide is archive (STYLE-GUIDE, DESIGN-GUIDE, DESIGN-MEMORY-GUIDE, RULEBOOK, STANDARDS, COMPONENTS, DECORATION-PLAYBOOK, PREFERENCES*). Copy wording rules: docs/WRITING-GUIDE.md. The evidence for every line here (each past instance of feedback, with date, who and quote) is deliverables/2026-10-19/FEEDBACK-LEDGER.md. Where sources disagreed, the newest instruction from Josh (or Robbie on his own product) is what is written here.
CHEAT SHEET (one page)
How to build any page: find the nearest reference in the library below, copy its file verbatim, change only the words (and swap any image the library marks as banned for a real photo). Never invent a layout, colour, font, size or button. If no reference fits, build 2-3 options from references and show Josh; do not ship a one-off.
The core (holds on every page):
1. Robbie is always real; no image Josh marked fake (Josh 20 Oct, replaces the 19 Oct "no AI images at all"). Any image of Robbie (face, body, headshot, demo still) is a real photo or a real video frame, never generated or AI-edited; no thumbs-up photo; no video still as a portrait. AI images of hands and objects are allowed unless they are on Josh's fake list, docs/FAKE-IMAGES.txt (sha256 + filename; lint checks it). "Suspect" in the photo library is an agent pre-flag, not Josh's verdict, so it is allowed. Pick photos from deliverables/2026-10-19/PHOTO-LIBRARY.html. No emojis, no drawn logos, no "image coming" placeholders.
2. Phone first, and images never near full screen on a phone. Build at 390, then 1280; check 320 and a tablet width too. No image taller than about 60% of the phone screen. Keep images on mobile (do not drop them), just smaller.
3. One button. The raised green button from the sales page: one medium size, label on one line at 320/390/1280, static arrow, sub-line outside the button. Nothing that is not a button looks like a button (no pill labels). Only exception: the Stripe "Complete Order" button on /order.
4. Copy an approved page, change only words. Same tokens everywhere: green #344C3D, sage #E8EFE6 / light #F6F9F5 bands alternating, Georgia headings, Open Sans body, body 20px phone / 22px laptop, nothing under 20px except the language pill and the footer.
5. The first screen does the job. Hero: headline, one line, the product visual, the button, the refund line, all on the first screen; on laptop the next section just peeks in (not forced to 100vh). On an opt-in the form (or its button) is visible on load without scrolling. Tablet widths (600-1100) collapse to one centred column, never break.
6. No clutter. No eyebrows or labels above headings, no intro paragraphs, no decorative dots, no card logos, nothing the visitor already knows at this step, no section that is half a page with a hole beside it.
7. Simple, plain, full sentences. Robbie speaks as "I" to "you"; benefits first; every line makes sense to a first-time reader; no clever compressed phrases; no em dashes and no " -- " in page copy; no "x is real"; no age claims (audience is 45-65 and men too).
8. Price and refund: every price says USD once ("$97 USD"), "One-time payment" under it; never a price in the button label and never "Start for $97". Price is $97 since Oct 20 (Josh, Oct 20: "someone arleady bought asl iI checked its 97"); SUPERSEDED Oct 20: the old "$157 USD", which must not appear anywhere. Refund line, identical under every sales button: "If your hands don't feel or function better in 21 days, you get a full refund."
9. Proof is real screenshots. Testimonials are real email-reply screenshots, untouched, cropped and fading with "Show me more"; never restyled quote cards, never star ratings.
10. Left-aligned text, aligned to one axis. Body text left; centre only hero/close headings, the price card, the refund line and buttons. Equal gutters in every section. Spacing like the reference: never cramped, never huge empty space.
11. Robbie's face stays clean. No text over his face, no awkward crop, never cut his forehead, circle photo on a background that differs from the page; one photo used once per page.
12. Show Josh real renders, phone beside laptop. Real screenshots of the actual page at 390 and 1280, side by side with the reference you copied; never mocks or text descriptions. Preview first, live only on Josh's go.
Run before showing anything: python3 scripts/lint-page.py <page.html|url> (checks image height on phone, sideways scroll, button wrap, AI Robbie and fake-list images incl. lazy ones below the fold, em dashes, form on load). Then the 7-line checklist at the end.
---
1. Reference library (the main body)
Rule: build a new page by copying the nearest reference and changing only the words. Screenshots are in design-memory/good/ (390 and 1280 unless noted). "Swap images" means the reference still carries a banned AI image: keep the layout, put a real photo in the slot.
Sales page (master reference for most components)
Live: physiorobbie.com/waitlist and /exclusive/hands-waitlist (split test arm B, set to 100% on 17 Oct). Source: build/2026-10-13-split/armB-el1-r35.html (one file: CSS + markup; images on sales-r34.robbie-list.pages.dev). Robbie (18 Oct): the product-focused page wins; keep the Day 1/2/3 card hero.
Other pages
Outside references (layout ideas only, when ours has no match): design-memory/good/ref-s1..s8-*.png and research-full-*.jpg (Josh's handpicked BEST OF THE BEST list, JOSH-PROMPTS-VERBATIM.md:17067). Weigh them by our segment: low ticket, closes on the page.
2. Tokens (only when the reference does not already show it)
Colours #344C3D accent, #26382C dark headings, #1f2f25 button shadow, #E8EFE6 sage, #F6F9F5 light, #fff card, #1A1A1A text, #3C4A41 muted. Headings Georgia,'Times New Roman',serif 700; body 'Open Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif. Sizes phone/laptop: H1 40/60, H2 30/42, body 20/22, button 22/28. Radius 20 photos and price card, 14 cards and buttons, 10 thumbnails. Card border 1px solid rgba(20,32,24,.10), shadow 0 4px 20px rgba(52,76,61,.08). Spacing scale 8/16/24/32/48/64; sections 64px top and bottom; gutters 24 phone, 48 tablet, 64 laptop; container 1120, text 960. Products other than the Hand Reset (e.g. 5-Day Thumb Revival) may add more structure and life (Robbie 16 Oct) but keep these tokens and THE button.
3. Things people asked for that no reference shows yet
- Approximate local price outside USD, rounded up ("about 230 CAD"): Josh asked 9-10 Oct, Ryan said USD only on the sales page 10 Oct, and the approved sales page shows USD only. Sales page stays USD only; a local estimate on checkout needs Josh's yes.
- Day-page CTA to the 21-day reset tied to Robbie's intro video (Josh 2 and 13 Oct).
- "Remind me later" page: one dial in hours, like the iPhone timer (Josh 15 and 19 Oct).
4. Before you show or publish (checklist)
1. python3 scripts/lint-page.py passes on the page (390 and 1280).
2. Your 390 and 1280 screenshots sit beside the reference screenshot you copied, and nothing differs except the words and real photos.
3. Every image is a real photo or screenshot from the photo library; none fills the phone screen; Robbie's face is clear of text and crops.
4. One button style, every label on one line, refund line identical under every sales button, every price "USD" once.
5. Read the copy as a first-time visitor: full sentences, nothing they already know, no eyebrows, no " -- ".
6. Check 320, a tablet width and a very wide window: no sideways scroll, no broken padding, no detached form.
7. Preview only; publish only on Josh's go, then verify the live page at 390 and 1280.
5. Approval page, every change
No page, email, price, copy, tracking or workflow change goes live without a review page of before/after screenshots (390 and 1280 side by side) plus plain words and a rollback line: python3 scripts/approval-page.py --title ... --before-dir ... --after-dir ... --words ... --rollback ... --out deliverables/<date>/NAME.html. It adds a PENDING row to APPROVALS.md; when Josh says yes, set the row to "approved by Josh" with his exact words. After publish, rebuild the page with live screenshots as the "before" side. Exception: what Josh said GO to in that same message still gets the after-publish page.
- QUESTIONS TO JOSH (21 Oct 2026, standing): every question to Josh is an HTML page: one screenshot per question with a red circle on exactly what it is about (circle from the element's getBoundingClientRect at capture time), a plain-word question, and A/B option labels (labels, not buttons); phone 390 and laptop 1280 (Josh, Oct 21).
Writing guide (copy rules, updated Oct 26)
Wording rules for every page.
Robbie WRITING GUIDE (single source, 3 Oct 2026)
Applies to every page. Format: rule -- Check: ... (source date). Pair with docs/STYLE-GUIDE.md.
Voice
1. Robbie speaks as "I" to "you". Never "we" for Robbie alone. US spelling. Numerals, not number words. -- Check: grep "we " in Robbie lines. (29 Aug)
2. Full plain sentences. No clever lines, no verbless fragments, no "spam periods", no vague "it". Fewer words, same idea; keep the verbs ("get looser, stronger hands"). -- Check: every line has a verb and reads aloud naturally. (1 Oct "for the last time", x6)
3. Show, don't tell. Never announce what a section does ("Here's what we'll do together", "This is the benefit"). -- Check: no sentence describes the page itself. (13-15 Sep)
4. Benefits before features. Lead with the felt change; "about 7 minutes a day, no equipment" stays quiet. -- Check: first line of each section is an outcome, not a spec. (27 Sep, x6)
5. Josh's and Robbie's dictated wording ships unsmoothed; the later line in a dictation wins. Testimonials are never edited. -- Check: diff against the source text. (Aug-Sep)
Banned
6. No em dashes in client copy (and no " -- " either; use a full stop or comma). -- Check: grep for the em dash and " -- " in page HTML = 0. (11 Sep)
7. Never "x is real", "a real X" for emphasis (exception: Josh's heading "what real people said"). -- Check: grep "is real". (15 Sep)
8. Never "90% over 65", "am I too old", age stamps. Audience is 45-65; use concrete moments (opening a jar, buttoning a shirt). -- Check: grep "65", "old". (17 Aug)
9. No eyebrows, no generic labels ("From the 3-day challenge"). -- Check: no label line above headings. (28 Sep)
10. No urgency, countdowns, fake scarcity, star ratings, value stacks, invented stats, tenure claims or physiology. -- Check: every number traces to a source. (29 Aug)
11. Never co-pitch phase two (community/offer two): one reassurance sentence at most. -- Check: offer two named once or less. (18 Aug)
12. No "reply to this email" lines; no "here's a free tracker by the way" asides. -- Check: grep "reply". (28 Sep, 3 Oct)
CTA, price, refund
13. Never "Start for $97" (price $97 since Oct 20; was $157). Sales CTA leads with the 21 days (e.g. the program), price stays visible on the page but is not forced into the first button. -- Check: grep "Start for". (3 Oct)
14. Every price carries USD, once ("$97 USD", never "USD USD"; $97 since Oct 20, Josh, Oct 20: "someone arleady bought asl iI checked its 97"; $157 is the old price). -- Check: regex \$\d+(?! USD) = 0. (Aug, open bug /21-day-hand-reset)
15. Refund in a full sentence: "If your hands don't feel looser and stronger by day 21, you get a full refund." Say "full refund". -- Check: refund line is one complete sentence. (1-3 Oct)
16. Opt-in promise exactly: "Your hands will feel different before the first video is over." Not "can". -- Check: exact string match. (27 Sep)
17. Opt-in CTA "Send me day one now for free"; no subtext under it. -- Check: no line under the button. (27 Sep)
Framing
18. Make people care, don't instruct mechanically: "Don't miss a day because it ended up in junk", not "Check your spam folder". -- Check: each instruction carries its reason for the reader. (3 Oct)
19. Preframe an extra rather than tack it on: introduce the tracker as part of the plan, not "by the way, here's a free tracker". -- Check: no "by the way"/"also" add-ons. (3 Oct)
20. Day pages: under the title ONE short comforting full sentence (e.g. "We'll start gently."), taken from that day's intro. No intro paragraph. -- Check: one line between title and video. (3 Oct)
21. Disclaimers that matter (junk folder, medical) go in the boxed callout from STYLE rule 10, short and in full sentences. -- Check: callout text <= 2 sentences. (3 Oct)
22. Pages state the bucket, not a thesis; no invented angles Ryan never says. -- Check: angle traceable to Ryan/Robbie notes. (Sep)
Do NOT say what the visitor already knows
23. Cut repeats of known info at that step. -- Check: read the previous step's page; delete anything repeated. (27 Sep, x5)
- Checkout: no product name repeat, no "one payment of", no "Day 1 arrives the moment you pay", no card logos.
- Day pages: no "Robbie speaks English / translated subtitles" (pre-purchase pages only), no "Free challenge, day 1 of 3".
- Welcome: no restating what they just bought; say what to do next and why it matters.
- Sales: don't assume they finished Day 3; don't knock the free content.
24. No about page; no video library page. -- Check: no new route of either kind. (Aug)
Conflicts (newest wins)
- Never advertise refunds (old) vs refund line on checkout/FAQ (1 Oct): refund line stays.
- "From the 3-day challenge" heading (27 Sep) vs banned generic label (28 Sep): banned.
- Tenure "11 years" (17 Aug) vs no tenure (29 Aug): none.
- Airplane metaphor light (Aug) vs remove (Ryan 29 Aug): removed.
- Older "never write verbatim messages" vs OPERATING-RULES rule 7 (1 Oct): give Josh a sendable message when asked.
Currently testing (not permanent)
Sales CTA wording focused on "21 days" (A/B, Josh to pick); price on top sales button; repeating content across sections ("testing, not a permanent rule"); local-currency line near buy button; new sales page 80% product / 20% journey, "Is this program right for me?" near top (outline only).
Brand sheet (Oct 21, not reviewed by Josh)
The one-page summary.
> Status: UNREVIEWED by Josh (built Oct 21, 2026 from his past feedback). Follow it, but flag anything that looks wrong.
Brand sheet: Robbie Peck (@physiorobbie)
Live guide on the Pro: ~/Work/robbie-site/docs/BUILD-GUIDE.md + WRITING-GUIDE.md (copies in
~/client-systems/reference/robbie-site/). Those win over this sheet for page detail; this sheet is the summary.
Identity
- Business / brand name: Physio Robbie (physiorobbie.com)
- The person: Robbie Peck. Credential wording: "Made by a doctor of physical therapy" (not "physical therapist") (Oct 12). Hero line approved: "Follow a physical-therapist-guided routine every morning" (Oct 11).
- Sites: physiorobbie.com on GoHighLevel. Bare root redirects to the 3-day challenge (Sep 19). Never put WIP on the root.
- Disclaimer: "This page and the 21 day hand reset is not medical advice." (client, Oct 12), in the footer health note.
Look (BUILD-GUIDE tokens, Oct 19)
{brand.accent}: #344C3D (green).{brand.accent_dark}: #26382C headings, #1f2f25 button shadow.{brand.tint}: #E8EFE6 sage.{brand.light}: #F6F9F5. Cards #fff.{brand.text}: #1A1A1A, muted #3C4A41.{brand.font_heading}: Georgia 700.{brand.font_body}: Open Sans.{brand.radius}: 20 photos and price card, 14 cards and buttons, 10 thumbnails.- Sizes phone/laptop: H1 40/60, H2 30/42, body 20/22, button 22/28. Nothing under 20px except the language pill and footer.
- Spacing 8/16/24/32/48/64; sections 64px; gutters 24 phone / 48 tablet / 64 laptop; container 1120, text 960.
- Button: raised green, one medium size, label one line, static arrow, sub-line outside (Oct 13). Moving arrow: OPEN-QUESTIONS.
- Reference to copy: sales page r35 (
build/2026-10-13-split/armB-el1-r35.htmlon the Pro); live /waitlist. - Thumb product (5-Day Thumb Revival) may add more structure and life, same tokens and button (Robbie Oct 16-17).
Photos and video
- Robbie is always real: never AI images of him, no thumbs-up photo, no straight-to-camera profile photo used large,
no video still as a portrait. AI hands/objects OK unless on docs/FAKE-IMAGES.txt (Oct 20-21; Josh, Oct 10: "Have ChatGPT and you generate the concept of the image."). Hand images look 55-65, matching the buttons, jar, writing, key and pot images: never young, never very old (Josh, Oct 11-12: "not that old goddamn", "imge sto young").
- Headshot: true circle, whole smiling head, background different from the page.
- Day pages are all video pages except check-your-email (Aug 8). CC + translation as one button on the player.
- Test running: salmon box and animated GIF thumbnail on 3-day challenge pages (Oct 15-19).
Voice
- Robbie speaks as "I" to "you", never "we" (Aug 14). US spelling. Numerals.
- Talk about the hand/thumb and everyday tasks (jars, buttons, phone, pen), never age: no "seniors", "as we age",
"over 65"; say "older people" if needed (Aug 17, Oct 17).
- Don't overhype "challenge"; stress the right amount to do each day (Aug 16).
- No equipment beyond a towel or a t-shirt; never mention table or chair (Aug 28).
- "Patient" not "client" in his clinician voice (via Ryan, Sep 17). Personal headers ("My 21-Day Hand Reset").
{brand.avoid_words}: seniors; as we age; over 65; is real; Start for $; nothing to set up; interest-free.- Exclamation: OK in short welcome lines ("You're in!", "See you on Day 1!").
How they like messages
How they want US to message them (applied silently to every draft; see templates/BRAND-SHEET.md).
- CAPS means "please see this" in his world (home health), not yelling. Anything he must see or do: start with a short caps flag (ACTION: or READ THIS:), then the ask. (Robbie, Call 15 Oct 17: 'in home health, we're all super busy... anytime we repeat and put caps and exclamation points, like just want you to see it. I'm not yelling. I just want you to see it.')
- Chase him on anything still open; he wants the nudge. (Robbie, Call 15 Oct 17: 'feel free to bother me more on anything that I haven't done yet for y'all. Seriously.')
- Skims updates by day, reads properly at night: the ask first, short. (Robbie, WhatsApp Sep 17: 'Just skimming through it but definitely great updates I'll look closer tonight.')
- After a call: one quick message listing the exact asks. (Robbie, Call 12 Oct 13: 'Send your message with the specific things super quickly.' Transcript garbled here.)
- Voice notes both ways; ideas and questions go in the WhatsApp group. (Robbie, Call 6 Oct 10: 'I'll review it again and voice note you guys anything.'; Call 1 Sep 8: 'just share it in the WhatsApp.')
- Sees patients by day, does our asks at night; calls in the evening once the kids are down. (Robbie, WhatsApp Aug 19: 'I'm headed out to see patients so it won't be til this afternoon'; Call 6 Oct 10: 'could you guys do a Tuesday evening one?... then I could have the girls down')
- Exact instructions, as little work for him as possible, never a guessed link. (Josh, Sep 17: 'minimize his work', 'give him exact instructions')
- Invoices: a Stripe screenshot at the start of the month. (Robbie, Call 5 Sep 29: 'you can just send me a screenshot of your Stripe.')
Audience
- 86% women, 80% 45+, 62% 55+, 59% US (IG data, Aug 3); men too; treat as 45-65. Problem-aware, not solution-aware.
Subconscious hesitation before hand tasks (opening a jar).
Offer
- 3-Day Hand Challenge (free, exactly 3 days, no extra intro day) -> 21-Day Hand Reset, $97 USD one-time since Oct 20 (9:06am CDT). SUPERSEDED: $157 was the old price and must not appear on any new page (Josh, Oct 20: "someone arleady bought asl iI checked its 97").
{brand.currency}: USD, "$97 USD" once, "One-time payment" under it. Price not in the button label (WRITING-GUIDE Oct 3; see OPEN-QUESTIONS).{brand.refund_line}: "If your hands don't feel or function better in 21 days, you get a full refund." Identical under every sales button. The 21-day keeps its guarantee after the $97 flip (Josh, Oct 20: "no the 21 day . we are keepign it rihgt"); the 5-Day Thumb product has no guarantee for now (Robbie, Oct 19 call: "leave it off for now").- Refunds keep the program; never say so on the page (Sep 16, Aug 29).
- Opt-in promise: "Your hands will feel different before the first video is over." CTA "Send me day one now for free", one line.
- Community: gated behind the Reset purchase; no longer "join for free" (Oct 20); buyers get a custom free Skool link (Oct 21). Only the old buyers who paid $157 (before Oct 20 9:06am CDT) keep free Skool access, by a custom invite emailed to them; new $97 buyers get "Option to join" (Josh, Oct 21: "custom link for poel who pay 157", "email univite is safest best").
Timeline wording: "Option to join", not "Invitation to the community" (Oct 21).
- Positioning: buyers are not buying routines, they buy Robbie's reliable, safe solution to their hand problem; frame every product (21-day, thumb) that way (Josh, Oct 15: "They're not buying routines. They're buying the solution to their problems reliably"). Visuals of the Reset show everything you need to get everyday tasks back (before vs after), never just a pile of short videos (Ryan via Josh, Oct 10: "We do not want to portray it as simply 7— 21 days of 7-minute videos.").
- Positioning: "skilled progression" (Robbie Oct 18). Plane-taking-off metaphor: removed (Ryan Aug 29).
- "Just 7 minutes a day" under the video, before the start button (Robbie VM Oct 18).
Client-only rules
- Day 1 and 2: no sales CTA, keep the reply-to-email feedback line, testimonials under the video; Day 3: one CTA under
the video to the Reset, no "Did this help", no testimonials (Sep 20 - Oct 6). Reply line conflict: OPEN-QUESTIONS.
- Free challenge pages may get an intro video saying they can go straight to the Reset (Oct 2, Oct 13).
- ManyChat button goes to the email, not the Day 1 page (Sep 29-30). Sell the dream more in the DMs before signup (Oct 15).
- Laptop: timeline top-to-bottom on the right of the checklist (Oct 11).
- Testimonial images sized width 70% (Aug 16, unsure if still current).
Review and tools
- Review:
https://robbie.pages-preview.pages.dev+ Robbie'sscripts/approval-page.py(Pro). - Robbie approves voice and records videos; he is the source of truth on facts about his own product.
- Platform: GoHighLevel pages (custom code pasted in), Flodesk (emails, Ryan), ManyChat (Ryan), Stripe, PostHog.
- Split: Josh pages, Ryan emails + ManyChat.
Checker settings
- min_font_px: 20
- fonts: Georgia; Open Sans
- avoid_words: seniors; as we age; over 65; Start for $; nothing to set up; interest-free
- banned_images: thumbs-up; thumbsup; IMG_3324; robbie-seated; robbie-waitlist-hero; robbie-hero-cutout; robbie-looking-right; robbie-demo.; robbie-hands.
- allow_exclamation: yes