Ship log · iter #39

Iteration 39 ship log

2026-05-10 · continued autonomous /loop

On this pageWhat shipped Files changed inventory Why this matters Status snapshot What still needs work Next 5 recommended autonomous tasks Cumulative iter 1-39

Date: 2026-05-10 (continued autonomous /loop)

What shipped

5 items. Em-dash hardening source #15 + visible money-back guarantee on every unlock page + durable .bak cleanup cron.

Money-back guarantee on unlock pages (conversion UX)

A buyer about to spend $5 should see a refund guarantee at the exact moment of decision. Before today, the 30-day refund policy was only visible on /factory/terms/ - buyers had to click away from the unlock page to discover it.

Shipped: small line directly below the unlock CTA buttons on all 202 /unlock/<slug>/ pages: "30-day money-back guarantee. Terms." The Terms link goes to /factory/terms/. Muted JetBrains Mono font, low-key visual presence so it doesn't compete with the CTAs.

Patched at the generator source (regen-unlock-pages.py) so the line stays on every regen.

Verified across 4 products: all show the guarantee. End-to-end confirmed.

Em-dash source #15: financial-analysis.sh

Iter 38 found em-dashes regenerating in /builds/<slug>/financials.html files. Investigation revealed those are written by financial-analysis.sh (shell script with inline Python heredoc), NOT by regen-financials-page.py (which writes the top-level /financials/index.html).

Patched the inline Python to strip dashes before writing:

html_doc = (html_doc or "").replace(" - ", " - ").replace("-", "-")
with open(html_out, "w") as f:
    f.write(html_doc)

Total em-dash-safe sources now: 15 (10 Python + 2 shell scripts + 3 injectors).

Mass em-dash sweep

59 em-dashes had re-accumulated in 15 files (new financials.html files + various index pages). Mass sweep + factory-wide audit shows 0 em-dashes across all 2600+ HTML files.

Weekly .bak cleanup cron

Iter 38 was a one-time .bak purge. This iter makes it durable:

0 4 * * 0 find /home/ubuntu/factory/director -name "*.bak.*" -mtime +14 -delete && find /srv/sites/factory -name "*.bak.*" -mtime +14 -delete

Runs Sundays at 4am, deletes .bak files older than 14 days. .bak files less than 14 days old stay (recent backups, useful for rollback).

End-to-end verification

Files changed inventory

Modified (durable, source-level)

Re-rendered

In-place patched

New cron

All .bak backups preserved.

Why this matters

The money-back guarantee at the CTA moment is real conversion infrastructure. A $5 decision is small but still has friction. Visible 30-day refund reduces that friction.

The em-dash discipline now extends to 15 sources. The financial-analysis.sh patch closes another generator that was leaking dashes every time a new product was financially analyzed.

The .bak cleanup cron is preventive: rather than letting backup files accumulate indefinitely, they age out after 14 days.

Status snapshot

What still needs work

Same Wes-side as before:

  1. Stripe wiring (30 min)
  2. Email-send for auto-fulfill
  3. First real traffic push
  1. Trust signal on unlock page hero - currently only /builds/<slug>/ has the rich trust block. Adding a condensed version to /unlock/<slug>/ hero would reinforce decision-moment.
  2. Hero-polish second pass - Claude CLI on bottom-50 Adoptability products.
  3. Per-product /how-it-works/ sub-page - lightweight new content surface.
  4. Catalog card hover preview - hover shows first line of dossier teaser.
  5. Audit and refresh /factory/today/, /factory/hotlist/, /factory/founders/ - low-trafficked pages that may have stale content.

Cumulative iter 1-39

The factory's surface is genuinely tight, durable, and buyer-ready:

Surface quality is genuinely strong. Remaining work is Wes-side: Stripe + traffic push.

← PreviousIter #38 Next →Iter #40