Skip to main content

SermonWise AI — Go-Live Readiness Re-Score (v10, evening)

TL;DR

Axis2026-05-11 morning (v9)2026-05-11 evening (v10)Change
Product Health (D1, D2, D4, D8)95%95%flat
Ops Instrumentation (D3, D5, D6, D7, D9)85%80%−5pp (velocity vs verification)
OverallREADY (1 P1 gap)READY (1 P1 gap)net-positive but with a new fault line

This is honest scoring, not pessimism. Today shipped 5 PRs + 2 prod migrations, every one targeting a real bug or margin gap. The Product Health surface area got cleaner, but the gap between "merged" and "Playwright-verified end-to-end" widened — that's the −5pp on Ops. The bugs from v9 are closed; new test coverage debt is the open item.


What shipped between v9 and v10 (this afternoon → evening)

PRSurfaceStatus
#398Funnel triad — handle_new_user app_source / server-side signup_email_confirmed / social_media max_tokens 2048 → 5120merged + migration applied to prod; 10 customer rows backfilled
#399UX polish — title-gen dropdown (canonical 17 traditions) / community 500 fix / new SermonAppHeader (avatar dropdown, sticky blur, mobile)merged earlier today
#402Saved Titles section on My Sermons dashboardmerged
#404Auth-aware chrome on /titles, /templates, /community — signed-in users get SermonAppHeader instead of marketing navmerged
#40560/month Pro derivative cap — atomic check-and-increment + refund-on-failure + 429 UI bannermerged + migration applied to prod

Plus: founder click-through funnel verification (5/6 events confirmed live); test user fully cleaned up (Stripe sub canceled, customer deleted, auth user + cascades removed, PostHog Person purged).


9-Dimension Scorecard (fresh evidence — 2026-05-11 evening)

Product Health (Dims 1, 2, 4, 8)

#DimensionScoreStateEvidence (this run)
1User journeys9/10✅ passCritical path sermonwise-signup-checkout last green 2026-04-24 (17d old — starting to drift). sermonwise-posthog-funnel stamped 2026-05-11 — founder click-through, 5/6 events landed live; signup_email_confirmed moved to server-side capture but unverified post-fix. Three new surfaces (saved-titles section, header redesign, auth-aware chrome) ship without paired Playwright. Critical-path money flow exercised by 2 paying subs in last 14 days.
2Viewports9/10✅ passsermonwise.ai H1 = "Sermon & Homily Starters…" → 200. /sermons/passage/john-3-16/reformed → 200, H1 = "John 3:16-17 — Reformed Perspective". /sermons/pricing, /sermons/help → 200. New SermonAppHeader screenshot-verified across desktop + mobile + dropdown-open this morning. Auth-aware chrome variants (signed-in titles/templates/community) NOT visually verified post-deploy.
4Onboarding / billing10/10✅ passStripe webhook inbox last 7d: 27/27 succeeded, 0 abandoned. Live click-through completed end-to-end (signup → confirm → first sermon → upgrade → Pro tier flip → quota refresh). 2 active Pro subs. NEW: 60/month derivative cap live — worst-case spend at cap ≈ $2.10/user, preserves $16+ margin/user.
8Marketing funnel10/10✅ pass340 programmatic passage × tradition pages still serving (sitemap 673 URLs total). Title generator dropdown now shows canonical 17 (was 20 incl. non-orthodox). Saved Titles add a discoverability surface on the dashboard. Cross-property links from CWA homepage + footer + blog still intact. Pricing accurate, $19.95/mo + $199.50/yr visible.

Product Health: (9+9+10+10) / 40 = 95% — flat vs v9.

Ops Instrumentation (Dims 3, 5, 6, 7, 9)

#DimensionScoreStateEvidence
3Knowledge accuracy9/10✅ passvalidate_product_knowledge(): 0 CRITICAL, 164 WARNING (bulk-update warnings, all baseline). 4 knowledge docs updated today (funnel, features, overview, plus this report). Founder timeline corrections shipped earlier (PR #379).
5User docs8/10✅ pass/sermons/help → 200. Help link added to user-menu dropdown in new SermonAppHeader (better discoverability). Help portal docs.churchwiseai.com rebuild gated on pnpm derive --check (clean today). Same gap as v9: no in-app search/accordion.
6Drift / issues7/10⚠ warn2 open P0 ops_errors persist on /api/stripe/webhook from 2026-05-08/09 — checkout.session.completed missing fields: churchId=undefined. Confirmed not SermonWise — both belong to CWA Pro Website signups (separate workstream). 0 new P0 errors from today's click-through or deploys. P1 errors = 0 in last 7d (was 18 in v9, all were duplicate OUTREACH-BACKLOG reminders — those have aged out).
7Analytics / monitoring8.5/10✅ pass (with caveat)All 6 funnel events wired. 5/6 verified live via founder click-through 2026-05-11 (signup_form_submitted, first_app_visit, first_sermon_generated, upgrade_clicked, upgrade_completed — properties + identity stitching all correct). signup_email_confirmed fixed via server-side capture (PR #398) but not yet re-tested on a real signup. NEW PostHog events: saved_title_used + saved_title_removed (PR #402) — wired but no real user data yet. Margin tracking: derivative cap surfaced via 429; usage info now includes derivativeCount/Limit/Remaining for the dashboard.
9Agent monitoring7/10⚠ warnsermonwise-signup-checkout last_run 2026-04-24 (going stale at 17 days). sermonwise-posthog-funnel last_run 2026-05-11 ✓. 3 specs still null: sermonwise-generate, sermonwise-help-page, programmatic-passage-pages-contract. 3 new features shipped without specs today: SavedTitlesSection, auth-aware chrome, derivative-cap-429-UI. New community-post-derivative.contract.test.ts exists but gated on SERMON_TEST_SESSION_TOKEN (skipped in CI).

Ops Instrumentation: (9 + 8 + 7 + 8.5 + 7) / 50 = 80% — −5pp from v9.

The Ops dip is structural: today's velocity (5 PRs) outpaced regression-test writing. Bugs from v9 closed; new test debt opened. This is the predictable trade you accept on a "solo-founder shipping day."


Delta vs v9 (per-dimension)

Dimv9 (morning)v10 (evening)ΔWhy
D1 Journeys990Critical paths green; new surfaces lack specs
D2 Viewports990Header screenshot-verified; auth-aware variants unverified
D3 Knowledge990Stable
D4 Billing10100Already at ceiling; cap is a margin improvement
D5 Docs880Stable
D6 Drift67+1P1 = 0 (was 18 dups). 2 P0 still open (non-SW)
D7 Analytics7 (caveat)8.5+1.5Funnel verified 5/6, server-side fix shipped for the 6th
D8 Marketing10100Already at ceiling
D9 Monitoring87−13 new unspeced features; checkout spec drifting toward 30d staleness

What closed since v9

v9 findingStatus now
signup_email_confirmed event didn't fire (P1)✅ Fixed — server-side capture in PR #398, merged + on prod. Awaiting first real signup to confirm.
handle_new_user trigger drops app_source✅ Fixed — migration applied, 10 customer rows backfilled (5 sermon_starter, 5 illustratetheword). New signups will tag correctly.
social_media derivative truncates on JSON parse✅ Fixed — max_tokens 2048 → 5120 (PR #398).
Community POST 500 on derivative sharing✅ Fixed — 400 guard at API + UI hides share button on derivatives (PR #399).
Title generator dropdown shows non-canonical traditions✅ Fixed — now sources canonical 17 from theolenses.ts (PR #399).
Saved titles only visible via toggle on /sermons/titles✅ Fixed — SavedTitlesSection on My Sermons dashboard (PR #402).
Signed-in users see marketing chrome on /titles✅ Fixed — server-side auth check + SermonAppHeader on signed-in (PR #404).
No margin guardrail on Pro derivatives✅ Fixed — 60/month cap + atomic RPC + refund-on-failure (PR #405).
feedback_password_reset_revokes_sessions.md✅ Memory saved — future automation will use generateLink or storageState instead of password reset.

What's still open

P1 (do this week)

  1. Re-verify signup_email_confirmed — single real signup against prod confirms the server-side capture works. The 5/6 from this morning + 1 more = full ledger. Run when convenient.
  2. Refresh sermonwise-signup-checkout — last green 2026-04-24, drifting toward 30d stale. Re-run the spec against prod to re-stamp.
  3. Investigate the 2 open P0 ops_errors on /api/stripe/webhook (churchId=undefined). Confirmed NOT SermonWise — they're CWA Pro Website signups. Worth fixing on the Pro Website side regardless.

P2 (good hygiene)

  • Stamp programmatic-passage-pages-contract, sermonwise-generate, sermonwise-help-page — three specs sitting at last_run: null for weeks.
  • Write specs for the three new surfaces shipped today: SavedTitlesSection (auth + render + delete), auth-aware chrome (verify SermonAppHeader appears on signed-in /titles), derivative cap (429 + UI banner at limit).
  • Production smoke last_run 2026-04-24 — re-stamp.

Carry-forward (Phase 3 of the original launch plan)

  • Read essays 02, 03, 04 + decide on 5 verification flags
  • Advent 2026 Starter Pack (lead magnet) — not yet built
  • Email drip (signup → confirm → 7-day nudge → 14-day Advent) — not yet built

Margin posture (NEW this run)

Per Pro user/mo
Gross revenue$19.95
Stripe fees−$0.88
Net$19.07
15 sermons @ ~$0.05 each−$0.75
Headroom for derivatives$18.32
Max derivative spend at new cap (60 × $0.035 worst-case)−$2.10
Guaranteed floor margin per Pro user$16.22

Cap is a margin guardrail, not a usage limit for normal pastors: a power user generating 3 derivatives per sermon × 15 sermons = 45/mo, well under the 60 cap. The cap activates only on misuse (abusive scripts, runaway client-side retries, etc.).


Soft paid ($20–50/day): ✅ READY. Funnel verified, conversion event works server-side, margin guardrail in place. Drive cold traffic now.

Scale paid ($300+/wk per Phase 4 of the launch plan): READY-WITH-CAVEAT.

  • Required before scaling: one more real signup to verify signup_email_confirmed fires (single click-through, ~5 minutes).
  • Required before scaling: ≥7 days of clean funnel data to baseline conversion rate.
  • Investigate the 2 P0 webhook errors (CWA, not SW) so support response is ready if a paying customer hits the same path.

Verification trail

  • Live PostHog query (this morning): all 5 funnel events fired with correct properties + identity stitching
  • Live Stripe webhook inbox: 27/27 succeeded last 7d, 0 abandoned
  • Live route fetches: /sermons 200, /sermons/passage/john-3-16/reformed 200
  • DB checks: 4 sermon_starter profiles (post-backfill); 5 illustratetheword (post-backfill); 0 derivative_count > 0 (cap fresh)
  • validate_product_knowledge(): 0 CRITICAL
  • All 5 PRs from today have green CI + paired knowledge sync

Compared to where we started (2026-05-07 audit)

2026-05-07 (original audit)2026-05-11 evening (now)Net
Product Health57.5%95%+37.5pp
Ops Instrumentation58%80%+22pp
StatusNEEDS WORKREADY (with 1 verification step)
Paid-ad ready?NO (blind funnel, no analytics)YES soft / YES scale w/ caveat

Four days of work, four major themes closed: measurement (funnel), SEO (340 pages), conversion (UX + chrome + saved titles), margins (derivative cap + trigger fix + 10-row backfill).