Ship log · iter #1

Iteration 1 ship log

2026-05-09 · Wes's overnight session, dynamic /loop mode

On this pageWhat shipped Adoptability snapshot Repair queue snapshot What's now better for buyers What still needs work Next 5 recommended autonomous tasks Files changed inventory

Date: 2026-05-09 (Wes's overnight session, dynamic /loop mode)

What shipped

New infrastructure (all on ubuntu@40.160.2.121)

FilePurposeCron
/home/ubuntu/factory/director/adoptability-score.py10-axis heuristic scorer for all 170 products*/15
/home/ubuntu/factory/director/dossier-gen.pyComposes per-product dossier (teaser + locked) from brand brief, financials, skeptic memos, elevator script, outreach pack*/30
/home/ubuntu/factory/director/regen-catalog-v2.pyReplaces old catalog with sortable/filterable browser (170 products, badges, "Start here" + "Wes's picks")5,20,35,50
/home/ubuntu/factory/director/regen-unlock-pages.pyPer-product /factory/unlock/<slug>/ pages with Stripe placeholder + dossier teaser7,37
/home/ubuntu/factory/director/regen-pricing-block.pyIdempotent injector that adds 4-tier pricing band (Browse / $5 unlock / $99 adopt / Operator partnership) to every product page17,47
/home/ubuntu/factory/director/regen-operator-partnership.py/factory/operator-partnership/ - reframes higher-ticket as done-with-you tier, not default. Phase A/B/C scope, $2,500 - $45K range10,40
/home/ubuntu/factory/director/regen-honest-page.py/factory/honest/ - "what you should expect" page, reduces refund risk and increases credibility15 (hourly)
/home/ubuntu/factory/director/repair-queue.pyAudits all 170 products on 13 buyer-path completeness checks, writes JSON + HTML dashboard for the Director to consume*/15
/home/ubuntu/factory/director/wes-picks.jsonManual override for "Wes's Picks" section (slugs only, edit + cron picks up)n/a

Live URLs

Pricing block injected

The 4-tier pricing band lives at the bottom of every product page (just before </body>) wrapped in marker comments WD_FACTORY_PRICING_BLOCK_v1. Idempotent: re-running regen-pricing-block.py refreshes existing blocks without duplicating. 169/170 products got it on first run; the lone exception was the AUTO/ directory which lacked a </body> tag (not a real product).

Mission Control nav update

Patched /home/ubuntu/factory/director/mission-control.py to surface Catalog (gold-highlighted), Operator, and Honest in the top nav. Removed Financials/Agents/Today/Scorecard from the primary nav (they're still linked elsewhere).

Adoptability snapshot

After first run:

10 axes weighted as follows (highest leverage first):

AxisWeightWhy
Distribution difficulty (easy = high)1.5Wes's bottleneck, not building
Pain intensity1.4If pain is weak, nothing else matters
Buyer clarity1.3Named ICP > generic "B2B"
Credibility1.2Pages with brand+audio+financials look adoptable
Financial upside1.1Yr1 ARR high, $300K = 1 unit
Speed to MVP1.0Archetype-derived
Implementation upsell1.0Operator-partnership signal
Landing page quality1.0composite_score from quality-summary.json
Uniqueness0.8Brand brief + "What This Brand IS NOT" presence
Market saturation (open = high)0.7Inverse of probability_of_meaningful_success

Repair queue snapshot

After first run, 170 products audited:

What's now better for buyers

  1. Catalog is browsable. Was a static page advertising "47 products" (actually has 170). Now: real-time filterable browser, badges, sort, search, "Start here" section.
  2. The buyer journey has 4 named tiers with clear price points and CTAs on every product page.
  3. The unlock proposition is concrete. Every product has a /factory/unlock/<slug>/ page that lists exactly what the $5 buys (16 dossier sections itemized).
  4. Honesty is a feature. The /factory/honest/ page sets expectations: distribution is the hard part, most ideas don't win, no live customer revenue claimed.
  5. Operator partnership is a tier, not the front-end offer. Phased Phase A/B/C scope with explicit price ranges keeps the $5 unlock as the entry point.
  6. The Director can self-heal. repair-queue.json is a queue the Director's loop-v2.sh can consume to prioritize "fix the biggest buyer-path gap" over "build another product."
  7. Adoptability separated from quality. The catalog now ranks by "easiest to adopt and ship," not by "prettiest landing page."
  8. Stripe placeholders are env-gated. When FACTORY_STRIPE_UNLOCK_URL and FACTORY_STRIPE_ADOPT_URL env vars are set, every unlock page becomes a live checkout. Until then, the "Coming soon" modal directs to email or operator partnership.

What still needs work

  1. Outreach launcher. Walk every outreach-ready.md, render a per-product launcher with copy-buttons, Gmail draft URLs, and "mark contacted/interested/not fit" buttons. No auto-send.
  2. Top-20 manual copy pass. Take the 20 highest-adoptability products and run a Claude-CLI editor over their hero copy, ICP statement, and "who this is for" section. Replace generic language with the specific buyer named in the brand brief.
  3. Director repair-queue action. Add action P (consume_repair_queue) to loop-v2.sh so the Director picks the most-incomplete product and either generates email-drip / outreach / faq for it, or queues a Foreman pass. Highest-impact: 168 products are missing outreach packs.
  4. Stripe checkout wiring. Create the two products in Stripe ($5 dossier unlock, $99-199 adopt build). Export env vars. Add a webhook receiver at /factory/api/stripe-webhook that emails the dossier link after payment.
  5. Visual polish sweep on top 10. Replace any product page that still uses studio-default Fraunces+Inter with its declared brand palette. Verify hero, screenshot, badge bar, and pricing block all use the per-product --accent variable correctly.

Files changed inventory

Next →Iter #2