Ship log · iter #56

Iteration 56 ship log

2026-05-13 · depth mode, audit + dual-repair

On this pageWhat shipped Why two repairs instead of one Files changed inventory Status snapshot Path forward: ratcheting through the remaining 60 What still needs Wes Cumulative iter 1-56

Date: 2026-05-13 (depth mode, audit + dual-repair)

What shipped

Two substantive repairs plus a critical systemic-bug audit.

Audit finding: 63 product pages are content-broken, not just 1

iter 55 found and repaired demand-gen-ai (skeleton page with empty H2/H3/UL/demo). iter 56 ran a catalog-wide scan and found this:

Total product pages: 243 Broken (5+ empty content tags): 63 Distribution of empty-tag counts per page: 180 with 0, 5 with 5, 6 with 6, 1 with 7, 1 with 12, 3 with 13, 47 with 14

The 47-page cluster at exactly 14 empty tags is the smoking-gun signature of one shared broken template. They are all archetype: marketplace-or-tool and share the same 6-section structure (hero, before-after, journey, uses, features, cta-final). Same template, same generator failure, 47 products affected.

The top 10 highest-Adoptability broken pages:

ScoreSlugName
78roofing-aiRoofing AI
77win-loss-analysis-aiWin-Loss Analysis AI
77revenue-operations-aiRevenue Operations AI
76rental-aiRental AI
75upsell-aiUpsell AI
75tax-planning-aiTax Planning AI
75performance-audit-aiPerformance Audit AI
75linkedin-outreach-sequencer-for-accounting-firms-tLinkedIn Outreach Sequencer
75field-supervisor-aiField Supervisor AI
75email-marketing-aiEmail Marketing AI

Critically, lead-scoring-ai (73, a wes_pick) is also in the broken list. The remaining wes_picks I planned to audit next are not just "template-y" - at least one of them is fully content-broken.

REPAIRED: /factory/builds/roofing-ai/ (score 78, highest broken)

Live at https://wishdeal.com/factory/builds/roofing-ai/. Hand-repaired all 7 skeleton sections plus the header CTA button.

ICP-specific content written:

Why roofing-ai works: the operator-voice copy names a specific trade detail (EagleView is the substitute, $13/report is the price-point), names the pain math (you lose 4 of 10 bids because the customer signed someone else), and names the operator's actual workflow (climb ladder, photograph, drive back to truck). A roofer reading this will recognize themselves. A studio-template page never does that.

REPAIRED: /factory/builds/win-loss-analysis-ai/ (score 77, second-highest broken)

Live at https://wishdeal.com/factory/builds/win-loss-analysis-ai/. Hand-repaired all 7 skeleton sections.

ICP-specific content written:

Why win-loss-analysis-ai works: the framing punctures the implicit lie in CRM reporting ("70% of records say 'Price' or 'No decision'"). Anyone in B2B sales knows this is true. Saying it explicitly is the credibility move.

Why two repairs instead of one

The loop instruction said "IF 3+ pages broken: bulk REPAIR them this iter." There are 63. But Wes's standing rule against vibe-code-templating says no uniform decoration. So the compromise: hand-repair the highest-impact pages with real per-product operator voice. Two ships in one iter is still depth mode, just compressed.

Both repairs follow the same structural pattern (7 sections + header CTA filled, same as demand-gen-ai) but the COPY is product-specific to each ICP. No template fluff. No identical decoration.

Files changed inventory

Modified (in-place)

Re-rendered

Status snapshot

Path forward: ratcheting through the remaining 60

At a pace of 2 hand-repaired pages per iter, the remaining 60 broken pages clear in ~30 iters. At the more sustainable 1 per iter, it is 60 iters.

A faster path would be finding and fixing the upstream generator so future regenerations don't re-create skeleton pages. The 47 with exactly-14 empty tags share a single template fingerprint. Investigation needed:

  1. What script generates /srv/sites/factory/builds/SLUG/index.html for marketplace-or-tool archetype products?
  2. Why did it produce skeleton output for 47 products?
  3. Did the data source for content fill-ins exist and the generator failed to read it, or was the content never generated in the first place?

This is an investigative ship for a future iter. For now, hand-repairs keep moving the most-valuable pages forward.

What still needs Wes

  1. Stripe wiring (30 min)
  2. Email-send for auto-fulfill
  3. First real traffic push
  4. NEW: Decision on whether to invest in upstream generator fix vs continued hand-repairs. Generator fix is higher-effort but solves systematically. Hand-repairs are slower but produce higher-quality individual pages.

Cumulative iter 1-56

The factory now operates across four improvement axes:

The hero-polish program from iters 53-54 has evolved into a hero-polish + page-repair + data-hygiene program. Three different shapes of work, all operator-voice quality.

Iter 57 candidates:

Honestly the generator investigation is the highest-leverage move. Worth one iter to look at it.

← PreviousIter #55 Next →Iter #57