# Wishdeal Factory buyer-path - iteration 8 ship log

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

## What shipped

### New scripts on `ubuntu@40.160.2.121`

| File | Purpose | Cron |
|---|---|---|
| `regen-agent-pages.py` | Walks site for `/factory/agents/<slug>/` references, builds template pages for ones that don't exist. Resolves the biggest cluster of broken links. | 22,52 |
| `patch-catalog-reading-time.py` | One-time patch on catalog. Reads dossier word counts and injects "X min read" badge on every card. Reading time computed from teaser.md + private full.md combined word count at 230 wpm. | one-time |
| `jsonld-injector.py` | schema.org Product structured data on each product page. Includes Brand, Offer (AggregateOffer with $5-$199 range), Adoptability score as a custom property. Helps Google show rich snippets. | 24,54 |
| `concept-cross-linker.py` | Surfaces concept essays from /factory/concepts/ on related product pages. Footer block "Deep research" with up to 3 related essays. Today's run found 0 matches because essay text doesn't reference product slugs yet; will pick up as essays grow. | 26,56 |

### Live URLs

- https://wishdeal.com/factory/agents/`<slug>`/ - 36 new agent template pages built (review-ai, tutor-ai, fleet-ai, clinic-ai, hire-ai, grant-ai, invoice-ai, shift-ai, pitch-ai, coach-ai, contractor-ai, church-ai, open-house-ai, etc.)
- Catalog cards now show "X min read" (e.g. 9-11 min) under the meta row
- Product pages now include JSON-LD Product schema visible to Google/social crawlers

### Link audit improvement

| Metric | Iter 7 | Iter 8 |
|---|---|---|
| Pages scanned | 1990 | **2038** |
| Total links | 12,204 | 12,481 |
| Broken | 143 | **94** |
| Unique broken targets | 130 | **94** |

**49 broken links resolved** (mostly the /agents/ pattern). Remaining 94 are mostly typo'd `/factory/builds/wishdeal_com_factory_...` URLs in older auto-generated content (bak files or one-off pages); not regressions.

### Hero polish progress

- iter 5: 10 (top 1-10) ✓
- iter 6: 10 (top 11-20) ✓
- iter 7: 10 (top 21-30) ✓
- iter 8: top 31-40 in flight, 3 done so far (architect-ai polished: "Architects, stop translating designs into specs")

Total polished: **33/40** so far (cron applies as more land).

## What's now better for buyers

1. **49 fewer broken links.** Site feels more trustworthy when every internal nav lands somewhere real.
2. **Buyers see "9 min read" on catalog cards.** Reduces unlock-purchase hesitation - they know what they're getting into. (The dossier is meaty enough to merit the read time, not so long it's intimidating.)
3. **Google's Product rich snippets.** When a search results page shows `bookkeeper-ai`, it can render with brand, price range, score - looks like a real product, not a marketing page.
4. **Agent pages exist for every referenced agent slug.** Anyone clicking through from a product's about/sales-kit page lands on a real page, not a 404.
5. **Concept-cross-linker is wired** and will start surfacing essays as the Director writes more (action N in loop-v2.sh).

## What still needs work

- **Stripe wiring** when Wes provides keys.
- **Email-send integration** for auto-fulfill.
- **Hero polish for top 41-50** in next iteration.
- **94 remaining broken link targets** are mostly typo'd auto-generated URLs in older content. Could be fixed with a scrubber that detects the pattern `/factory/builds/wishdeal_com_factory_builds_X/` and rewrites to `/factory/builds/X/`.
- **Concept-cross-linker has 0 matches today.** The essays don't reference product slugs by name. When the Director writes more category-aware essays, this kicks in automatically.

## Next 5 recommended autonomous tasks

1. **URL scrubber** for the typo'd URLs to drop broken count below 50.
2. **Hero polish next 10** (top 41-50).
3. **Stripe wiring** when keys arrive.
4. **First-customer outreach** to Wes's existing network using the operator-partnership page as a wedge.
5. **More-like-this** recommender: on each product page, show 3 related products by category match. Cross-discovery within the catalog.

## Files changed inventory

- New: 4 Python generators / 1 patcher
- New: 36 `/srv/sites/factory/agents/<slug>/index.html`
- Modified: `/home/ubuntu/factory/director/regen-catalog-v2.py` (reading-time helper + CSS; backup `.bak.before-reading-time`)
- Modified: 171 product pages (JSON-LD injected)
- Modified: 0 product pages (concept-cross had no matches yet)
- Modified: crontab (3 new entries)

## Cumulative iter1-iter8 numbers

- **40+ buyer-facing or admin pages** live
- **5 Node API routes** (intent, dossier, mint-token, feedback, stripe-webhook)
- **172 OG image SVGs** for social shares + JSON-LD on each product
- **All 172 products** have full buyer-path artifacts
- **159/172** with per-product brand identity
- **33/172** with polished hero copy via Claude CLI (top 30 + 3 of top 31-40)
- **94 broken internal links** (down from 143; mostly pre-existing typos remaining)
- **Repair queue: 96% avg complete, 89/172 fully complete**
- **~78 active cron entries**
- **4 real intent captures + 2 feedback** in production data (no new captures this iter; site has not been promoted)
