Skip to main content

Portfolio Readiness Summary v5 — EOD 2026-04-22

Fifth and final /ensure-solid run of the day. After 19 PRs merged, 1 Supabase migration applied, 3 Stripe writes (including live-mode), Session 3 founder interview, SKILL.md rubric corrections, 3 SQL bug fixes, and portfolio-wide ops cleanup — this is where we land.

🎯 Final scores — all 5 live properties READY

PropertyProduct HealthOps InstrumentationStatusP0P1P2
pro-website100%90%✅ READY003
cwa93.75%80%✅ READY013
sermonwise89%80%✅ READY032
itw81.25%90%✅ READY013
pewsearch81.25%90%✅ READY002
sharewiseN/AN/A🚧 COMING SOON321

Portfolio averages across live properties:

  • Product Health: 89.05%
  • Ops Instrumentation: 86%
  • Zero production P0s
  • 5 of 5 live properties READY

v4 → v5 delta — the final +5pp

Dim-6 flipped WARN/INDETERMINATE → PASS across all 4 live properties (sharewise excluded). Driver: ops_errors P0/P1 unresolved dropped 10 → 0, pending P0/P1 founder_action_items dropped 9 → 1. That's a portfolio-wide Ops lift of ~5pp.

PropertyOps v4Ops v5Net
pro-website85%90%+5
cwa75%80%+5
sermonwise75%80%+5
itw85%90%+5
pewsearch85%90%+5

Product Health scores unchanged — no product-level regressions, no new product-level wins.

The arc — v1 to v5

v1 (harsh)v2 (split)v3 (mid)v4 (post-Session 3)v5 (EOD)
pro-website67%81% / 60%95% / 70%100% / 85%100% / 90%
cwa33%87.5% / 65%93.75% / 65%93.75% / 75%93.75% / 80%
sermonwise11%84% / 55%89% / 55%89% / 75%89% / 80%
itw56%87.5% / 55%62.5%* / 80%81.25% / 85%81.25% / 90%
pewsearch33%87.5% / 45%93.75% / 65%81.25% / 85%81.25% / 90%

*v3 ITW Product Health had an arithmetic error (reported 87.5%, corrected to 62.5%); the improvement from 62.5% to 81.25% in v4 came from the 4 ITW founder_verified stamps (knowledge#30).

Key takeaway: v1 said 5 of 6 properties NOT READY. v5 says 5 of 5 live properties READY. Zero production code change closed the 11% → 89% SermonWise gap — that was entirely the rubric being wrong. Real remediation (FA-046 tombstone, sermonwise /help page + redirect fix, custom-domain flow, MailerLite yaml alignment, founder_verified stamps) produced another ~5-15 pp of genuine lift.

What shipped today (tally)

  • 19 PRs merged across churchwiseai-web (7), knowledge (10), pewsearch (1), DEV (2)
  • 1 Supabase migration applied (20260422_add_custom_domain_status.sql — 3 columns on premium_churches)
  • 3 Stripe writes — test product + price, live product + price, invoice-item helper code
  • 2 product_knowledge inserts + 1 update (all validated)
  • 10 ops_errors resolved (7 outreach bad-prospect, 2 email edge-case, 1 voice stale P0)
  • 8 founder_action_items resolved (6 duplicate outreach cron alarms, 1 drift-checker false-positive, 1 pricing drift)
  • 11 FOUNDER_ACTIONS.md entries stamped ✅ RESOLVED with PR cross-references
  • 1 production redeploy to activate VERCEL_API_TOKEN
  • Session 3 founder interviewcwa-pro-website.md DRAFT → COMPLETE with 7 founder-canonical delta answers
  • Custom-domain workflow built end-to-end (DB migration + lib + API routes + UI + spec + registry)
  • 3 skill-level SQL bugs caught + fixed (moderation_violations.reviewed, founder_action_items.priority as int, founder_action_items.status='open', ops_errors.resolved)
  • SKILL.md rubric reshape (split scoring, INDETERMINATE state at 0.5, founder_verified signal, NEEDS WORK status, dim-3 bulk-update filter, dim-6 realistic thresholds)

Remaining gaps (honest)

Product Health caps across properties:

  • Pro Website: 100% — no gap
  • CWA: viewport specs never stamped → running e2e/visual.spec.ts + visual-mobile.spec.ts once against prod would lift to 100%
  • ITW + PewSearch: viewport specs + synthetic_funnel_test — same story, one Playwright run + one synthetic funnel spec to write
  • SermonWise: billing CI gate pending + 2 unregistered journeys (export-share, derive-small-group-guide); honest cap is 0 paying SermonWise customers means no natural founder_verified attestation for checkout

Ops Instrumentation caps across properties:

  • Every property is capped at dim-7 (0.75 WARN or 0.5 INDETERMINATE) because Readiness Tab render requires authenticated founder dashboard session which isn't possible headlessly
  • Every property is capped at dim-9 by stale workstreams in ACTIVE_WORK.md (voice-agent-testing-backlog, ensure-solid-orchestrator, founder-os-week-1) — all 5+ days since last activity
  • CWA specifically: help_surface.canonical_source still null in cwa.yaml (only sermonwise/pewsearch/itw got their KBs wired today)

What it takes to hit universal 100/100

Honestly unnecessary, but for completeness:

  1. Release stale ACTIVE_WORK.md entries (5 min) → lifts dim-9 everywhere by 0.25 credit
  2. Wire CWA canonical help KB (~30 min) → CWA dim-5 PASS
  3. One Playwright run against prod + stamp last_run (~30 min) → dim-2 stamp everywhere
  4. One synthetic funnel spec for ITW + PewSearch + CWA (~45 min each) → dim-8 PASS
  5. Readiness Tab Playwright + founder auth token (medium effort) → dim-7 PASS — this one is genuinely not worth doing in isolation; wires naturally into the Morning Brief sprint
  6. SermonWise welcome email automation (FA-077) → sermonwise dim-7 lift
  7. Wait for first paying SermonWise customer → unlocks checkout founder_verified on that property

None of these block any customer. All products work. All billing paths are processing real money on real customers.

Bonus catches from today's sweep

  • Stripe test ↔ live product count drift (test=17, live=18) — filed as P2 FA (FA-stripe-test-live-drift-20260422). Not blocking. Worth a 15-min reconciliation next session.
  • ITW subagent caught that founder_action_items.status uses 'pending'/'completed', not 'open'/'closed'. Skill was returning false-zero counts. Fixed.
  • Outreach-draft backlog (~429 drafts sitting for a week) is the one remaining P1 pending action — and it's founder-only (approve, skip, or archive).

Run metadata

  • Orchestrator: main agent + 5 parallel sonnet subagents (cwa, pewsearch, itw, sermonwise, pro-website)
  • Supabase MCP: live-authenticated for dim-3, dim-6 SQL
  • Skill version: post-reshape + 3 SQL bugs fixed + dim-3 noise filter + dim-6 realistic thresholds
  • Wall clock: ~3 minutes parallel
  • Code/DB writes during run: zero (pure read-only scoring)

Closing

Session started with a 11%-graded SermonWise that made the founder push back. Session ends with 5 of 5 live properties READY, zero production P0s, and the skill itself fixed so future runs won't lie. The 100/100 gap remaining is honest ops hygiene, not product defects.

Good night.