Chart Journey Brief
Developer brief · 2026-10-21 · register FEATURE-38, FEATURE-44

Chart Journey Brief

The poll winners mostly ask for things AstroMatrix already has. What's missing is a journey through them: an order, the connections between placements, and a reason why an item matters. This brief scopes the release and the small Flutter package Mark approved. Nothing here is built yet.

Mark's decisions and order

Revised 2026-10-21 after Mark's review. The Chart Journey direction is approved. The 11.1.9 release is not yet authorised. 11.1.9 is decided separately and is not held for Chart Journey work.

#WorkDecision
111.1.9: reconcile the missing What Matters Now fix, run regressionsDo now No release without Mark's approval.
2Real reading-open measurement, on the deviceRequired Before any Chart Journey result is read.
3Guided walkthrough and meaningful Connected PatternsBuild together Proven on real charts before the design counts as proven.
4One ranking rule and its reasons, on Daily and in the MatrixBuild
5Editable reflection questionsBuild Safeguards checked first.
6Retrograde navigationSmall fix Independent of the rest.
7Friend invitationsInvestigate and design first
8Generic learning platform or chatbotDon't build

Success is people coming back on another day to discover something more about their own chart. Finishing a walkthrough, or tapping Next, is not success. The walkthrough's value depends on the quality of its connections, not on its navigation.

The unmet need: what users say, and what the journal shows

Hypothesis, revised 2026-10-23. The original premise, that people know astrology but don't connect it to their lives, is not established and is no longer treated as fact. What the evidence supports is narrower: people can reach personalised astrology through AstroMatrix, and some want help with three separate things. Synthesis: how the pieces fit together. Explanation: why something means what it means, which is an education problem. Application: what it means for their life now, which is the closest match to the original dilemma. The journal shows people rarely write about that connection. It doesn't show that they don't make it. Missing: whether ordinary Matrix users, not Discord members, already get these insights, and what they feel is missing. Open question: is "guided self-discovery" about finding out more about yourself, or about understanding and using what AstroMatrix already tells you?

Added 2026-10-23. Evidence only, no proposals. Discord: the 47 people who voted for a learning or self-discovery option, and everything they have posted publicly. Journal: aggregate behaviour only; no journal text was read, only lengths and dates.

1. What "guided self-discovery" and "lessons on your own chart" mean, in voters' own words

28 of the 47 voters have posted somewhere (918 messages); 19 never have. The follow-up post asking "Learn Your Birth Chart" voters what they meant got no replies, even though members can post in #whats-new. Their messages point to three different asks:

AskTheir words
Synthesis: how placements work togetherWants to learn how all their placements work together, which they feel the app is missing; they can research each placement separately but not how they combine. This voter chose all five learning options.
Explanation: terms and features"What does detriment mean?" · "idek how to identify a conjunct or sextile by eye yet" · "I don't understand the astrocartography at all" · "the lines run through these cities but what do I do with that information" · "isn't enough explanations in-app" · "Is there a way to have a video or something to explain it better?" · one learner describes moving from basics to houses to aspects.
Application: what this means for me nowAsking what a current transit to their natal Sun means and how to navigate it (a Guided Self-Discovery voter) · asking how to work with a difficult placement · reading their own and a partner's charts to understand the relationship.

Also notable: voters learn largely from books (repeated recommendations and a request for a shared book list). Practitioners are sceptical of AI chart readings ("They'll say things square… when they don't", "using AI in general is just bad"); one voter prefers talking to their own AI over writing in a journal. Caveat: these are about 20 voices, and two members are heavily represented.

2. Does the app's own reflection mechanism show private connection?

MeasureResult
People who wrote any reflection, last 28 days978, about 1.2% of 80,915 active users (GA4)
Prompted vs voluntary961 wrote only in answer to a reflection prompt; 12 only voluntarily; 5 both. Voluntary notes on saved readings: 18 in 28 days.
Saving without writingCommon: about 14,800 readings saved by about 4,100 people, plus about 31,000 saved reports, in 28 days
Repeat reflection, since prompts launched 9/13966 writers, 1,664 entries: 807 (84%) wrote on one day only, 159 (16%) on 2+ days, 11 on 6+ days
Length310 under 20 characters, 444 of 20–59, 509 of 60–149, 333 of 150–399, 68 of 400+
What prompts are aboutTransit aspects 70%, forecasts 13%, natal aspects and signs 14%, progressed 3%
TrendAbout 480 entries a week from about 340 people in the two weeks after launch, then about 270 from about 175 in the last two weeks
Opening the journal, last 28 days11,213 users opened it (about 14% of active users); 2,658 on 2+ days, 471 on 4+ days

Limits: journal opens use a different user ID from journal entries, so they can't be linked to writers. Returning to the reading a reflection was written on isn't measured. 704 prompt entries carry no user ID and are excluded. Writing is evidence of use, not of insight, and someone who never writes may still find personal meaning.

Assessment

  • The people asking for guidance are not asking for more readings. In their words they want three things the reading-by-reading experience doesn't obviously give them: how their placements fit together, plain explanations of terms and features, and help applying a reading to what's happening to them now.
  • Private reflection in the app is real but small. About 1 in 80 active users wrote a reflection in 28 days, almost always because a prompt asked, usually once, usually briefly, and mostly about current transits. Voluntary journaling on readings is close to zero.
  • What most people do instead is keep readings. Saving readings and reports is roughly 15 times more common than writing about them. That shows readings are valued enough to keep; it doesn't show what people do with them afterwards.
  • The existing product may already meet part of the need, especially for confident users who read and save. The evidence doesn't show it meeting the synthesis, explanation and application asks above.

Matrix audit

Audited 2026-10-23 against the live build (11.1.8, 5f59ca35), the report server (routes/ai.js), and 28 days of Matrix reports (reportGenerations, read-only, provisional). This section replaces versions 4 and 5 of the Matrix analysis, which read a report field that merges several dropdown options. Proposals are withdrawn until this audit is reviewed.

How the screen works

  • Tabs are life areas. Self: Summary, Purpose, Harmony, Love, Abundance, Evolution. Relationship: Chemistry, Support, Connection, Evolution.
  • Each tab is a radar chart followed by three sub-area panels stacked vertically (e.g. Purpose: Path & Career, Ambition & Drive, Vision & Awareness). Each panel lists all of its items and has its own Report button. To reach the second or third sub-area you scroll past the whole first list (matrix.dart:1650-1700).
  • One dropdown, titled "Report", holds 7 options on the self Matrix and 3 on a relationship Matrix. It filters what the whole Matrix shows and sets what the next report covers, and the app remembers the choice (saveCategory).
Dropdown optionWhat it shows (matrix_service.dart)Sent to server asSelf reports, 28 days
All Aspects (default)Everything: birth, all transit types, progressed, draconic. No filter.all~864 (21%), 376 profiles*
Foundation (Birth)Birth chart onlyfoundation1,473 (36%), 505
All TransitsWeekly + monthly + progressedall~1,175 (29%), 501*
Weekly (Transits)Fast-planet transitsweekly228 (6%), 76
Monthly (Transits)Slow-planet transitsmonthly121 (3%), 49
Growth (Progressed)Progressed chartprogressed96 (2%), 48
Soul (Draconic)Draconic chart; hidden without a birth timedraconic141 (3%), 65
Relationship: All Aspects, Connection (Synastry), Unity (Composite)Synastry, composite, or bothall for all three2,833 total; can't be split

* All Aspects and All Transits are both sent as all, so I separated them by contents. A report containing any birth placement counts as All Aspects; one with only transit or progressed items counts as All Transits. An All Aspects report on a sub-area where the person has no birth placements would be miscounted as All Transits. Total self reports: 4,100.

What the numbers show, and don't

  • People do choose the option. The default, All Aspects, produced only 21% of self reports. Birth (36%) and All Transits (29%) were picked more often. Since the last deploy, explicit picks in the app number 276 (matrix_lens_selected: All Aspects 58, Weekly 52, All Transits 52, Birth 49, Monthly 29, Progressed 22, Draconic 14).
  • Timing is used. About 40% of self reports come from a timing option (All Transits, Weekly, Monthly, Progressed). Version 4's "5%" and version 5's "98% blended" were both wrong, because both read all as one option.
  • Within a tab, the first sub-area leads (Path & Career 1,162 against 217 and 162; Physical Attraction 715; Security & Roots 222, and so on). The layout explains how that could happen, since the first panel is the only one visible without scrolling past a list. It doesn't prove people would choose differently. A rotation test is the only way to tell.
  • Return isn't measured. Only 9% of profiles generated a report on more than one day, but that counts new reports, not people coming back to read.
  • Relationship options can't be told apart in the data, because all three send the same value.

Report instructions: checked, not a defect

The server's generic "birth chart + transits" wording for timing options was checked against 9 saved reports (All Transits, Weekly, Monthly, Progressed, Draconic) and their exact inputs. None invented birth-chart content. Two reports did misstate whether a transit had begun. That traces to a separate, already-known cause: percentComplete arrives as 0 on transit aspects. Another session is handling it under ISSUE-137, not this brief.

The objective: make the astrology people already know useful to them

Added 2026-10-23 from the Discord conversation study. The goal is not to teach more astrology or produce more interpretation. It is to help people connect the astrology they already know to their own lives.

What Discord shows

  • The vocabulary is there. About 35% of 1,782 member messages since 9/23 are astrology talk with nothing personal. 228 of 371 introductions are big-three listings.
  • The personal reflection is there too. 60% of messages have no astrology in them, including long, open conversations about exes, family and feeling misunderstood.
  • The two rarely meet. About 5–10% of messages connect them. Only 34 of the 138 astrology-speaking members do it even once, and two members wrote 30 of the 89 messages that do.

People may well make the connection privately, or choose not to post it. Discord shows what people say in public, not what they think.

How the members who connect it do it

  • Through timing: a life event tied to a profection year, a Saturn or Chiron return, or a retrograde moving through a house (for example, a health event during a Saturn return).
  • Through other people: a mother, an ex or a "situationship" comes first, and their chart is where the person goes looking.
  • By testing readings against their life: they keep the reading or house system that fits (when a reading matches their life closely).
  • By asking what to do (asking how to work with a difficult placement).
  • By empathy through shared placements (members bonding over a shared placement).

What this changes in the package

  • Two directions, not one. Chart → Life: the walkthrough and Connected Patterns turn a placement into a question about the person's experience. Life → Chart: start from something they care about now, such as home and family, a relationship, work, health or a loss. Then show what in their chart and current timing speaks to it: the transits and returns active in the matching houses now, or the comparison with the other person. Both pieces already exist (the Matrix's transits by house, and synastry). Life → Chart may matter more, because it starts where the person already is.
  • Ask "does this fit you?" on walkthrough steps, connection lines and Life → Chart results. A yes is the clearest signal we can get that a reading meant something personally, and it mirrors what the connected members already do.
  • Lead with timing. Returns, profections and transits through houses are where people's life stories attach. This depends on ISSUE-783 (every retrograde pass, correct exact dates).
  • Include "what to do" where a reading names a difficulty.
  • Handle heavy subjects with care. Several of these stories involve death, pregnancy loss, disability and trauma. Free-text Life → Chart input needs the same distress handling as AI reports (ISSUE-722).

The measure, revised

Unique users who make a personal connection with their chart (answer "this fits me" on a reading or connection, or start from a life area and open what it leads to), and whether those users come back on another day. Engagement with Chart Journey screens by itself is not the measure.

Discord prompts: the daily moon post asks "Anyone feeling that today?" and has had no replies so far. Treat that as an early signal, not a verdict. A concrete, chart-specific prompt may do better, and some people will reflect privately in the app but not in public.

What the polls asked for, against what users see today

Live build: 11.1.8, build 300100101 (production app-open counts, 2026-10-21: 3,526 iOS and 3,091 Android opens, against about 1,160 still on 11.1.7). "Branch-only" means the code exists but isn't in that build.

Poll ask (votes)What existsClassSmallest change
Guided self-discovery (17/46), guided walkthrough (11/29)No ordered path through the chart. The reading screen already has Back/Next, but only steps through whatever list it was opened from (component_summary.dart:3425-3468).Genuinely missingWalkthrough, package item 1
Lessons on your own chart (20/64), learn your birth chart (9/25)One reading per placement, opened often. Each placement reads on its own, and the text is the same for everyone with that placement: routes/component.js:1580 reads uid and never uses it. Only the AI Matrix report combines placements. Connected Patterns is branch-only (11.1.9).Poorly connectedShip Connected Patterns with relationship lines (item 2), and link each placement to the Foundation report
Visual mini-lessons (22/64)The Guide is generic reference with no menu entry; users reach it only through search or word links. The concept boxes under a reading don't say why to tap them.IncompleteA visible "Learn" entry, and a one-line "why this matters" on each concept box. Not in this package.
Ask Your Chart (the chatbot came last, 4/46)The tarot question box takes free text but sends no chart data. "Report on this" on each placement uses a fixed reflection question (component_summary.dart:1108).Poorly connectedEditable question, item 4
Friends & family (8/27)A Friends system is live (since 11.1.7): handle search, requests, chat, Share Profile, and a friend as the second chart. 37 friend links accepted, ever. 32% of accounts hold 2+ people, and comparing with them works.IncompleteAn invite for someone not yet on the app. Design task.
Retrogrades (11/27)Daily panel about 10 sections down, generic (planet and sign only), and its "See more" opens the Forecasts tab (home_screen.dart:1348).Poorly connectedRetrograde fix, item 5
"Which of this matters to me?" (advisor's hypothesis)What Matters Now ranks a top 3 by importanceScore and never says why. About 45 items on Daily. About 170 transits in the Matrix, sorted another way.IncompleteRanking reasons, item 3

11.1.9 release scope

Candidate 15488952 on release/11.1.9: 47 commits on top of the live build 5f59ca35. 5 opens on 11.1.9 so far, from test devices.

What ships

  • Connected Patterns (FEATURE-52), including one-time refetches of placements cached before affinity data and before ISSUE-751
  • Chart export to PDF (FEATURE-58)
  • Important Birth Aspects panel and birth-aspect ranking on Daily (FEATURE-26)
  • Shortcut-tap measurement; Void of Course removed from Daily (FEATURE-11, FEATURE-26)
  • Android checkout hardening (ISSUE-696, 697, 699)
  • iOS widget timezone fixes (ISSUE-385)
  • Campaign sendId forwarding (ISSUE-745)
  • Fixes: i18n saved-language repair (ISSUE-759), journal refused edits (ISSUE-392), navigation back (ISSUE-420), matrix aspect settings (ISSUE-750), support chat, tarot accessibility

What does not ship

  • The daily-changing What Matters Now (df74ec43). It's only on birth-issues and feature/auth-token. It was part of the agreed scope, so either merge it in and test it, or remove it from the scope explicitly. It should apply cleanly: it touches only lib/services/forecast_service.dart and its test, and 11.1.9 hasn't changed either file since they diverged. This was checked by reading the history; the merge itself hasn't been run.
  • The critical-degree text fix (e6e9b180, ISSUE-767), the commit just before it on the same branch, is also absent. It touches different files, so df74ec43 doesn't depend on it. Decide whether it belongs in 11.1.9 too.
  • Connected Patterns in 11.1.9 shows a list of names under one generic line ("These placements express related themes in your chart."). It doesn't yet explain any relationship (item 3).

To reconcile, in the Flutter repo

git checkout release/11.1.9
git cherry-pick df74ec43
flutter test
# bump the build to 11.1.9+300100104 before uploading:
# 300100103 is already installed on test devices

Server dependencies, checked live

  • AffinityCandidates is served on GetComponent (23 candidates for Moon in Scorpio)
  • /affiliate/a/t/:sendId returns 302; an unknown ID falls through to the normal link

Release risks and regression checks

  • Unit tests: 233 test files in test/. Flutter isn't installed on the server-side machine, so whoever cuts the build runs flutter test on 15488952.
  • Billing (highest risk): on Android, check a purchase, a double tap on buy, and a restore with stale product details. A regression here costs revenue directly.
  • One-time refetches: two "refetch once" migrations re-request placements cached before affinity data. Expect a burst of GetComponent traffic as users update. Watch the component server's timeouts after the release.
  • Language repair (ISSUE-759) rewrites a stored setting once. Test an upgrade from a pre-9.8.5 install with a non-English language.
  • iOS widgets: check Moon and planetary-hour widgets in a timezone far from GMT.
  • PDF export: check who may export, and a saved report's chart printing.

Flutter work package

Numbered in Mark's order. The work is Flutter unless marked Node.

2. Measure real reading opens, on the device

Required first
Why
The app caches readings, so the server never sees a repeat open. Server-side counts of GetComponent, including component_views, can't measure reading or return, and none of the success measures below may use them.
Scope
The app already counts every reading open, cached ones included, in _loadComponentData (component_summary.dart:492, component_opened_total). But that counter is anonymous and only labelled by category. Next to it, send one event per open carrying the account, the reading (category and name), the local date, and where it was opened from (walkthrough, Connected Patterns, Matrix, Daily, chart wheel, search).
Node
An endpoint that stores one row per account, reading and day (repeats on the same day collapse), plus a read-only report: of the accounts that opened a reading through the walkthrough or Connected Patterns, what share opened a natal reading again on a different day within 14 days, compared with accounts that didn't. I can build this part.
Risk
_loadComponentData also re-runs on reloads, so de-duplication per day is what keeps the numbers honest. The data is account-linked and has to be covered by the account-deletion path.

3. Guided walkthrough and meaningful Connected Patterns, built together

Build together
What it is
As specified, this is a sequence of readings, not yet a guided learning journey. Its value rests entirely on the connection lines. Both features share one piece: a line that says how two placements in this person's chart relate.
Connection line
For two placements, say whether they reinforce each other (conjunction, trine or sextile between the two planets in this chart), are in tension (square or opposition), or share a theme, naming it. Today each affinity candidate carries only Component, Category, Score and Route (house or aspect), with no theme or relationship. Aspect type is available on the device. Shared themes need a small Node change returning the traits two placements have in common, from the trait lists components already carry. With no real relationship, show no line rather than filler.
Walkthrough
Sun, Moon, Rising, then the 3–5 strongest natal aspects (the FEATURE-26 ranking in 11.1.9), at most about 8 steps, on the existing reading screen. Each step shows why it matters (written per step type, translated) and its connection line to the previous step.
Connected Patterns
The same connection line under each match. The version in 11.1.9 has none; it can ship as a first step but proves nothing yet.
Acceptance test
Before the design counts as proven, run it on at least 5 real natal charts of different shapes (for example a stellium, a chart with a dominant square, a chart with few major aspects, a late-degree Rising, and a chart with no birth time). A person who reads astrology checks each output against four points:
  • Every connection line names both placements, and its aspect is correct for that chart.
  • No two lines in one walkthrough say the same thing.
  • At least one tension and one reinforcement appear where the chart has them.
  • After the walkthrough, the reader can state the chart's story in 2–3 sentences that wouldn't fit a different chart.
A chart that reads as eight isolated readings with captions fails.
Measure
Return on another day (item 2), comparing people who used the walkthrough or Connected Patterns with those who didn't. Steps reached is a diagnostic, not the outcome.

4. One ranking rule for Daily and the Matrix, with reasons

Build
The rule
Define one shared function that both screens call, so they can't drift apart. If df74ec43 ships, What Matters Now is no longer a pure score order: slot 1 is the biggest active transit, and the rest are significant transits that are exact or begin today. Write the rule down first, then use it in both places. Today the Matrix sorts by distance of percentComplete from 50, which is 0 on every transit-aspect row.
Reasons
One line per item from the terms that ranked it, for example "Slow planet · hard aspect · your Sun · exact today".
Rollout
Ship the reasons and the shared Matrix sort together. If the reasons go first, they appear on Daily only, with wording that doesn't suggest the Matrix uses the same ranking.
Risk
Re-sorting the Matrix changes a screen every user knows.
Measure
Taps on What Matters Now items per Daily open, and the return outcome.

5. Editable reflection questions

Build, safeguards checked
Scope
"Report on this" (component_summary.dart:1108) becomes a text field pre-filled with the reflection question, which the user can edit before sending. The server already accepts specificQuestion (routes/ai.js:809).
Depends on
The report path's existing usage limit and paywall apply unchanged.
Risk
Free text reaches the AI. The report distress check (ISSUE-722) must see the user's question, not only the prompt. Confirm before release.
Measure
Share of reports sent with an edited question. Store the question with the report so it can be read later.

6. Retrograde navigation fix

Small independent fix
Scope
Point the Daily panel's "See more" at /calendars?Tab=Retrogrades (it goes to Forecasts today, home_screen.dart:1348), and move the panel up into Today's Sky.
Not yet
Personal retrogrades (a retrograde planet over your natal points) wait on ISSUE-783. The engine currently returns only the first pass of a multi-pass transit. A Discord user hit this on 2026-10-01.

7. Friend invites

Investigate and design first
Start with
Why 37 accepted friendships in four months? Is it the entry point (behind the Users screen), the "Love Match" label, or the requirement that both people already have accounts? Then design invite → install → friend request → comparison, with attribution and a path for someone who already has the app.

About the usage numbers

component_views holds a lifetime counter per placement since 2026-09-26, with no user and no dates. Because the app caches readings, it counts first-time fetches, not reads. The earlier figure of about 244k natal reading views shows consumption, roughly, and nothing about understanding or return. The first version of this brief proposed measuring return through GetComponent; that couldn't work for the same caching reason, and it is replaced by item 2.

Corrections to earlier analysis