# Wishdeal Factory buyer-path - iteration 2 ship log

**Date:** 2026-05-09 (continued autonomous /loop)

## What shipped

### New scripts on `ubuntu@40.160.2.121`

| File | Purpose | Cron |
|---|---|---|
| `outreach-pack-template-gen.py` | Generates template-quality outreach-ready.md for any product lacking a hand-personalized one. Marker: `WD_OUTREACH_TEMPLATE_v1`. Won't overwrite hand-written packs. | 22,52 |
| `email-drip-template-gen.py` | 5-email template drip (day 1/3/5/9/14). Marker: `WD_DRIP_TEMPLATE_v1`. Won't overwrite hand-written drips. | 24,54 |
| `regen-outreach-launcher.py` | Single-page launcher at `/factory/outreach-launcher/` with copy buttons, Gmail draft URLs, status tracking via localStorage. | `*/15` |
| `regen-compare-page.py` | `/factory/compare/` side-by-side comparison of shortlisted ideas. localStorage shortlist. | `*/15` |
| `hero-insight-injector.py` | Adds "Who this is for / Who it isn't / What you'd actually adopt" block above pricing on every product page. Marker: `WD_HERO_INSIGHT_v1`. | 27,57 |
| `repair-pass.sh` | Director-callable helper that picks lowest-completeness products and runs template fillers. Logs to `/home/ubuntu/factory/logs/repair-pass.log`. | `30` (hourly) |

### Live URLs

- https://wishdeal.com/factory/outreach-launcher/ - 170 packs (2 hand-personalized + 168 template). LinkedIn / email / Gmail-draft buttons. Per-prospect status tracking in localStorage.
- https://wishdeal.com/factory/compare/ - shortlist + side-by-side comparison of any subset.
- https://wishdeal.com/factory/catalog/ - now has shortlist toggle (`+`) on every card; nav shows "Compare (N)" counter when shortlisted.
- Every product page now has the "Who this is for / Who it isn't / What you'd actually adopt" block above the pricing band.

## Repair queue improvement

| Metric | Iter 1 end | Iter 2 end |
|---|---|---|
| Avg completeness | 78% | **91%** |
| Fully complete (13/13) | 1 | **26** |
| Outreach packs missing | 168 | **0** (all have at least template) |
| Email drips missing | 128 | **0** (all have at least template) |
| FAQ missing | 106 | 106 (next iteration) |
| Skeptic memo missing | 80 | 80 (Director adds these) |

## Catalog UX additions

- `+` shortlist button on every catalog card (top-right, next to Adoptability ring)
- Click to toggle add/remove. State persists in `localStorage.wd_factory_shortlist_v1`.
- Nav link now shows "Compare (3)" with live count when items are shortlisted.
- Compare page renders side-by-side rows for: Adoptability, tagline, category, build type, Yr1 take-home (Fermi-labeled), Yr1 ARR mid+high, probability of success, all 10 Adoptability axes with horizontal bars, badges, action buttons (Unlock $5 / Visit).
- Search-to-add directly from compare page; no need to bounce back to catalog.

## Outreach launcher capabilities

- Sidebar lists all products with packs, sortable by Adoptability, filterable hand vs template.
- Three tabs per product: Prospects (parsed from `## Prospect N:` markdown), Message templates (parsed from named sections), Raw pack.
- Buttons:
  - Copy LinkedIn message (clipboard)
  - Copy email body (clipboard)
  - Open Gmail draft (`mail.google.com/mail/?view=cm&su=...&body=...`)
  - Open LinkedIn messaging
- Per-prospect status pills: contacted / interested / not-fit / followup. Click to toggle. Saves to `localStorage.wd_outreach_state_v1`.
- No auto-send anywhere. No tracking pixels. No CRM lock-in.

## Hero Insight block (every product page)

Two-column block above pricing:
- Left column (green): "Who this is for" - 2 to 4 specific buyer descriptions derived from category + Adoptability axes
- Right column (orange): "Who this is NOT for" - 2 to 4 anti-fits derived from category + saturation/speed signals
- Footer row: "What you'd actually adopt" - shippable timeline, Yr1 ARR mid (Fermi), investment to production, probability of success
- Footer chips: Adoptability score, "Estimates only" reminder, link to /factory/honest/

Text composed heuristically from a 17-category fit map + Adoptability axes. No Claude calls. No fake testimonials. Every estimate clearly labeled.

## What's now better for buyers

1. **Buyer-path completeness jumped from 78% to 91%.** Every product has at least a template-quality outreach pack and email drip. Wes can demo the launcher today.
2. **Shortlisting + compare** lets a buyer narrow 170 ideas to 3-5 and see them on one screen. Reduces "too much catalog" paralysis.
3. **Hero insight block** answers the buyer's first question ("is this for me?") at the top of every page, before they read 1500 words of pitch copy.
4. **Outreach launcher** is the Wes-side artifact. He can pick a product, click Copy LinkedIn, paste into his real LinkedIn, and his progress saves automatically. No CRM, no auto-send.
5. **Honest labeling preserved.** Every estimate says "(estimate)". Templates explicitly note they're template-quality and point to operator-partnership for hand-personalization.

## What still needs work

- **FAQ generator.** 106 products lack FAQ pages. Same template-from-skeptic-memo approach should work.
- **Stripe wiring.** Two checkout URLs needed; `FACTORY_STRIPE_UNLOCK_URL` env var still unset.
- **Dossier gating.** Right now `full.md` is publicly readable. Before charging, needs signed-token or post-payment email delivery.
- **Top-product hero polish via Claude CLI.** Heuristic hero-insight covers the basics; Claude-CLI sharpening of hero copy on top 10 would push score 70 → 80.
- **Director loop hook.** `repair-pass.sh` exists; `loop-v2.sh` doesn't yet call it. Next session can add action P (run_repair_pass).
- **Linkedin URL automation.** Outreach launcher opens LinkedIn messaging at the top level; auto-routing to a specific profile URL would save clicks.

## Next 5 recommended autonomous tasks

1. **FAQ template generator.** Pull skeptic memo + brand brief + financials.key_risks; emit `<details>`-based FAQ with 7 to 10 questions per product.
2. **Stripe checkout placeholders -> live.** Create `$5 Dossier Unlock` and `$99 Adopt the Build` products in Stripe. Set env vars. Add a tiny webhook receiver to email the dossier post-payment.
3. **Claude-CLI hero-copy sharpen pass on top 20.** For each, generate a sharpened hero h1 + lede that names the buyer in the first 8 words.
4. **Auto-Wes-Picks.** wes-picks.json could auto-update from a Wes-flagged subset; for now it accepts manual edits. Add a /factory/calibrate/-style "feature this" toggle.
5. **Director action P.** Patch loop-v2.sh to add an action that runs `repair-pass.sh 5` and logs the result. Highest-leverage way to keep completeness >= 95%.

## Files changed inventory

- New: 5 Python generators + 1 shell helper
- New: `/srv/sites/factory/outreach-launcher/index.html` (45KB)
- New: `/srv/sites/factory/compare/index.html` (109KB, embeds 170 product summaries)
- Modified: `/srv/sites/factory/catalog/index.html` (shortlist toggle + nav counter)
- Modified: 169 product `index.html` files (Hero Insight block injected)
- New: 168 `outreach-ready.md` template files
- New: 126 `email-drip.md` template files
- Modified: crontab (6 new entries)
