# Wishdeal Factory buyer-path - iteration 121 ship log

**Date:** 2026-05-15 (push mode, 60 min cadence, pricing-audit iter)

## What shipped (2 substantive ships)

This iter built audit-pricing-content.py + wired into /quality-report/ as invariant #21. Result: 232/248 pricing pages clean, 16 in warn (legitimate quality issues surfaced).

## Ship 1: audit-pricing-content.py - new audit class (13th audit)

Built audit-pricing-content.py (~135 lines). For each /factory/builds/<slug>/pricing/index.html, verifies:
- Title contains product name (with brand-rename + AI-suffix-stripped + space-stripped support)
- At least 2 distinct $-amounts visible (tiered pricing minimum)
- At least one /factory/ CTA link present
- Substantial page size (>=3KB)

**Template-agnostic design**: 4 different pricing layouts exist across the catalog (.tier newer, .card, .card.featured, .pricing-card older, plus bare custom for aiops-ai). Instead of coupling to template markers, the audit checks for semantic content (visible $-amounts, factory links). This means the audit survives any future template change.

**Includes brand_brief_name helper** (extended with title-compact / name-compact / AI-suffix-stripped variants).

**Result on first run:** 248 scanned -> 232 clean, **16 in warn state**.

**The 16 warn cases break down into two real quality classes:**
- 8 too-few-prices: pricing pages with 0 or 1 explicit $-amounts (only Free + Custom tiers). Affected: expense-management-ai, rental-ai, contractor-ai, discovery-call-ai, feedback-widget, pitch-ai, shift-ai, voice-sales-coach-ai.
- 8 title-no-product: pricing page title was generated with a different product name than what's currently in adoptability.json or brand brief (renamed-since-generation drift). Affected: pseudocode-to-typescript-translator-that-learns-yo (Code Morph), repo-scanner (Shipcheck), tax-planning-ai (TaxPlan), project-mgmt-ai (Project Management AI), white-label-linkedin-campaign-analytics-dashboard (ResaleDash), white-label-sub-account-reseller-portal-for-proxyb (ProxyResell), sc-campaign-briefing-video (Campaign Briefing Video), agency-compliance-automation (Compliance Automation for Agencies).

These are not audit bugs - they are genuine product-page quality issues the audit is correctly surfacing. Wes-task: reconcile or accept.

**Cron:** every 30 min at :08, :38

## Ship 2: /quality-report/ wired + invariant #21

Patched regen-quality-report.py with:
- New helper `latest_pricing_content_quality()`
- New card: "Pricing page quality 232/248 - 16 need attention" (warn state)
- New audit-table row describing template-agnostic semantic checks
- New content invariant #21

**Live-check card count: 14 -> 15.** Total content invariants: 20 -> 21.

## The 13 audit suites at iter 121

| Audit | Cadence | Snapshot | Invariant # |
|---|---|---|---|
| audit-fakeproof.py | daily 4:30am | audit-fakeproof.json | 1-10 |
| audit-adoptability-drift.py | every 15 min | adoptability-drift.json | 11 |
| audit-page-identity.py | every 30 min | page-identity.json | 12 |
| audit-hero-polish-drift.py | every 30 min | hero-polish-drift.json | 13 |
| audit-og-coverage.py | every 30 min | og-coverage.json | 14 |
| audit-teaser-quality.py | every 30 min | teaser-quality.json | 15 |
| audit-case-studies-quality.py | every 30 min | case-studies-quality.json | 16 |
| audit-faq-quality.py | every 30 min | faq-quality.json | 17 |
| audit-unlock-content.py | every 30 min | unlock-content-quality.json | 18 |
| audit-adopt-content.py | every 30 min | adopt-content-quality.json | 19 |
| audit-feedback-content.py | every 30 min | feedback-content-quality.json | 20 |
| **audit-pricing-content.py** | **every 30 min** | **pricing-content-quality.json** | **21** |
| em-dash-sweep.py | every 15 min | (log only) | 1-2 |

## Health hygiene (Op rule 5)

- **audit-pricing-content**: 232/248 (16 Wes-task warn, real quality issues)
- All 12 prior audits unchanged: feedback/teaser/unlock/adopt/FAQ 247/247, case-studies 239/247 (8 Wes-task)
- The audit suite has graduated from "all clean" to "surface real issues" - which is the point.

## Status snapshot

- 246 scored products + 2 partial builds
- 248 pricing pages audited (all /builds/<slug>/pricing/)
- 246 build pages + 246 /own/ + 247 day-one + 247 operator + 247 teasers + 246 case-studies + 246 FAQs + 247 unlock + 247 adopt + 247 feedback + 248 pricing pages, all audited
- 0 fake-proof findings; 24 total warn (8 case-studies, 8 pricing too-few-prices, 8 pricing title-drift)
- 247 brand briefs with valid archetype
- 12 essays + Read-next + JSON-LD
- 8 high-trust pages with JSON-LD durable
- /factory/catalog/ with CollectionPage + 246 cards link /own/
- 273 OG PNG images
- 5 transparency surfaces + 121 styled ship-log detail pages
- /quality-report/ surfaces **15 live-check cards**
- **21 content invariants defended**
- **13 audit systems** operational
- 77/77 health endpoints, 144+ cron jobs
- 60 min cadence active

## Iter 121 throughput note

2 substantive ships at 60-min cadence. The audit suite has now reached **maturity threshold**: it catches real issues rather than false positives. The 16 pricing-page warnings are exactly the kind of drift a buyer-touching audit should surface.

## Running queue (top 5 for iter 122)

1. **Wes-task: 16 pricing-page issues** (8 too-few-prices, 8 title-drift) - reconcile or accept
2. **Wes-task: 8 case-studies fabrications** - still the only other warn state
3. **Audit /factory/builds/<slug>/vs/ content quality** - 245 vs-comparison pages (only page-identity covers)
4. **Audit /factory/builds/<slug>/how-it-works/ content quality** - explainer pages
5. **Audit /factory/builds/<slug>/sales-kit/ content quality** - outreach assets

## Cumulative iter 1-121

- **Catalog**: 246 scored + 2 partial, 246 with index.html, all cards link /own/
- **Content library**: 12 essays + Read-next + 273 OG PNGs + 121 styled ship-log pages
- **High-trust pages**: 8 foundational + 5 transparency surfaces
- **Audit infrastructure**: **13 audit systems** + 10-surface page-identity + brand-rename support on 6 audits + template-agnostic pricing audit
- **Source durability**: 31+ generators + 6 regen scripts auto-call injectors + 12 JSON snapshots + 144+ cron jobs
- **Content invariants**: **21 defended** at surface+source AND publicly surfaced

The pricing audit's template-agnostic design (semantic-content checks over template markers) is a pattern worth keeping. As the factory evolves and templates change, semantic audits stay valid. Audit infrastructure is now genuinely robust against future template drift.
