Ship log · iter #2
Iteration 2 ship log
2026-05-09 · continued autonomous /loop
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
- 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.
- Shortlisting + compare lets a buyer narrow 170 ideas to 3-5 and see them on one screen. Reduces "too much catalog" paralysis.
- 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.
- 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.
- 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
- FAQ template generator. Pull skeptic memo + brand brief + financials.key_risks; emit
<details>-based FAQ with 7 to 10 questions per product. - 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. - 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.
- 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.
- 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)