Ship log · iter #6
Iteration 6 ship log
2026-05-09 · continued autonomous /loop
Date: 2026-05-09 (continued autonomous /loop)
What shipped
New scripts on ubuntu@40.160.2.121
| File | Purpose | Cron |
regen-operator-inbox.py | /factory/admin/inbox/ - unified timeline of intent + feedback + Stripe webhooks + dossier fulfillments. Auto-refreshes every 60s. Per-day rollup chart. Copy-email + mint-command shortcuts. | * |
regen-categories.py | /factory/categories/ index + 18 per-category cluster pages (/sales-motion/, /finance/, /legal/, etc.). Each shows blurb, count, top-Adoptability product, full card grid. | */30 |
regen-daily-digest.py | /srv/sites/factory/admin/daily-digest.md + HTML. Yesterday's intents + feedback + fresh products + repair queue delta + cost. Action items section. | 0 7 (7am daily) |
patch-compare-shareable.py | One-time patch on regen-compare-page.py. Compare page now: reads ?slugs=a,b,c URL param to hydrate localStorage shortlist; "Share shortlist" button copies a URL with current shortlist. | one-time |
Live URLs
- https://wishdeal.com/factory/admin/inbox/ - LIVE unified ops timeline (refreshes every minute)
- https://wishdeal.com/factory/categories/ - LIVE category index (18 categories)
- https://wishdeal.com/factory/categories/sales-motion/ - example cluster page
- https://wishdeal.com/factory/admin/daily-digest/ - LIVE morning summary (regenerates 7am daily)
- https://wishdeal.com/factory/compare/?slugs=bookkeeper-ai,dispatch-ai - now hydrates shortlist from URL
Background tasks (still completing as I close iter 6)
- Hero polish next 10 running (top 11-20). 13 of 20 JSON files done so far. Apply cron picks them up every 5 min.
- Brand applicator on 30 finished: 19 of 30 applied successfully (others lacked brand brief or
</head> tag in template).
Cumulative buyer-facing pages (iter 1-6)
| URL | Iter | Purpose |
/factory/catalog/ | 1 | Browse all ideas, filter, sort |
/factory/unlock/<slug>/ | 1 | Per-product $5 dossier unlock + email capture |
/factory/operator-partnership/ | 1 | Done-with-you tier scope |
/factory/honest/ | 1 | Honest expectations |
/factory/repair-queue/ | 1 | Admin: completeness audit |
/factory/outreach-launcher/ | 2 | Copy-paste outreach with status tracking |
/factory/compare/ | 2 | Side-by-side comparison + shareable URL (iter 6) |
/factory/fresh/ | 3 | Just-shipped tray |
/factory/builds/<slug>/faq/ | 3 | 170 FAQ pages |
/factory/pricing/ | 4 | 4-tier explainer + comparison |
/factory/admin/captures/ | 4 | Intent captures admin |
/factory/api/dossier/<slug>?t=... | 4 | HMAC-gated dossier endpoint |
/factory/feedback/<slug>/ | 5 | 172 feedback forms |
/factory/api/feedback | 5 | Feedback POST endpoint |
/factory/api/stripe-webhook | 5 | Stripe webhook receiver |
/factory/admin/inbox/ | 6 | Unified ops timeline |
/factory/categories/ | 6 | Category cluster pages (18 of them) |
/factory/admin/daily-digest/ | 6 | Morning summary for Wes |
That's 35 distinct buyer-facing or admin pages created across 6 loop iterations.
Operator inbox features
- Auto-refresh every 60s (meta-refresh)
- 5 summary cells: intent count, feedback count, Stripe webhooks, fulfillments, last-7-days bar chart
- Timeline of latest 300 events with: relative time, kind pill (color-coded by tier/sentiment), slug link, detail (email/note/sentiment/usefulness), copy-email button, "mint+email" hint button
- Auto-filters test entries (visual gray-out)
- Status tracking via localStorage in
/admin/captures/ (separate page) - that data persists across refreshes - Repair queue summary in header
- Studio numbers in header (product count, cost, tick number)
Daily digest features
When this fires at 7am, Wes's morning starts with:
- TL;DR with 6 numbers (intents, feedback, fulfillments, Stripe events, fresh products, completeness)
- Per-intent listing (timestamp, slug, tier, email, note)
- Per-product intent counts (top 10)
- Feedback listings with sentiment/usefulness/excerpts
- Fresh-products list (last 24h)
- Studio numbers (product count, cost, tick)
- Action items section (calls out unanswered intents + negative feedback)
Both markdown (sharable) and HTML versions emit. The HTML page has a nav bar linking to inbox/captures/digest/repair/home.
Categories cluster pages
- 18 categories live: sales-motion, finance, legal, healthcare, agency, hospitality, trades, hr-recruiting, ecommerce, education, field-service, customer-success, devops-saas, developer-tools, content, real-estate, general-saas, nonprofit, compliance
- Each has a blurb describing the buyer profile + a count + a top-Adoptability call-out
- Per-category page renders all products in that category as cards, sorted by Adoptability descending
- SEO-friendly canonical URLs and meta descriptions
- Index page ranks categories by product count
Shareable shortlist (compare page)
- New "Share shortlist" button next to "Clear shortlist"
- Click → copies
https://wishdeal.com/factory/compare/?slugs=a,b,c (with current shortlist) - When loaded with
?slugs=..., page reads URL param + merges into localStorage - Lets a buyer email "here are 5 I'm considering" to a colleague who can open the link and see the same comparison
What's now better for buyers
- Wes opens one URL (
/factory/admin/inbox/) and sees every ops event - no more digging through JSONLs. - Daily digest at 7am lands in the same admin tree; Wes can save it to email + paste to Slack.
- Buyers can navigate by category, not just search/filter - lower-friction discovery for buyers who know "I want a sales-motion idea."
- Shortlists are shareable - low-effort viral mechanic. Buyer A sends URL to buyer B; B opens with shortlist pre-filled.
- The whole admin surface (inbox + captures + repair-queue + daily-digest) is unified under
/factory/admin/* - cleaner mental model for Wes.
What still needs work
- Stripe wiring - infrastructure 100% ready; needs Wes's API keys.
- Email-send integration - SendGrid or Postmark.
- Hero polish next batch - top 11-20 in progress; top 21-30 next iter.
- Vanilla product mop-up - 11 still wear studio defaults (their templates don't have
</head> for our injection; need a different injection point). - Per-product reading time + word count would be a nice catalog enhancement.
Next 5 recommended autonomous tasks
- Stripe wiring when Wes provides keys.
- Continue hero polish on next 10 (
hero-polish-cli.py 30). - Vanilla mop-up with a different injection strategy (just replace the existing brand-related CSS vars in-place rather than appending).
- Sub-page generator - 106 products lack pricing sub-pages, similar gap in case-studies. Same template-from-existing-data pattern.
- First-real-traffic audit - once Wes shares the catalog URL with anyone, intent captures will spike. Make sure the operator inbox handles 100+ events well.
Files changed inventory
- New: 4 Python generators
- New:
/srv/sites/factory/admin/inbox/index.html - New:
/srv/sites/factory/categories/index.html + 18 per-category pages - New:
/srv/sites/factory/admin/daily-digest.md + daily-digest/index.html - Modified:
/home/ubuntu/factory/director/regen-compare-page.py (share button + URL hydration; backup .bak.before-share) - Modified: 19 product pages (brand override CSS injected via background brand-applicator)
- New: more hero polish JSONs (3 of 10 top 11-20 so far; cron applies)
- Modified: crontab (3 new entries; total factory entries ~71)
Cumulative iter1-iter6 inventory
- 34 generator/helper scripts in
/home/ubuntu/factory/director/ - 5 Node API routes (intent, dossier, mint-token, feedback, stripe-webhook)
- ~71 active cron entries
- 35 buyer-facing or admin pages live
- 172 products with full buyer-path artifacts (landing, pricing band, hero insight, FAQ, dossier teaser, gated full dossier, outreach pack, email drip, feedback form, brand identity for 159 of them, polished hero for top 13)
- Repair queue 96% complete, 89/172 fully complete
- 4 real intent captures + 2 feedback entries in production data