# Wishdeal Factory buyer-path - iteration 30 ship log

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

## What shipped

8 substantial items. Mix of orientation update + 4 new audience pages + 1 caught regression.

### Audit: injection markers intact

Iter 29 found one regen-wipes-injection bug. Iter 30 audited all other generator-injector pairs and confirmed:
- All 12 injection markers (`WD_FACTORY_PRICING_BLOCK_v1`, `WD_HERO_INSIGHT_v1`, `WD_OG_META_v1`, `WD_JSONLD_PRODUCT_v1`, `WD_SHARE_BUTTONS_v1`, `WD_MORE_LIKE_THIS_v1`, `WD_RECENT_TRACKER_v1`, `WD_EVENT_TRACKER_v1`, `WD_TOP_UTIL_BAR_v1`, `WD_TRUST_SIGNAL_v1`, `WD_BRAND_OVERRIDE_v1`, `WD_HERO_POLISH_v1`) present on 191 of 192 builds pages (1 = AUTO placeholder).
- `WD_OBJECTIONS_v1` present on 191 of 192 unlock pages.

System is healthy at the marker level. No additional regen-wipe risks discovered on per-product pages.

### Caught: another regen-wipes-injection bug on /factory/start-here/

While adding new audience links, discovered iter 24's "Are you a specific kind of buyer?" section had been **silently wiped** by `regen-start-here.py` (a full regenerator). The fix from iter 24 hadn't been durable.

**Fixed**: Patched `regen-start-here.py` at source to include the audience section as part of the page template. Re-generated. Verified 11 references to "/factory/for/" now appear on the page.

This is the second instance of the regen-wipes-injection class of bug after iter 29. Lesson: any in-place patch on a page that has its own generator will be wiped on the next cron tick. The durable fix is always to patch the generator source.

### 4 new audience landing pages

Extended `regen-audience-pages.py` with 4 new audiences:
- `/factory/for/fast-launch/`  -  12 picks filtered for highest speed-to-mvp + easy distribution
- `/factory/for/low-capital/`  -  12 picks for ideas launchable under $5k
- `/factory/for/ecommerce-operators/`  -  5 picks for Shopify/Amazon/DTC store operators
- `/factory/for/service-businesses/`  -  10 picks for trades, field service, hospitality, agencies

Each page includes:
- Unique 3-paragraph intro framed for that audience
- Adoptability-sorted top picks
- LinkedIn post template + email template with copy-to-clipboard buttons
- Footer with cross-links

Total audience pages now: **10**.

### Updated SESSION-MASTER.md to v3

Replaced the iter-20 v2 with a v3 that covers iterations 1-29. Stripped 7 em-dashes during the upload. Now Wes opens one doc and sees the full session arc, not just iters 1-20.

### Sitemap updated

`+4 URLs` for the new audience pages. Total: 1321 URLs (up from 1259).

### Cron + start-here generator hardened

`regen-start-here.py` now includes the audience section permanently. Verified the page survives a forced re-generation.

## Files changed inventory

### Modified (durable, source-level)
- `/home/ubuntu/factory/director/regen-audience-pages.py` (+4 audiences)
- `/home/ubuntu/factory/director/regen-sitemap-v2.py` (+4 url_entries)
- `/home/ubuntu/factory/director/regen-start-here.py` (audience section embedded)

### Re-rendered
- 10 `/srv/sites/factory/for/<audience>/index.html`
- `/srv/sites/factory/for/index.html`
- `/srv/sites/factory/start-here/index.html` (regenerated with audience section)
- `/srv/sites/factory/sitemap.xml` (1321 URLs)
- `/srv/sites/factory/log/SESSION-MASTER.md` (v3)

All `.bak` backups preserved.

## Why this matters

Two compounding effects:

1. **More audience pages = more long-tail SEO entry points.** The 4 new audiences cover real searches: "AI ideas to launch in 30 days", "AI ideas under $5k", "AI for ecommerce", "AI for service businesses". Each is a curated list that builds buyer trust before they pay.

2. **Catching the start-here regen-wipe is preventive maintenance.** It's the same class of bug as iter 29. The lesson now embedded in 4 generators (unlock, agents, audience, start-here): patches that affect generated pages must be applied at the generator source, not in-place. Future iterations should remember this.

## Status snapshot

- 192 products in catalog
- 60+ buyer-facing pages (now with 10 audience pages)
- Sitemap: 1321 URLs
- 0 em-dashes shipped this session
- 53/53 health endpoints passing
- Director watchdog alive, ~104 cron entries

## What still needs work

Same Wes-side as before:
1. Stripe wiring (30 min)
2. Email-send for auto-fulfill
3. First real traffic push

## Next 5 recommended autonomous tasks

1. **Add 4 new audience pages to health-check.py**  -  same regression-detection pattern as iter 27.
2. **Hero-polish second pass**  -  Claude CLI on bottom-50 Adoptability landing pages.
3. **Per-product /how-it-works/ sub-page**  -  surface implementation_plan + tech_stack content.
4. **Add WD_TOP_UTIL_BAR_v1 to brand-applicator template**  -  so new products ship with the utility bar from t=0 instead of waiting up to 60 min for the hourly injector.
5. **`/factory/methodology/` page audit**  -  it's 35KB but I haven't reviewed it; should link from trust-signal block back to a page that explains exactly what each axis means.

## Cumulative iter 1-30

The Wishdeal Factory buyer path is genuinely tight. 60+ buyer-facing pages, 10 audience landing pages, 192 products with consistent surface quality, ~1500 sub-pages with consistent nav, per-product objection handlers, per-product trust signals, per-product dossier previews with real ICP names. The cumulative invariant: **0 em-dashes shipped across 30 iterations**.

Generator-source-level fix pattern proven across iter 24, 25, 26, 27, 28, 29, 30. Future iter should keep pushing this discipline.
