---
name: ghl-landing-page-via-cowork
description: Build a GHL funnel landing page from a Claude design spec, using the Cowork-project→Obsidian-vault bridge so Hermes can review the blueprint before Rob builds it in GHL. Covers the prompt structure, the save-to-folder bridge step, the GHL-native constraints (Countdown element, Order Form checkout, CLAIMED page swap), and the copy/style rule sets for RRR pages. Trigger when Rob asks to build/rewrite a GHL landing page or funnel page with Claude.
---

# GHL Landing Page via Claude Cowork → Vault → Review → Build

The proven workflow (used for "Missed Call Diagnostic" and the "One Town. One Agency." Premium Line pages). Claude designs, Hermes reviews from the vault, Rob builds in GHL's native page builder.

## When to load
- Rob wants a new GHL funnel/landing page designed or rewritten
- Adapting an existing LP to a new vertical/town (the generic→bail variant pattern)

## The 4-step workflow
1. **Write the design-spec prompt** (see structure below) and save to `/root/.hermes/work/ghl/PROMPT-claude-<page>.md`.
2. **Cowork bridge setup** (Rob does, on Connie): create vault subfolder `C:\Users\Rob\Documents\Obsidian Vault\<Project>\` → new Cowork Project (Visibility: Local is correct — refers to project metadata, not the folder) → Settings → "Use an existing folder" → attach that vault path → **close + reopen the project to confirm the attachment stuck** (attachments wipe on full quit — claude-cowork-vault-bridge pitfall #1).
3. **Paste prompt into project chat.** The prompt MUST end with a SAVE-YOUR-WORK instruction: "write the complete blueprint to `<name>.md` in this project's attached folder and confirm the filename." Attached folders only surface files Claude is TOLD to write — it does not auto-save.
4. **Review from the VPS:** Syncthing mirrors the folder to `/root/.hermes/vault/<Project>/` in ~1 min. `ls` to confirm the file landed, read it, run the review pass (below) BEFORE Rob builds in GHL.

## Design-spec prompt structure (what the prompt must contain)
- **Task framing:** "build-ready design spec, section-by-section blueprint + exact copy per element" — NOT a standalone HTML app (GHL native builder can't import arbitrary HTML into editable sections; the Claude→GHL-funnel-step path is the proven one).
- **The offer + price + billing**, verbatim.
- **GHL-native constraints (hard):** (a) Countdown = native GHL Countdown element, FIXED date — GHL can't run custom self-ticking JS clocks from a text prompt; (b) purchase-triggered "clock shutoff" is a PAGE SWAP/redirect to a CLAIMED page (no countdown), not a mid-page halt; (c) specify GHL-native elements only (Section/Row/Column, Headline, Paragraph, Button, Countdown, Form/Order Form, Image, Divider, Spacer).
- **Section list, in order**, with the exact copy direction for each.
- **COPY RULES block** (banned jargon, no invented stats, vocabulary).
- **NAMING rule** if the offer/product has a locked name (e.g. "One Town. One Agency." — Charter only as rate descriptor).
- **STYLE block** matching the live site (see below).
- **DELIVERABLE:** ordered blueprint + CLAIMED-page note + operator checklist + the save-to-folder instruction.

## GHL product/checkout constraints (the tonight-blockers)
- **Subscription product must exist first.** Payments → Products → Create: Recurring/Subscription, correct price, trial period set as day-count to the 1st of next month. Do NOT clone an existing Physical/wrong-price product. No coupon code — the trial lives on the product price.
- **Stripe must be connected** (test mode is fine to build+test-card, flip to live later).
- Order Form element points at the subscription; extra fields (Industry/Town dropdowns) added on the form.
- **API can't verify Products** — the V3 agency token 401s "not authorized for this scope" on /products; the RRR location token lacks payments scope. Confirm product creation with Rob, not the API.

## STYLE — match realresultsready.com (extracted from production CSS 2026-08-09)
- Font **Inter** (Google Fonts 400–800), headings AND body. NOT system serif.
- Primary action **royal blue #2563EB** (hsl 221 83% 53%); CTA gradient #2563EB→#1D4ED8.
- Hero/sections light: white→#EFF6FB (hsl 210 40% 96%) soft vertical gradient.
- Accent **site-gold #FACC15** (hsl 43 96% 56%), sparing — payoff band, UNCLAIMED/CLAIMED status, emphasis. NOT the print-flyer amber #E8893A.
- Surfaces white/light, radius ~0.75rem, subtle shadow. Mobile-first single column.
- The "bail office at night" navy/amber palette is PRINT-FLYER ONLY — never the web page.

## RRR copy rules (hard — violations fail the build)
- Peer-to-peer, blunt, zero marketing polish.
- BANNED: CRM, platform, dashboard, AI-powered solution, cutting-edge, leverage, synergy, funnel, speed to lead, capture more leads, conversion rate.
- NO invented statistics, testimonials, or client names. Only real, witnessed, or verifiable numbers.
- NEVER claim a missed call "goes to voicemail" — callers hang up and dial the next listing; the loss is invisible.
- Framing: "we catch the calls you're already paying for," never "we get you more leads."
- Bail vocabulary: "agency"/"office" never "shop"; "the premium" never "the fee"; "writes the bond"; "Brightonians"; "the next listing in Google."

## Variant pattern (generic → vertical)
Keep the generic blueprint unchanged; produce a vertical variant as a SEPARATE file (`<name>-BAIL.md`) via a revision prompt that says "same structure/style/countdown/checkout, change ONLY the copy." Swap in vertical-native hook (witnessed intel), vocabulary, the hard "never do" rules, and pre-lock the Industry dropdown to the vertical. Remind: the printed-flyer QR must point at the vertical page URL, not the generic page.

## Related
- `claude-cowork-vault-bridge` — folder-attach pitfalls (wipe-on-quit, stale paths, parent-mount block)
- `gohighlevel-ops` — GHL API/token limits, the "Missed Call Diagnostic" precedent
- `bail-bonds-vertical-playbook` — bail vocabulary, the math close, walk-in beats
