# Wishdeal Factory buyer-path - iteration 90 ship log

**Date:** 2026-05-14 (push mode, 45 min cadence, structured-data extension iter)

## What shipped (2 substantive ships)

This iter extended JSON-LD to all 8 high-trust pages with appropriate schema types, then made the injection durable through every regen cycle.

## Ship 1: schema.org JSON-LD on 8 high-trust pages

Built inject-high-trust-jsonld.py (~250 lines). Single injector with a config table mapping each high-trust page URL to a schema-type and builder function:

| URL | Schema type | Purpose |
|---|---|---|
| /factory/api-docs/ | TechArticle | API reference targeting developer audience |
| /factory/methodology/ | AboutPage | How the studio actually runs |
| /factory/honest/ | AboutPage | What to expect / not expect |
| /factory/quality-report/ | WebPage | Live audit dashboard |
| /factory/cron-status/ | WebPage | Live cron freshness |
| /factory/log/ship-logs/ | CollectionPage + ItemList | 89 ship logs |
| /factory/about-the-builder/ | ProfilePage (Person nested) | Wes Lemos profile |
| /factory/start-here/ | WebPage | New-visitor intro |

**Each schema block** includes name, description, url, primaryImageOfPage (the OG card), isPartOf (Wishdeal Factory WebSite), publisher (Wishdeal Studio Organization). The CollectionPage version dynamically enumerates all 89 ship-log iterations as Article items in an ItemList.

**Idempotent** via WD_HIGH_TRUST_JSONLD_v1 marker. All 8 pages validated via json.loads. The TechArticle for /api-docs/ also includes an "audience" property (Developers and technical operators) which Google uses for search-result targeting.

**Why these specific types:** schema.org\'s vocabulary distinguishes content categories. TechArticle outranks plain Article for developer-targeted searches. AboutPage signals "this is about the entity itself." ProfilePage with Person mainEntity is the right shape for a single-person about page. CollectionPage with ItemList is the canonical shape for an index page.

## Ship 2: 5 regen scripts patched so JSON-LD survives every regen

**The problem:** 5 of the 8 high-trust pages are regenerated by cron (quality-report every 30 min, cron-status every 15 min, ship-logs index every 30 min, honest hourly, start-here hourly). Each regen completely rewrites the HTML, wiping any injected JSON-LD. Confirmed via test: regenerating quality-report dropped the JSON-LD count from 2 to 0.

**The fix:** patched each of the 5 regen scripts to call inject-high-trust-jsonld.py at the end of their run via subprocess.run. The injector is fast (~50ms per page, idempotent), so the cost per regen is negligible. Now every regen automatically re-injects the JSON-LD before exiting.

**Verified durability:** ran regen-quality-report and regen-cron-status manually after the patch. JSON-LD count stayed at 2 (start marker + script tag count, expected). Both pages now have stable JSON-LD across regens.

**Belt-and-suspenders:** the injector cron is set to run every 5 minutes as a safety-net catch-up sweep. If any regen script ever bypasses the inject call, the 5-min sweep restores JSON-LD within minutes.

## Standard wirings

- **OG generator**: not extended (all 8 pages already have page-*.png OG cards from iter 84-87)
- **Sitemap**: not extended (all 8 pages already in sitemap from iter 84-87)
- **Health-check**: not extended (all 8 pages already monitored)
- **Cron**: 2 new (high-trust-jsonld at every-5-min + post-regen subprocess calls in 5 regens)

## Health hygiene (Op rule 5)

- **Em-dash sweep**: 5 files / 24 dashes stripped (regen + injector chain pulled some)
- **audit-fakeproof**: 0 hard / 0 soft (CLEAN, holds since iter 88)
- **Health-check**: 76/76 passing, avg 11ms
- **All 8 high-trust pages**: JSON-LD verified present (1 marker each)

## Status snapshot

- 244 products, 0 broken pages, **0 fake-proof findings (clean since iter 88)**
- 11 essays + JSON-LD Article on each
- /factory/playbooks/ index with CollectionPage + ItemList (iter 89)
- **8 high-trust pages with appropriate JSON-LD schema types** (NEW iter 90)
- 21 OG images
- 8 high-trust + 5 transparency surfaces + 89 styled ship-log detail pages
- 26 hand-polished products
- 10 content invariants defended + JSON-LD presence as durable invariant
- audit-fakeproof.py: Fermi-context aware (iter 88)
- factory-api Node service: 12 live application endpoints
- 76/76 health endpoints, 2319 sitemap URLs
- 45 min cadence active
- **131 cron jobs** running (5 patched to re-inject JSON-LD post-regen)

## Iter 90 throughput note

2 substantive ships at 45-min cadence. Ship 1 was the injector + 8-page schema-mapping. Ship 2 was the durability layer (5 regen scripts patched). The two ships together solve a complete SEO problem: structured data on every high-trust page, durable through every regen.

## The SEO foundation at iter 90

The catalog now has schema.org JSON-LD on:
- 11 playbook essays (Article)
- /factory/playbooks/ index (CollectionPage + ItemList)
- 8 high-trust pages (TechArticle / AboutPage / WebPage / CollectionPage / ProfilePage as appropriate)

**Total: 20 pages with structured-data treatment.** This is the right SEO foundation for an essay-and-transparency catalog. Google rich results, LinkedIn cards, semantic search discoverability all properly grounded.

What\'s NOT yet covered: the 244 product pages and the catalog index. Adding Product schema to product pages is a separate piece of work (heavier, would need per-product price + availability fields).

## Running queue (top 5 for iter 91)

1. **Product schema on /factory/catalog/** (244 items as ItemList) - the big SEO win still pending
2. **"Read next" section at end of each essay** - dwell-time + traversal improvement
3. **12th playbook essay** - candidates: "What an audit-driven AI catalog looks like in practice" OR "The 30-minute marketplace audit for buyers"
4. **Cadence step to 60 min** - iter 89 + iter 90 each 2 ships. Marginal-value-per-iter is stable. Could step.
5. **Periodic verification of 5 random older polished products** (quality holds check)

## Cumulative iter 1-90

- **Catalog**: 244 products, 0 broken, 0 fabrications, 26 hand-polished
- **Content library**: 11 essays + 21 OG cards + 89 styled ship-log pages + JSON-LD on 20 pages
- **High-trust pages**: 8 foundational + 5 transparency surfaces with structured-data
- **Source durability**: 19+ generators (added inject-high-trust-jsonld iter 90) + 5 regen scripts auto-call injector + audit-fakeproof JSON + factory-api.service
- **Content invariants**: 10 defended + Fermi-context aware audit + JSON-LD presence enforced via 5-min cron + post-regen inject

The SEO foundation is now coherent: every essay-and-high-trust surface has appropriate structured-data, and the data survives every regen.
