AstroMatrix Retention Audit
Engagement & retention audit · read-only · 19 Oct 2026

AstroMatrix Retention Audit

Install cohorts 27 Jul – 11 Oct (GA4, ~37,000 installs) 124,196 tracked accounts followed 24 Sep → 13–17 Oct No code, data or production changes

The central question, answered from the data

The strongest pattern is that users who come back are the ones using astrology that changes with time: the Moon, forecasts, today's transits, and their own chart read against them. They come back within the first two or three days. At the same level of early use, users who stayed had used these timing features far more. Users who left had spent their visits on readings that don't change, such as a full Matrix reading, a tarot spread or a generated report. Some of them may simply have got the answer they came for.

This is an association, not a demonstrated cause. The data can't yet show whether a new user who opens the Moon screen on day 0 comes back on day 1. That is the measurement gap to close (backlog #4).

Saving a second chart and exploring many sections both look like activation, but neither holds up as a lever once you control for how active someone already was. Most users who disappear do so abruptly and early: 78% of installs are not back the next day.

Review decisions · 19 Oct

A · Ten findings

Ranked by how much of the user base each one touches and how strong the evidence is. Every percentage here is an association. None is shown to be causal.

  1. The biggest loss is the first night. Nothing else comes close. Of each week's ~3,200 new installs, about 22% are active on day 1, 11% on day 7, 6% on day 30 and 4–5% on day 60. Counting activity any time in the week, 26% of Android and 38% of iOS installs come back in week 1, and 15% / 23% in week 4.
    GA4 cohort report, weekly cohorts 27 Jul – 5 Oct, n ≈ 37,000 installs; only complete weeks pooled. The register's earlier "59% last seen within an hour of install" (ISSUE-621) fits this shape.
  2. Depth predicts staying, and the effect holds within every account age. Among accounts created 1 Aug–23 Sep, the share active again in the next ~3 weeks rises from 17% (1–4 lifetime content views) to 28% (5–19), 48% (20–59) and 72% (60+). The table in the brief reproduces with the same shape: 13.7 / 22.2 / 35.4 / 55.4 / 80.6%.
    Stat snapshots of 24 Sep and 13–17 Oct, 124,196 accounts. "September visits" in that table is a lifetime total at 24 Sep, and "October active" means any new activity between the two snapshots (a 20–23 day window), not calendar October.
  3. Timing features have the strongest association with returning. That is not proof they create the habit. Comparing new accounts at the same depth, Moon users were active again 39 / 47 / 64 / 82% across the four depth bands, against 16 / 25 / 42 / 65% for non-users. Forecast-calendar users show +14 to +17 points. New users whose dominant mode was Timing stayed active 47.5% of the time, against 39% (Self) and 29.5% (Tarot).
    24,276 new accounts, compared within depth bands to remove "heavier users touch more screens". Other differences between users are not controlled, so this does not predict what nudging someone to the Moon screen would do. Once active, 70–76% of Self and Timing users repeat those modes, against about 40% for Relationship, Tarot and Growth.
  4. Reading-heavy, one-off features are associated with not returning at the same depth. Among new accounts at equal depth, users of Matrix/Facets (−10 to −17 points), Journal (up to −12) and AI reports (−5 to −7) were less likely to come back. Tarot-dominant accounts go dormant most often: 60% overall and 70.5% of new ones. This does not mean the readings are bad or need more engagement mechanics. People who came for one specific answer may leave satisfied once they have it, and the data can't tell those two cases apart.
    Same depth-banded comparison. At 5–19 views, new users who went dormant had used Matrix 65% (vs 45% for those who stayed) and Journal 48% (vs 31%).
  5. Breadth is not activation. Sampling many sections shallowly predicts leaving. At 5–19 lifetime views, accounts that touched 1–2 of the five intents were active again about 50% of the time. Those that touched 3–4 were active 35–36% of the time. At 20–59 views, two intents gave 71% against 56% for four. This looks like the "tourist" pattern already described in the modes doc.
    124,196 accounts, breadth × depth. So "engagement with multiple categories predicts better retention" is false here once depth is held fixed.
  6. Saving a chart marks engagement. It does not cause it. Among accounts at least 45 days old, a chart made in the 14 days before 24 Sep went with 67% later activity (1–4 views). Any journal action alone went with 69%. Neither went with 32%. For new users, a second chart in the first 24 hours adds only 3 points (28.5% vs 25.2%). The steep "charts held" gradient is partly caused by active users adding charts during the window: 7.5% of active accounts did, against 0.2% of dormant ones.
    Age-controlled precedence test, n = 102,824. 52% of second charts are added within one hour of the first, during setup. This agrees with STRATEGY §6.1, which already flagged reverse causation for purchases.
  7. Coming back within 72 hours is the clearest early marker. We can only see it for a small minority. New accounts with a saved action 24–72 h after signup were active later 46% vs 17% (1–4 views) and 42% vs 28% (5–19 views). But only 777 of 20,231 new accounts (3.8%) leave any saved trace in that window. Plain app opens can't be tied to an account at all.
    Chart and journal timestamps. This is a lower bound, because reading without saving leaves no per-account record. See measurement gaps.
  8. Dormancy is abrupt and mostly shallow. 57% of tracked accounts did nothing in the window. 52% of these had fewer than 5 content views ever, and former heavy users are only 2.4%. Of dormant users with journal history, just 8% were declining month on month. 61% were flat or rising into September and then stopped. Their last saved action was more often a full transit report (60% vs 53%) and less often a saved piece of content (17% vs 27%).
    71,236 dormant accounts. Journal-based shape uses 3,184 dormant and 6,584 retained accounts with 3+ rows. The free-report cap is not a cliff: activity rises steadily from 0 to 8+ reports with no drop at #5.
  9. Non-English and South Asian installs retain at a fraction of the core. D7: English 12.5%, Spanish 8.4%, French 6.9%, Arabic 5.8%, Russian 2.4%. By country: US 14.1%, UK 14.6%, Australia 17.1%, India 2.4%, Pakistan 2.8%. Journal prompts, tarot card traits and AI reports are English-only (ISSUE-379, ISSUE-406, FEATURE-37). About 20% of installs are non-English.
    GA4 cohorts 17 Aug – 27 Sep, ~20,000 installs. The account-level data agrees: at 5–19 views, English 43% active vs French 28% and Turkish 17%, on small samples.
  10. Notifications reach many users but rarely bring them back, and the daily surface barely changes. In 28 days, ~29,800 Android users received ~1.05M notifications (≈35 each). 3.3% were opened and 46% dismissed. Notification taps start at most ~10% of sessions (53k of 533k). Users with transit alerts on were active 5–11 points more at low depth. The new daily "What Matters Now" panel is in 11.1.8, which is not released, and the rework that makes it change every day is in no build. Even that rework, read from the code, keeps the same lead insight for weeks.
    GA4 events (iOS does not log receipts). The opt-in comparison is correlational. Release state is from the Flutter repo history.

B · Lifecycle funnel

New installs (GA4, every platform user, by week of first open)

StageAndroidiOSReading
Weekly installs (first open)~1,700~1,650~450 a day in total; 12,630 first opens in the last 28 days
Day 1 active18–23%24–32%The largest single loss
Day 7 active7–10%9.5–22%
Day 30 active4–6%5–15%Mature cohorts only (27 Jul – 7 Sep)
Day 60 active2.6–3.7%3.7–7.7%27 Jul – 10 Aug cohorts
Active in week 1 / 2 / 4 / 826 / 19 / 15 / 10.5%38.5 / 31 / 23 / 16%Pooled; complete weeks only (n₀ 5,400–17,800)

The 7 Sep iOS cohort was unusually strong (D7 21.6%) across the US, UK and Canada. I could not find the cause in GA4; it isn't a source or country change.

Whole active base

MeasureValueNote
Daily / weekly / 28-day active users~12,100 / 39,200 / 81,500GA4 on 18 Oct. 28-day actives were 87,300 on 20 Aug, a gradual decline
Days active per monthly user~4 of 28DAU ÷ MAU ≈ 15%. The typical user is an occasional checker, not a daily one
Content views per active tracked account in the windowmedian 10 (p25 3, p75 33, p90 94)~23-day window

Stage movement, 24 Sep → 13–17 Oct (tracked accounts)

Rows are lifetime content views at 24 Sep. Columns are what each account did in the next ~23 days. "Visitor" means opened the app but read no content. Counts first, row % after.

Lifetime stageAccountsDormantVisitorLight 1–4Regular 5–19Heavy 20+
0 views24,27218,661 · 76.9%1,885 · 7.8%1,460 · 6.0%1,510 · 6.2%756 · 3.1%
1–430,71121,514 · 70.1%1,669 · 5.4%2,970 · 9.7%3,041 · 9.9%1,517 · 4.9%
5–1937,96421,348 · 56.2%1,770 · 4.7%4,145 · 10.9%6,096 · 16.1%4,605 · 12.1%
20–5921,0737,983 · 37.9%839 · 4.0%2,122 · 10.1%4,016 · 19.1%6,113 · 29.0%
60+10,1761,730 · 17.0%226 · 2.2%633 · 6.2%1,444 · 14.2%6,143 · 60.4%
All124,19671,236 · 57.4%6,389 · 5.1%11,330 · 9.1%16,107 · 13.0%19,134 · 15.4%
Same, by account ageAccountsDormantRegular + HeavyAt 5–19 views: active
New (created 1 Aug – 23 Sep)24,27670.9%19.1%27.5%
Mid (23 May – Jul, the Flutter switch-over)29,17377.2%14.6%21.6%
Established (before 23 May)70,67244.5%37.3%61.3%

Established accounts still on the current app are survivors: they have already come back across the migration. So the gap partly reflects who is left, not only how the product treats them. Reactivation counts are under Dormancy & reactivation.

C · Feature scorecard

"Repeat" is the share of window users who used the feature 3 or more times in the ~23 days. "Same-depth association" compares new accounts (created 1 Aug – 23 Sep) that had used the feature with those that hadn't, within the same lifetime-depth band. It is shown as active-again % for users vs non-users at 5–19 and 20–59 views. Features marked † were only instrumented on 30 Aug or launched on 11 Sep, so their comparison still favours recently active users and is not a clean read.

FeatureEver used (tracked)Used in window (of active)Repeat ≥3Same-depth: 5–1920–59Observed friction
Moon15.0%24.7%38.6%47 vs 2564 vs 42Lunar notifications route here
Forecast calendars13.6%21.6%43.4%41 vs 2660 vs 45Reached from a home tile or "see all"; ISSUE-387: ingress alerts fire ~6 h early
Transit / current-planets chart †8.3%24.3%46.2%50 vs 2667 vs 44
Daily screen46.0%43.7%57.6%26 vs 3049 vs 43What Matters Now unreleased (11.1.8); per the code, even the pending daily ranking keeps the same lead insight for weeks
Interpretation reads56.7%67.9%74.1%28 vs 2448 vs 43Content view limit from session 4
Chart switcher35.4%31.7%55.5%35 vs 2556 vs 44
Birth chart view †21.5%52.0%61.6%40 vs 2360 vs 40
Solar / lunar return, progressed, draconic †2–3%2–4% each28–44%35 vs 2768 vs 47Two taps (Explore all) or chart dropdown
Synastry / composite chart †4.5%11–13%34–40%40 vs 2761 vs 46ISSUE-743: black screen after adding a person
Astrocartography / relocation †1.3%8.1%30.0%–72 vs 47ISSUE-374 (empty map counted as success), ISSUE-631
Journal prompts tab †2.7%17.3%35.3%35 vs 2761 vs 46English-only (fallback fix 462e2bd5); 80% of text is the transit list (UX-15)
Relationship Matrix20.4%15.7%55.2%26 vs 2847 vs 4872% of 2+-chart accounts never open it (modes doc §1.11)
Add person13.1%8.3%34.1%27 vs 2846 vs 48Registration needed; more than 5 profiles needs a subscription
Tarot14.7%15.3%71.1%22 vs 2946 vs 49ISSUE-511, ISSUE-611 (same cards repeat), ISSUE-730 (spread rotation never ran); traits English-only
AI reports screen8.4%9.2%58.6%21 vs 2844 vs 495 free; English-only (FEATURE-37)
Journal28.0%19.3%36.5%21 vs 3344 vs 53
Matrix / Facets58.7%50.6%56.9%25 vs 4247 vs 57Counter mixes natal and transit categories (the query string is dropped)
Harmonizer2.4%3.0%9.5%––Very low repeat use

Unavailable vs ignored. What Matters Now, Important Birth Aspects and Friends-in-search are in 11.1.8, which has not been released, so they are unavailable, not ignored. Every listed feature is reachable from Home in 1–2 taps in 11.1.7, and none is hard-paywalled.

D · Journeys and mode transitions

The brief's five modes are mapped from screen use as follows. Self: birth chart, Matrix/Facets. Timing: daily, transit chart, Moon, forecasts, returns. Relationships: relationship Matrix, synastry, composite, harmonizer. Tarot/Reflection: tarot, journal. Growth: progressed, draconic, astrocartography, reports. "Newcomer" means fewer than 5 content views. This is not the same taxonomy as five-user-modes.md, which treats Relationship as a cross-cutting state rather than a mode. Both are shown where they disagree.

Transition matrix, all tracked accounts (row %)

Rows are the dominant mode over the lifetime at 24 Sep. Columns are the dominant mode in the next ~23 days. "Light" means active with fewer than 5 content views.

From \ tonSelfTimingRelat.TarotGrowthLightDormant
Newcomer64,9657.33.10.60.90.315.169.6
Self29,51427.48.21.31.70.813.642.4
Timing16,56412.724.01.22.20.814.837.4
Relationship4,12213.47.79.12.21.411.750.7
Tarot8,2757.74.71.010.70.810.560.2
Growth75620.613.01.93.812.610.132.5
Dormant share by starting modeNew (Aug–Sep 23)Mid (May–Jul)Established
Newcomer81.2%86.2%59.2%
Self60.8%66.7%25.3%
Timing52.5%57.9%27.2%
Relationship64.0%74.3%35.0%
Tarot70.5%79.0%37.6%
Growth51.8% (n=282)34.4% (n=64)19.0%

Mode change is mostly not abandonment

Among accounts whose dominant mode changed (with 5+ views in the window):

  • Self: 83% still used Self.
  • Timing: 81% still used Timing.
  • Relationship: only 52% still used it.
  • Tarot: 54%.
  • Growth: 47%.

Self and Timing get added to. The other three are dropped about half the time.

Which modes go together

Among accounts active in the window, users of Relationship, Tarot and Growth almost all also used Self (90–96%) and Timing (90–92%). Self and Timing are the core; the other three are add-ons to it, not separate paths. Of active non-users, 53% tried Self in the window and 46% tried Timing, against 13–18% for each of the other three.

Retained vs disappearing new users, matched on early depth

New accounts with 5–19 lifetime views at 24 Sep. Left: active with 5+ views in the window (n = 1,464). Right: dormant (n = 6,080).

Had used, by 24 SepStayedWent dormant
Moon16.1%7.1%
Forecast calendars10.6%6.0%
Saved a piece of content9.2%4.7%
Chart switcher30.8%20.3%
Matrix44.6%64.9%
Journal30.5%47.6%
Tarot16.7%23.6%

The typical retained path: birth chart → interpretations → the daily screen → Moon or forecasts → back within a few days to check what changed, sometimes switching to a second chart. The typical disappearing path: birth chart → a long Matrix reading, a tarot spread or a generated report in the first session(s) → no further visits. That may mean no timing hook, or simply that their question was answered. The counters store totals, not order, so these paths come from comparing who used what, not from per-user sequences. See measurement gaps.

Dormancy and reactivation

Segment (lifetime use at 24 Sep)AccountsDormant in windowShare of all dormantRealistic reconnection
Registered, never opened content24,27276.9%26.2%A single "your Moon this week" or today's transit, not another reading
Tried the birth chart / self only (<5 views)10,57573.8%10.9%Timing hook tied to their chart: "a transit to your Sun this week"
Other light use (<5 views)16,22165.4%14.9%Same
Mixed mid use (5–59)41,77448.4%28.4%Forecasts / calendar; what changed since they left
Relationship-focused (≥40% of use)8,50767.5%8.1%Relationship transits ("this week between you and X")
Tarot / reflection-focused6,97966.5%6.5%Fixing repeated cards and spread rotation first (ISSUE-611, ISSUE-730)
Timing users with repeat use (20–59)5,69232.0%2.6%Daily panel that actually changes (11.1.8+)
Former heavy users (60+)10,17617.0%2.4%Personal outreach; the Discord invite returned 5.35% (OUTREACH.md)

UX and technical friction

Confirmed defects (register)

  • ISSUE-171: 48,511 accounts opted in to alerts with no push token, so they can't receive any.
  • ISSUE-283: background-message crash; ISSUE-387: ingress alerts ~6 h early.
  • Code reading: a notification tap on cold start is dropped if the app opens on setup or the chart picker. A tap on an older notification can open the newest one.
  • ISSUE-743: black screen after adding a person; ISSUE-420: Android back does nothing.
  • ISSUE-374: an empty astrocartography map is counted as success; ISSUE-631: map report tap shows nothing.
  • ISSUE-511 / ISSUE-611 / ISSUE-730: daily tarot repeats cards, and spread rotation has never run.
  • Untranslated: prompts, tarot traits, AI reports (ISSUE-379, ISSUE-406, ISSUE-757, FEATURE-37, FEATURE-45).

Design hypotheses (untested)

  • Notification permission is requested with no explanation the moment Home first loads, right after setup (ISSUE-621 is already designed to measure this).
  • ≈35 Android notifications per receiver per 28 days with a 3.3% open rate suggests volume is drowning relevance.
  • The content view limit (from session 4, after 7 items) may end sessions for the users who are just forming a habit. 18,280 users saw a paywall in 28 days. This can't be tested per user until 11.1.8's close events ship.
  • Onboarding is short (name and date required, time optional), so setup is not the barrier. Per the modes doc, stalled accounts already hold charts.
  • Web to app: 3,808 web users clicked an app link in 28 days, against ~123,000 web first visits. Most web traffic is low-engagement "Direct" (11% engaged).

E · Prioritised backlog

Ordered as agreed in the 19 Oct review. bug = confirmed defect, opportunity = measured gap or built-but-unshipped work, experiment = mechanism not yet tested, so ship it only behind a holdout. Existing issues are cited so nothing is duplicated.

#ActionTypeUsers affectedEvidenceComplexityBehaviour that should change → how to measure
1Release 11.1.8 (What Matters Now, Important Birth Aspects) after normal release checks and per-platform status verification. Do not hold it for #2.opportunityAll ~81k MAU; the daily screen reaches 44% of active usersStrong association (finding 3)Low: already builtMore users open Daily on several separate days → GA4 daily_card_tap users; D7/W4 for post-release vs 11.1.7 install cohorts (a before/after, so confounded by season and sky)
2Ship a Daily ranking that genuinely changes. The pending version keeps the same lead insight for weeks, so it needs an acceptance rule: the lead item changes when something in the user's sky actually begins, peaks or ends, and is never just rotated to look new.opportunitySameCode reading of the pending ranking; finding 10MediumUsers see a materially new lead item on days when their sky changes → share of days with a new lead item per user (logged), and Daily return frequency
3Fix notification delivery and routing: missing tokens, background crash, early ingress alerts, lost cold-start taps, taps opening the wrong notificationbug48,511 opted-in accounts with no token; every notification tapConfirmed in the register and the codeMediumOpted-in users receive alerts and land on the right screen → notification-open users, notification-started sessions; the ISSUE-171 count falls toward 0
4Close the measurement gap, alongside 1–3 rather than after them. (a) Record per account, per day, which screens were used, by diffing the screen counters the app already sends on every sync. This is a server-side change with no app release. (b) Register the ISSUE-621 GA4 dimensions once Admin API access exists. (c) Read setup-step drop-off from Grafana once access exists.opportunity~138k instrumented accountsConfirmed gap(a) low–medium; (b, c) low once access is grantedMakes "opened Moon on day 0 → returned on day 1" measurable per account; per-account D1/D3/D7 joinable to first-session features
5Experiment: give each new user a personalised reason to return tomorrow ("tomorrow the Moon enters your 7th house", "your Venus transit peaks Thursday") plus at most one well-timed next-morning alertexperiment~3,200 installs a week; 78% don't return on day 1Correlational (findings 1, 3, 7)MediumDay-1 return rises → randomised by install with a holdout: D1, D3, W1 by arm, read with #4(a)
6Fix tarot repetition and run spread rotationbug~15% of tracked accounts use tarot; 8,275 are tarot-dominantConfirmed defects (ISSUE-511, ISSUE-611, ISSUE-730)Low–mediumTarot users repeat across weeks → tarot repeat rate, tarot-dominant dormancy in the next snapshot pair
7Localise recurring content first: Daily panel, prompts, tarot traits, AI reportsopportunity~20% of installs are non-EnglishLarge gap: D7 2.4–8.4% vs 12.5% English. Country also differs, so not all of it is languageMedium–high (FEATURE-45/50/37)Non-English D7 moves toward English → GA4 cohort D7 by language, before vs after

Run only as holdout experiments, not assumed improvements

Not prioritised

Measurement quality and instrumentation gaps

IssueEffect on this audit
No account id in GA4 (user id unset; the API cannot return it)Install retention cannot be joined to features, charts or modes. All per-account work uses the tracked app base instead.
Per-screen counters are lifetime totals, with snapshots only on 24 Sep and 13–17 OctOnly one activity window (~23 days, not calendar October) can be measured. Sequences and first-session actions are invisible.
The sessions counter on each chart row is inflated ~20× (median 4.9 "sessions"/day vs ~0.23 in GA4)Unusable for visit frequency or days between visits. Probably the same add-on-sync pattern as ISSUE-360.
ISSUE-360 counter doubling; ISSUE-433 implausible counters0.9% of accounts doubled exactly and 0.6% jumped by 2,000+ views. Values over 1M were excluded. "Active" (any increase) is robust to this; magnitudes are not.
Per-chart-type views from 30 Aug; prompts tab from 11 SepThose features' associations still carry recency bias (marked † in the scorecard).
matrix/facets drop the categoryNatal and transit Matrix use can't be separated per account. GA4 shows the transit category is the larger one.
Restore diagnostic volume fell ~70% from 13 OctA logging change in 11.1.6+ as users updated, not a usage drop. Don't read it as activity.
Onboarding steps: Prometheus only (per worker, reset on deploy); the web funnel is unjoinable (ISSUE-539, 0% joinable)App onboarding step drop-off could not be measured. See blockers.
Web GA4 tag fires on unrelated sites (selectcuttimber.com, alodokter.com, …)Web user counts are contaminated. Needs a hostname filter before any web retention read.
Platform and app version are only known for recently active accounts; the push-token comparison is near-tautologicalNot used as findings.
Account creation dates rewritten for migrated rowsChart-timing tests exclude migrated rows (data-trap rule).

Blockers (reported, not worked around)

Method and definitions