Toby — Weekly Strategist Memo
Read of the week
The headline shifted. For weeks the story has been churn-and-cliff; this week it's acquisition collapse. New active subs / 7d printed 10 — the lowest ever — while cancellations held at 32. Net contraction is now ~−22 paid subs/wk, quiet but real. Top of funnel is louder (+3.6% WoW signups) but softer (−61.2% YoY, worse than 5/6's −58.3%). Combined with the 4th consecutive week of recurring CWS "blank page" complaints, the SW boot-path regression hypothesis is no longer speculative — it's the most likely root cause and it's costing us dozens of paid conversions per week.
Three small positive signals worth chasing: 9 queued cancels reversed with no save flow shipped (something organic is working — find it); May-26 cliff dropped $4,040 → $3,135 as a chunk of renewals rolled forward (replicate the conditions for Feb-27); and WAU/MAU inched to 85.3% — the habit-loop cohort is intact, the leak is in the broader 30d tail.
Five moves below. Ordered by leverage × ship-ability in <2 weeks.
The five moves
1 · Unblock the free-to-paid upgrade path (the "Axel fix")
- Problem
- Free-tier users who want to pay can't find a monthly option from inside the product. The CWS comment isn't a one-off — it's a recurring theme on review pages and it shows up in our paid-sub print: 10 new actives is acquisition death even before churn enters the equation.
- Hypothesis
- A single visible "Upgrade" entry point on the new-tab, routing to a pricing page that shows monthly and yearly side-by-side (not one-or-the-other), recovers 1.5–2× the current new-paid rate within 4 weeks.
- Smallest test
- Ship a Chrome update that adds a single "Upgrade" pill to the new-tab top bar (no behavioural change for already-paying users). Route to
/pricing?ref=newtab. Make sure both$5/moand$48/yrare visible above the fold. Instrument click → checkout funnel. - Success metric
- Weekly new active subs (baseline 10). Target: ≥25/wk within 4 weeks of ship. Secondary:
/pricing?ref=newtabclick-through rate > 1.5% of new-tab opens. - Cost
- S — UI pill + pricing page tweak + a CWS update. Ship in one sprint.
2 · Service Worker boot-path forensics (and a Beta-channel hotfix)
- Problem
- If new installs are landing on a blank new-tab because of a Manifest V3 service-worker registration/lifecycle failure, organic signups don't convert and CWS rating slowly bleeds. The YoY gap widening (not narrowing) is the smoking gun.
- Hypothesis
- A specific SW lifecycle change between our last "healthy" install cohort (mid-2024) and today drops the new-tab override on cold installs in some Chrome builds. Fixing it recovers 20–40% of organic signup→activation, which alone would 2–3× the new-paid rate.
- Smallest test
- (a) Bisect
service-worker.jscommits between mid-2024 and today on a clean Chrome profile — reproduce the blank-page condition. (b) Wire a minimal telemetry beacon (sw_boot_ok) to the new-tab so we can measure cold-install activation rate going forward. (c) Ship the fix to Beta channel first; measure activation delta vs Stable for 7 days. - Success metric
- Beta vs Stable cold-install activation rate (proxy:
sw_boot_okbeacon / install). Target: ≥15 pt activation gap. Secondary: weekly signups recover toward the 8-week median (~830) once shipped to Stable. - Cost
- M — eng diagnostic time + telemetry wire-up. Bisect should be 1–2 days; fix scope unknown until reproduced.
3 · Save-flow MVP, instrumented from day one, pre-staged for Feb-27
- Problem
- We don't have a working save funnel. When the Feb-27 mega-cliff hits in 9 months, we will catch zero. Industry benchmark for a basic cancel flow is 15–30% save; a sophisticated one hits 30–42%. We're catching 1.3% — which is more likely "the flow isn't wired" than "we suck at retention".
- Hypothesis
- A minimum-viable cancel interstitial offering pause for 1 month OR 50% off for 3 months, presented at the moment of cancel click and logged to
retention_offerson every impression, captures 15–20% even with no personalization. - Smallest test
- Build a two-card interstitial that intercepts the cancel button. Log impressions + accepts + reasons. A/B half the cancel population against the current straight-cancel path for 4 weeks. Don't optimize copy — just measure baseline.
- Success metric
- Retention-offer accept rate ≥ 10% within 30 days of ship (a 10× over current 1.3%). Secondary: 12w cancels trending below 600.
- Cost
- M — billing-page UI + Stripe API for pause/discount + 2 new
retention_offersinsert paths.
4 · Reverse-engineer the 9 saves we got for free
- Problem
- Nine paying subs flipped from queued-to-cancel back to active this week, and a chunk of May renewals rolled forward without intervention. That's free retention signal — if we can identify the behavioural pattern of "reverters" vs "completers", we can engineer it deliberately for the Feb-27 cohort.
- Hypothesis
- Reverters re-engaged with a specific feature (most likely: opened/edited a saved collection) within the 2-week pre-renewal window. The save isn't random — it's a re-discovered habit moment.
- Smallest test
- One-time analysis query: pull the 9 user_ids that exited the queued-to-cancel pool in the last 14 days; pull a matched cohort of 50 who churned in the same window; compare last-30d session counts, collection-open events, tab-saves, and tenure. Look for the variable with the cleanest separation.
- Success metric
- Identify ≥ 1 behavioural variable (e.g. "≥3 collection opens in last 14d") that distinguishes reverters from churners at p < 0.1. Feeds directly into idea 3's targeting and a future "we noticed you opened X yesterday — pause instead?" save-flow variant.
- Cost
- S — one analyst-day in Postgres + Amplitude.
5 · One targeted reactivation email to "real" dormant users
- Problem
- 305K dormant accounts is 437× our weekly organic signups. Last week's memo flagged the pool; this week the pool grew. We've never sent a single deliberate reactivation message.
- Hypothesis
- A single, plain-text email to dormant users who were real users at their peak (≥5 collections, ≥50 tabs saved lifetime) — subject: "Your collections are still here" — gets a 2–10% 14-day return rate, top decile ~17%. Even 3% return on a 50K-cap send is 1,500 returners, vastly more than weekly organic activation.
- Smallest test
- Segment:
last_active_at < now() - 90 daysANDcollection_count ≥ 5ANDtabs_saved_lifetime ≥ 50. Cap first send at 5K. Hold out 1K matched control. Plain-text, no marketing copy, no promo — just "your data is still here, here's the link". Measure 14-day return. - Success metric
- 14-day return rate ≥ 2 pts above control. Secondary: paid-tier conversions among returners (any > 0 is informative given our 10/wk baseline).
- Cost
- S — one SQL segment, one email send, two-week wait.
Retired or deferred
- Trialing-zombie reconciliation (8,833 rows) — still important plumbing, but it's a back-end hygiene task with no MRR impact this week. Re-prioritize when it blocks measurement of a shipped funnel.
- Oct-2026 cliff dry-run — superseded by idea 3 (save flow). The dry-run only makes sense once the save flow exists.
- Educator vertical wedge — still deferred. Acquisition fix (idea 1, 2) must land first, otherwise we'd be acquiring into a leaky bucket.