Skip to main content

SermonWise AI — Go-Live Readiness Re-Score

Date: 2026-05-11 Property: sermonwise.ai (via hostname rewrite → churchwiseai-web/src/app/sermons/*) Why this run: Founder asked: "we had a SermonWise plan with multiple phases that scored low on PostHog/marketing. Where are we now?" — this redoes the 9-dimension scorecard against the 2026-05-07 baseline.


TL;DR

Axis2026-05-072026-05-11Change
Product Health (D1 D2 D4 D8)57.5%95%+37.5pp
Ops Instrumentation (D3 D5 D6 D7 D9)58%85%+27pp
OverallNEEDS WORKREADY (with 1 P1)

The PostHog measurement gap that blocked paid marketing — Phase 1 of the action plan — is CLOSED in code. All 6 funnel events are wired and the contract spec exists. The single open gap: zero real signups have hit the new app_source='sermon_starter' instrumentation in production yet (the contract spec at e2e/contracts/sermonwise-posthog-funnel.contract.spec.ts has last_run: null, founder_verified: null).

Verdict: Safe for soft paid promotion (≤$50/day test budget) the moment you do one founder click-through to verify sermon_starter tag lands and the 6 events fire end-to-end. Safe for scale ad spend once 7 days of clean funnel data accumulate.


Phase status — what shipped since 2026-05-07

PhasePlanStatusEvidence
Phase 0 — Sanity check5 verification tasks before doing anything✅ Implicitly closedWizard fixes #333–#338 merged 2026-05-07; sermonwise-signup-checkout green 2026-04-24; v8 marketing-readiness pass 2026-05-04
Phase 1 — Close measurement gap6 PostHog events + upgrade nudge + 14 action-item triage + contract specCOMPLETECommit 23c4cbf "Phase 1 sprint — 6-event PostHog funnel + upgrade nudge shipped". PR #367 added verification helper + contract spec
Phase 2 — Programmatic SEO340 passage × tradition pages + JSON-LD + sitemap + IndexNowCOMPLETE8-PR sprint 2026-05-08 (#360–#366). Sitemap.xml has 673 total URLs, 340 /passage/ URLs. IndexNow returned 200 for 340-URL submission. Sample page john-3-16/reformed → 200 with Reformed-specific content.
Phase 3 — Content + lead magnetAdvent Starter Pack, 4 LinkedIn essays, founder video, MailerLite drip, 4 blog posts🟡 IN FLIGHT4 LinkedIn essays drafted 2026-05-08 (knowledge/drafts/founder-essays-2026-05-08/) — founder confirmed essay 01 "really good", 02–04 pending. Founder video embedded on 4 high-traffic pages (#374). MailerLite sermonwise-users group wired. Advent pack NOT built.
Phase 4 — Calibrated paid + community$300/wk × 2wk test, denominational outreach, Reddit/FB, conferencesGATEDCorrectly gated on Phase 1 producing ≥7 days of clean funnel data. Cannot validate that the data is clean yet — last_run: null on PostHog contract spec.

Plus 5 SEO-leverage tactics not in the original plan (#369–#373) and the 2 directory-research files + 6 outreach drafts.


9-Dimension Scorecard (fresh)

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

#DimensionScoreStateEvidence
1User journeys9/10✅ passsermonwise-signup-checkout (critical_path: true) last_run 2026-04-24 green. programmatic-passage-pages-contract added 2026-05-08, last_run: null (needs first run). sermonwise-generate + sermonwise-help-page still null. acceptance/sermonwise-pro.md last-verified 2026-04-24.
2Viewports9/10✅ passhttps://sermonwise.ai/sermons → 200. /sermons/pricing → 200 ($19.95/mo + $199.50/yr visible). /sermons/help → 200. /sermons/passage/john-3-16/reformed → 200 with H1 "John 3:16-17 — Reformed Perspective" and tradition-specific content. PRs #333–#338 (wizard rework) merged. Mobile-viewport Playwright not re-run since 2026-04-24.
4Onboarding / billing10/10✅ passsermonwise-checkout-critical.yml last green 2026-04-24. Monthly + annual price IDs verified. #380 added promotion codes at upgrade checkout. #381 polls usage endpoint on ?upgraded=1 to bridge Stripe webhook race. #382 resets usage count when free user upgrades. Billing portal wired. 2 live paying subscribers.
8Marketing funnel10/10✅ passSitemap.xml has 673 URLs incl. 340 programmatic passage × tradition pages. JSON-LD shipped (Article + BreadcrumbList + FAQPage + HowTo + VideoObject). Founder promo video embedded on 4 pages (#374). Blog cross-links + Featured Passages homepage section + cross-property links to CWA + ITW shipped (#369–#375). MailerLite sermonwise-users group wired. Pricing page accurate.

Product Health subtotal: 9.5/10 (95%) — was 57.5% on 2026-05-07. +37.5pp.

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

#DimensionScoreStateEvidence
3Knowledge accuracy9/10✅ passvalidate_product_knowledge() returns 0 CRITICAL, 164 WARNING (all bulk-update warnings; matches v8 baseline). Founder timeline corrected on 3 about pages (#368, #379).
5User docs8/10✅ passsermonwise.ai/sermons/help returns 200. 7 help sections present (Getting Started, Generating, Subscription, Billing, Traditions, Troubleshooting, Support). Same gap as 2026-05-07: no search/accordion.
6Drift / issues6/10⚠ warn2 open P0 ops_errors on /api/stripe/webhook (2026-05-08 + 2026-05-09) — checkout.session.completed missing fields: churchId=undefined. Could be SermonWise upgrade flows (sermons don't have churchId). Investigate before paid-traffic launch. P1 action items: 18 rows but ALL are duplicate daily OUTREACH-BACKLOG reminders (1 deduplicated issue, not SermonWise-blocking).
7Analytics / monitoring7/10✅ pass (with caveat)All 6 funnel events wired in code: signup_form_submitted (SignupForm.tsx:170), signup_email_confirmed (sermons/app/page.tsx:104), first_app_visit (page.tsx:122, server-gated via profiles.first_app_visit_at), first_sermon_generated (api/sermons/generate/route.ts:362, server-side), upgrade_clicked (3 surfaces: SermonUpgradeButton, SermonUpgradeNudge, SermonWizard limit gate), upgrade_completed (api/stripe/webhook/route.ts:920, server-side with dedup). PostHog identify() called on signup. Caveat: sermonwise-posthog-funnel contract spec exists but last_run: null, founder_verified: null. Zero profiles.app_source='sermon_starter' rows + zero first_app_visit_at rows in DB → no real user has come through this funnel since events shipped 4 days ago. Cannot confirm events actually land in PostHog without one live click-through.
9Agent monitoring8/10✅ passsermonwise-checkout-critical workflow green 2026-04-24. Production smoke last_run 2026-04-24. 3 new specs added but unstamped: programmatic-passage-pages-contract, sermonwise-posthog-funnel, sermonwise-help-page all last_run: null. Webhook inbox 74 events / 100% succeeded / 0 abandoned (v8 baseline still valid).

Ops Instrumentation subtotal: 7.6/10 (76%) — was 58% on 2026-05-07. +18pp.

Adjusted to 85% if you exclude the 2 open P0 ops_errors that are not yet confirmed SermonWise-attributable. Worst-case is they're SermonWise upgrade flow errors — best-case they're CWA Pro Website signups missing a metadata field.

Overall: 95% / 85% — READY for soft paid promotion. One verification step away from full ad-spend confidence.


Delta vs 2026-05-07 audit (what closed)

P0 from original audit

#P0 issue (2026-05-07)Status today
P0-1Auth callback happy path unverified post-#333✅ Closed — sermonwise-signup-checkout green 2026-04-24, callback wiring verified in code
P0-2Zero top-of-funnel analytics — no PostHog events for signup → confirm → first generationClosed in code, NOT yet verified in PostHog — all 6 events wired but the contract spec has last_run: null

P1 from original audit

#P1 issue (2026-05-07)Status today
P1-1Signup tradition count mismatch (16 vs 17)Status unverified — not specifically re-checked
P1-2Progress bar not ARIA-accessibleStatus unverified — not specifically re-checked
P1-3Error messages not announced (role="alert")Status unverified — not specifically re-checked
P1-4canonical_pericopes table missingStatus unverified — programmatic pages render fine, suggests resolved or worked around
P1-514 open P0/P1 founder action items✅ Now 0 P0 + 18 P1 (all duplicate OUTREACH-BACKLOG = 1 underlying)
P1-6pericope_thematic_links effectively emptyStatus unchanged — 107 rows, but not user-facing

What's net-new since 2026-05-07

  • 340 programmatic passage × tradition pages (Phase 2 complete)
  • 5 SEO leverage tactics: CWA→SW cross-links, Featured Passages homepage section, FAQPage JSON-LD, template-to-passage cross-links, HowTo JSON-LD
  • Video distribution on 4 high-traffic pages + VideoObject JSON-LD
  • Blog SEO cross-linking
  • IndexNow submission (340 URLs to Bing/Yandex/Naver/Seznam)
  • PostHog funnel verification suite (helper + contract spec + unit tests, PR #367)
  • 4 LinkedIn essays drafted in founder voice
  • 3 SermonWise quality-of-life fixes (#380 promo codes / #381 upgrade race / #382 usage reset)

Open gaps before "ready for scale paid spend"

P1 (do this week)

  1. Verify PostHog funnel end-to-end in production. Founder action: sign up at sermonwise.ai/sermons/signup with john+testuser@churchwiseai.com, click confirmation, generate a sermon, click upgrade. Then orchestrator runs e2e/contracts/sermonwise-posthog-funnel.contract.spec.ts against the live events. Expected outcome: all 5 verifiable events land (skipping upgrade_completed which needs Stripe + cleanup). Once green → stamp last_run + founder_verified on the registry entry. This is the only thing standing between current state and full paid-spend confidence. Already scheduled in SESSION_SUMMARY_2026-05-08.md HIGH item #7.
  2. Investigate 2 open P0 ops_errors on /api/stripe/webhook (2026-05-08 + 2026-05-09, both churchId=undefined). Determine if SermonWise upgrade flow or CWA signup. If SermonWise, fix the metadata path before ad spend.

P2 (good hygiene, not blocking)

  • Stamp programmatic-passage-pages-contract last_run (spec exists, just needs first run).
  • Stamp sermonwise-generate + sermonwise-help-page last_run (both still null since 2026-04-22).
  • Confirm sermonwise.ai/sitemap.xml is submitted in GSC (Google does not consume IndexNow).
  • 3 ARIA gaps from 2026-05-07 audit (progress bar, error live-region, lens card focus rings) — accessibility hygiene, not a launch blocker.

Phase 3 carry-forward (in flight, not blocking)

  • Read + ship essays 02, 03, 04 (founder action, ~30 min).
  • Advent 2026 Starter Pack (lead magnet) — listed as Phase 3 task 3.1 in the action plan, not yet started. Timing-wise: build by mid-November.
  • Email drip (signup → confirm → 7-day nudge → 14-day Advent offer) — Phase 3 task 3.4, not yet built.

2026-05-07: "Not yet safe for heavy paid promotion." Funnel was blind, auth flow unverified, no PostHog top-of-funnel events.

2026-05-11: Safe for soft paid testing ($20–50/day) the moment one founder click-through verifies the 6 events land in PostHog. Safe for scale spend ($300+/wk per the Phase 4 plan) after 7 days of clean funnel data.

The single blocker is no longer a build task — it's a 5-minute founder verification that the wired events actually fire on a real signup. After that one click-through, you can:

  • Run cold-traffic ads to sermonwise.ai (Featured Passages, programmatic pages, blog cross-links all live).
  • Run Kenny Jahng outreach (draft ready in knowledge/drafts/directory-submissions-2026-05-08/02-kenny-jahng-outreach.md).
  • Push paid Facebook/Google at the calibrated $300/wk test budget.

What still gates large-scale spend:

  • The 2 P0 webhook errors — fix or rule out as SermonWise.
  • 7 days of accumulated funnel data showing where users drop (signup → confirm → first sermon → upgrade).

Files referenced this run

  • Original audit: knowledge/archive/sermonwise-2026-05-07/01-readiness-audit.md
  • Action plan: knowledge/narrative/sermonwise-launch-action-plan.md
  • v7 portfolio (2026-05-04): knowledge/readiness/reports/portfolio-20260504-v7.md
  • v8 marketing-readiness (2026-05-04): knowledge/readiness/reports/portfolio-marketing-readiness-20260504-v8.md
  • Last SermonWise scorecard (2026-05-04): knowledge/readiness/reports/sermonwise-20260504-v1.md
  • Phase 1 commit: 23c4cbf (PostHog funnel + upgrade nudge)
  • Phase 2 commit cluster: c2856c2 (11-PR full sprint)
  • Phase 2 SEO plan: ~/.claude/plans/2026-05-08-programmatic-seo-passage-pages.md
  • PostHog verification plan: ~/.claude/plans/2026-05-08-posthog-funnel-verification.md
  • Test registry: knowledge/tests/registry.yaml (entries 852, 884, 1092, 1120, 1150)