Concept map
The concept layer: screens grouped by the person's intent, derived from the flows and jobs. Each node is a screen with the job it closes. States (empty / error / loading) are not here, they live in the flows and the matrix; page content and cards are the detail layer. Below: the intent map, the navigation model, and the traceability matrix.
Screens by intent
Not a hierarchy, a map of screens grouped by what the person is trying to do. Six intents (A to F) derived from the flows and jobs. Each node carries a short job-tag; no X.Y numbers, no states, no content cards, those belong to the detail layer.
flowchart TD
subgraph GA["A. Get started (acquire + sign up)"]
gs1["Landing / home
Main, item 1"]
gs2["Pricing
item 1"]
gs3["Sign up
item 1"]
gs4["Log in
supporting"]
end
subgraph GB["B. Set up wellbeing (onboarding)"]
sw1["Company setup
J6"]
sw2["First program confirm
Main, J6, item 2"]
sw3["Invite team
Main, item 3"]
end
subgraph GC["C. Run wellbeing and read the pulse"]
rw1["Dashboard
E1, J1, J2"]
rw2["Team pulse detail
J1, J2, E1"]
rw3["Threshold alert
J2"]
rw4["Program library
Main, J6"]
rw5["Program detail / manage
Main, item 2"]
rw6["Check-in setup
J2, J4, item 3"]
end
subgraph GD["D. Team and check-ins"]
tc1["Team roster
Main, item 3"]
tc2["Check-in, employee
J3, J4, E2"]
tc3["Pre-Q1 disclosure
J3, E2"]
tc4["Questions
J4"]
tc5["Check-in complete
J4, E2"]
end
subgraph GE["E. Prove it and upgrade (owner)"]
pu1["Share with owner
J1, J5, S2"]
pu2["Invite owner + upgrade
S2, item 8"]
pu3["Owner dashboard
J1, J5, item 8"]
pu4["Monthly owner digest
S2, item 8"]
end
subgraph GF["F. Account and utility"]
au1["Plan / subscription
item 1, item 8"]
au2["Privacy center
J3, E2, item 4"]
au3["Notifications
J4, items 9-10"]
au4["Account
supporting"]
au5["System: 404 / 500 / cookie
all"]
end
gs3 --> sw1
sw3 --> rw1
rw1 --> tc1
rw6 --> tc2
tc2 --> tc3
tc3 --> tc4
tc4 --> tc5
rw2 --> pu1
pu1 --> pu2
pu2 --> pu3
rw1 -.-> au1
Traceability Matrix
Screens (rows) by jobs (columns). A tick means the screen participates in closing that job. An empty row is an orphan screen; an empty column is an orphan job. Both are defects, surfaced and resolved below.
| Screen | Main | J1 | J2 | J3 | J4 | J5 | J6 | E1 | E2 | E3 | S1 | S2 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 Landing | ✓ | |||||||||||
| 2 Pricing | ✓ | |||||||||||
| 3 Sign up | ✓ | |||||||||||
| 4 Log in | ||||||||||||
| 5 Company setup | ✓ | ✓ | ||||||||||
| 6 First program confirm | ✓ | ✓ | ✓ | |||||||||
| 7 Invite team | ✓ | ✓ | ✓ | |||||||||
| 8 Dashboard | ✓ | ✓ | ✓ | ✓ | ||||||||
| 9 Team pulse detail | ✓ | ✓ | ✓ | |||||||||
| 10 Threshold alert detail | ✓ | |||||||||||
| 11 Program library | ✓ | ✓ | ||||||||||
| 12 Program detail / manage | ✓ | ✓ | ||||||||||
| 13 Check-in setup | ✓ | ✓ | ✓ | |||||||||
| 14 Team roster | ✓ | ✓ | ||||||||||
| 15 Share with owner | ✓ | ✓ | ✓ | |||||||||
| 16 Invite owner + upgrade | ✓ | ✓ | ||||||||||
| 17 Plan / subscription | ✓ | ✓ | ||||||||||
| 18 Privacy center | ✓ | ✓ | ||||||||||
| 19 Notifications | ✓ | ✓ | ||||||||||
| 20 Account | ||||||||||||
| 21 Owner dashboard | ✓ | ✓ | ✓ | ✓ | ✓ | |||||||
| 22 Monthly owner digest | ✓ | ✓ | ✓ | ✓ | ||||||||
| 23 Check-in | ✓ | ✓ | ✓ | |||||||||
| 24 Pre-Q1 disclosure | ✓ | ✓ | ||||||||||
| 25 Questions | ✓ | |||||||||||
| 26 Check-in complete | ✓ | ✓ |
Orphan screens (empty rows)
20 Account
Orphan jobs (empty columns)
Emotional and social jobs: what supports them
The matrix above carries functional jobs only. An emotional or social job is not closed by a screen: it is closed by a mechanism spread across screens. Putting a tick in the matrix for E1 or E2 would claim a screen owns a feeling. This table names the mechanism instead, and the Detail Layer and Voice read it from here. Source: research/docs/jtbd.md and research/docs/cjm-to-be.md.
| Job | Persona | The mechanism that supports it | Where it is visible |
|---|---|---|---|
| E1 feel like a competent people person | Priya, primary | The interpretive layer, cross-cutting: no number is shown without its reading, every setup ends in a confirmation, every operator screen offers one suggested next action | 4.0, 4.1, 3.1, 5.2, 6.0, 9.0 |
| E2 feel supported, not monitored | Yemi, primary | The privacy bundle as a visible mechanism, four parts: pre-Q1 disclosure sentence, minimum of 5, no live count during an open cycle, subscription-as-privacy statement | 10.1, 0.3, 1.1, 8.2 |
| E3 be seen as a caring leader | Marcus and Priya, secondary | Shareable aggregate proof: the owner dashboard and monthly digest are the artefact a leader can hold up. Deliberately thin, because E3 is still a hypothesis | 9.0, 9.2 |
| S1 tell my network what works | Priya | Nothing in the MVP, and that is the decision. S1 is a [?] hypothesis and cash referral is on the Stage 2 cut list | no node |
| S2 share the result with the owner easily | Priya to Marcus | The operator-to-owner share act, kept distinct from inviting the owner: two labels for two different acts | 7.0, 7.1 |
Estimate: MVP and LATER
The one place the volume of the product is narrowed. The parent list is the backlog in research/docs/cjm-to-be.md: items 1 to 10 are MVP, items 11 and 12 are LATER. A node is MVP when an MVP backlog item cannot ship without it, or when it is an auth, legal or system precondition the To-Be path can actually hit. A node is LATER when the first round runs without it. Every node keeps its specification and its grey wireframe either way: the label orders the work, it does not cut the spec.
| Group | Nodes | MVP | LATER |
|---|---|---|---|
| Global elements | 6 | 6 | 0 |
| Pages | 48 | 43 | 5 |
| Total | 54 | 49 | 5 |
| The five LATER nodes | Why the To-Be path does not break without it |
|---|---|
| 1.2 About | Trust here is carried by the privacy mechanism shown in the UI, not by a company story. No backlog item needs it. |
| 1.3 Contact / Support | Self-serve by design: the operator starts in an afternoon without talking to anyone. No MVP item depends on it. |
| 1.4 Help / FAQ | The in-product answer to "am I doing this right" is the interpretive layer, which is MVP and cross-cutting. A help library is a second, weaker answer to the same job. |
| 1.5 Category / segment landing | Acquisition breadth. Activation is measured from Pricing and Sign up, not from segment pages. |
| 11.2 Maintenance | An operational state, not a path state. The path can hit 404 and 500; planned maintenance is a deploy practice the MVP does not have yet. |