---
name: pitch-page
description: Build a personalized CE pitch landing page for any brand. Input is a brand name + target contact. Output is a live URL at curiousendeavor.com/[brand]-pitch/. The page is a custom fork of the CE deck format — crossfading hero, horizontal deliverables scroll, competitive analysis, brand DNA, audience targeting — all customized for the specific brand and contact. Use when Lukas asks to "build a pitch page for [brand]", "create a pitch for [company]", "set up a pitch for [person]", or any variant of creating a new CE sales pitch. NOT for updating existing pitch pages (just edit the HTML directly) or for the CE main deck.
---

# CE Pitch Page Skill

Builds a complete, deployed pitch landing page for any brand in three phases: research → strategy → build + deploy.

## Inputs

Collect before starting:
- `BRAND_NAME` — company name (e.g. "Cropster")
- `BRAND_SLUG` — URL-safe slug (e.g. "cropster") — folder becomes `[brand-slug]-pitch/`
- `BRAND_URL` — their homepage
- `TARGET_NAME` — contact's first name
- `TARGET_ROLE` — job title
- `INTRO_CONTEXT` — how Lukas knows them, any warm intro notes
- `CONTACT_EMAIL` — Lukas's email for the page CTA (default: `lukas@curiousendeavor.com`)

---

## Phase 1: Research (15–30 min)

**Read `references/research-guide.md` and run the full protocol.**

Use `web_search` and `web_fetch` to gather:
- Brand positioning, tagline, product suite
- Visual identity (colors, typography, imagery style)
- Recent news (funding, rebrands, acquisitions, product launches)
- 3 direct competitors + 3 aspirational marketing benchmarks
- Target contact's priorities and context

Save output to: `work/pitches/[brand-slug]/brand-brief/phase1-research.md`

---

## Phase 2: Strategy (10 min)

**Read `references/pitch-strategy.md` and select the pitch angle.**

1. Choose one of the four pitch angles (Activate the Brand / Build for Growth / Fix the Funnel / Own the Category)
2. Draft 5 hero headline options
3. Present to Lukas → he picks one
4. Populate the content plan: problem cards (6), deliverable cards (5), audience segments (4), competitor selection (6)

---

## Phase 3: Build (30–45 min)

### 3a. Setup

```bash
cd /root/.openclaw/workspace/public
mkdir -p [brand-slug]-pitch
cp skills/pitch-page/assets/template/index.html [brand-slug]-pitch/index.html
```

### 3b. Fill placeholders

Replace all `{{PLACEHOLDER}}` tokens in the HTML. Read `references/sections-guide.md` for section-specific guidance.

Key rules:
- Card body copy: **max 1 sentence**. No exceptions.
- CE Model prose block: **use the fixed approved paragraphs** from `pitch-strategy.md` verbatim
- Only customize: domain-native card (card 2), audiences card (card 4), and all brand-specific sections
- No broken image references — verify all files exist before committing

### 3c. Generate deliverable images (5 images)

Use Nano Banana Pro. Script: `/usr/lib/node_modules/openclaw/skills/nano-banana-pro/scripts/generate_image.py`

```bash
GEMINI_API_KEY=AIzaSyDXqYZInk83iVV4mD29pSuHQKbgkiI1x9Q python3 \
  /usr/lib/node_modules/openclaw/skills/nano-banana-pro/scripts/generate_image.py \
  --prompt "[scene description]" \
  --output "public/[brand-slug]-pitch/YYYY-MM-DD-deliverable-[slug].png"
```

See `references/sections-guide.md` for scene prompts per deliverable type.

### 3d. Generate audience images (4 images)

Same script. See `references/sections-guide.md` for audience-specific scene prompts.

### 3e. Capture competitor screenshots (6 screenshots)

```bash
node -e "
const { chromium } = require('playwright');
(async () => {
  const b = await chromium.launch();
  const p = await b.newPage();
  await p.setViewportSize({width:1440, height:900});
  await p.goto('URL', {waitUntil:'networkidle', timeout:30000});
  await p.screenshot({path:'public/[brand-slug]-pitch/comp-[slug].jpg', type:'jpeg', quality:85});
  await b.close();
})();
"
```

Run once per competitor. Files: `comp-[slug].jpg` in the pitch folder.

### 3f. Verify images

```bash
grep -oP 'src="\K[^"]+' public/[brand-slug]-pitch/index.html | grep -v '^http' | while read f; do
  path="public/[brand-slug]-pitch/$f"
  [[ -f "$path" ]] && echo "✓ $f" || echo "✗ MISSING: $f"
done
```

Fix any missing files before proceeding.

### 3g. Deploy

```bash
cd /root/.openclaw/workspace/public
git add [brand-slug]-pitch
git commit -m "CE pitch: [Brand] — [target name] at [title]"
git push
```

Wait 60–90 seconds for Vercel CDN. Verify live at:
`https://www.curiousendeavor.com/[brand-slug]-pitch/`

```bash
curl -s https://www.curiousendeavor.com/[brand-slug]-pitch/ | grep -c "[BRAND_NAME]"
```

---

## Output

Reply to Lukas with:
- The live URL
- The hero headline chosen
- Any notes on next steps (copy refinements, Vercel deploy issues)

Do NOT post screenshots in Discord. URL only.

---

## Reference Files

- `references/research-guide.md` — brand research protocol (read in Phase 1)
- `references/pitch-strategy.md` — pitch angle framework + headline formulas + fixed copy (read in Phase 2)
- `references/sections-guide.md` — section-by-section placeholder guide + image generation instructions (read in Phase 3)
- `assets/template/index.html` — the pitch page template with `{{PLACEHOLDER}}` tokens
