Ship log · iter #8
Iteration 8 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 |
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
- 49 fewer broken links. Site feels more trustworthy when every internal nav lands somewhere real.
- 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.)
- 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. - 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.
- 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
- URL scrubber for the typo'd URLs to drop broken count below 50.
- Hero polish next 10 (top 41-50).
- Stripe wiring when keys arrive.
- First-customer outreach to Wes's existing network using the operator-partnership page as a wedge.
- 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)