Stack Specification
Section 09

User flows

The journeys that matter most. Every install holds an anonymous session from first launch (see §7.8): the user can browse, download free artworks, colour, and save progress with no sign‑up. Signing in is only required to purchase a pack or to carry progress across devices and reinstalls.

9.1 — First‑time user (onboarding flow)

The detailed onboarding flow is specified in §9.7. The flow below is the high‑level shape: anonymous‑first, personalisation up front, aha moment before signup, account prompt only after first value is delivered.

flowchart TD A[Open app] —> B[Animated welcome · outcome, not features] B —> C[Choose cultural themes · multi-select] C —> D[Audience · me / child / both] D —> E[Accessibility quick-set] E —> F[“Personalised library reveal — 16 artworks chosen for you”] F —> G[Featured starter artwork preselected] G —> H[Guided first taps on canvas] H —> I[Aha moment · cells filling beautifully] I —> J[Founder’s note · handwritten] J —> K[Soft account prompt · sync & keep library] K —> L[Pre-permission value screen] L —> M[OS notification prompt]

9.2 — Returning user

flowchart TD A[Open app] —> B[Load local progress] B —> C[Show Continue row] C —> D[Resume artwork] D —> E[Colour] E —> F[Sync when online]

9.3 — Artwork download

sequenceDiagram participant User participant App participant Backend as InsForge function participant Storage as CDN / Storage participant Local as Local cache User->>App: Select artwork App->>Backend: get-artwork-download-url Backend—>>App: Signed URLs (15 min TTL) App->>Storage: Download manifest + regions + preview Storage—>>App: Bundle bytes App->>Local: Persist bundle, write index App—>>User: Open canvas

9.4 — Colouring

flowchart TD A[Open artwork] —> B[Load cached region data] B —> C[Render canvas] C —> D[User selects colour] D —> E[User taps cell] E —> F[Tap → canvas coords] F —> G[Query spatial index by bounds] G —> H[Precise path hit-test] H —> I{Correct colour?} I —>|Yes| J[Fill region · update bitset] I —>|No| K[Gentle haptic + visual hint] J —> L[Persist progress locally] L —> M[Recompute % · update palette state]

9.5 — Premium access

flowchart TD A[Tap premium artwork] —> B{Active entitlement?} B —>|Yes| C[Allow download] B —>|No| D[Paywall sheet] D —> E[User picks plan or pack] E —> F[Native purchase flow] F —> G[Send receipt to backend] G —> H[Server validates via App Store / Play API] H —> I[Persist entitlement] I —> C D -.also.-> R[Restore Purchases] R —> G

9.6 — Account upgrade (anonymous → signed‑in)

flowchart TD A[Anonymous user with local progress] —> B[Sign in or create account] B —> C[Server returns existing progress for user_id] C —> D[Client merges by region-bitset union] D —> E[Sync merged result back] E —> F[Anonymous record deleted locally]

9.7 — Onboarding strategy

Onboarding is the single highest‑leverage surface in the app. The flow below is informed by an analysis of 1,460 onboarding flows across categories. The patterns we adopt — and the ones we deliberately ignore — are recorded here so the implementation doesn’t drift toward a generic feature‑tour onboarding.

Working assumptions — not validated targets

The quantitative figures cited throughout this section (“10% increase in trial conversion”, “15% conversion lift”, “10% relative increase in one‑week retention”, etc.) are summarised from a single external study of 1,460 onboarding flows (Mobin onboarding study, May 2026). Treat them as directional design heuristics that justify a pattern — not as committed product targets, and not as numbers Ochre & Soul is on the hook to reproduce. If a claim influences a design decision, the source should be revisited and ideally validated against our own audience before we commit.

Principle (not an assumption)

The non‑quantitative claim — that length isn’t the constraint, time‑to‑aha is — is the part of the research we adopt as a design rule. The average mobile app has 25 onboarding screens and Duolingo has ~60; what differentiates them is whether each screen earns its place by delivering value, learning about the user, or building trust. Selling the outcome (not features), personalising early, and letting users feel value before asking for an account or payment is the pattern we adopt regardless of the cited statistics.

Principles we adopt

  1. Sell the outcome, not features. The welcome screen shows an artwork being filled, not a list of bullet points. No “Browse hundreds of artworks!” copy.
  2. Try before you sign up. The first artwork is playable anonymously. Account creation is offered only after the user has experienced the aha moment — never before.
  3. Personalise, and show what the answers unlocked. After two or three personalisation questions, the user lands on a library that is visibly tailored (“16 artworks chosen for you in Carnival & Portraits”).
  4. Multi‑intent, not single‑choice. Cultural‑theme selection is a multi‑select. Headspace saw a 10% increase in free‑trial conversion from allowing multiple goals; the same applies here — users come with more than one cultural interest.
  5. Aha moment = first satisfying fill. The first ten cells filled on a beautiful starter artwork is the moment of value. Guide the user there in as few screens as possible after personalisation, then let the canvas do the work.
  6. Founder’s touch at the aha moment. After the first artwork is completed (not before), a brief handwritten note from the founder appears — why this app exists, signed. It is the most efficient trust‑builder in the app and costs nothing to ship.
  7. Pre‑permission screens before every OS prompt. Notifications, motion data, and any future permission ask are preceded by a screen that explains the value and previews what the user will receive. This materially improves accept rates.
  8. Delight in transitions and loading states. Loading screens during personalisation and library generation use a colour‑filling animation that doubles as a product demo. No empty spinners.
  9. Retention checklist after the first session. A small “First steps” panel on the library home — three to five tasks (try a premium pack preview, set a daily reminder, customise the palette display, complete your first portrait) — survives dismissal and provides a return path. Mural saw a 10% relative increase in one‑week retention from exactly this pattern.
  10. Split the account form across screens. When the soft signup prompt is accepted, the form is split into email → name → preferences across three screens rather than one. Houss saw a 15% conversion lift from this; the perceived friction is lower even though the work is the same.

Patterns we deliberately reject

  • Mandatory signup before play. The product speaks for itself; gating it behind an account before any value is delivered is the single biggest pattern we avoid.
  • Feature tours with carousels and “Next” buttons. If the canvas needs a tutorial, the tutorial happens inside the canvas as light tooltips on the first artwork — not as five static screens beforehand.
  • Aggressive paywall in onboarding. 22% of apps throw a paywall during onboarding. For Ochre & Soul the paywall belongs at the first attempt to download a premium artwork, not during the welcome flow — the product positioning is calm, not pressuring. If a soft “Pack offer” is ever introduced during onboarding it must be paired with personalised pack content and a clearly dismissible alternative.
  • Asking for everything at signup. Birthday, gender, marketing consent, etc. We collect what we need (cultural themes, audience type, accessibility) and leave the rest to the settings screen.

The screens, in order

#ScreenPurposeInput / output
1Animated welcomeSell the outcome — an artwork fills itself on screenTap to continue
2Cultural themesPersonalise the libraryMulti‑select: textiles, carnival, portraits, hairstyles, family, children’s stories, symbols, traditions
3AudienceSet child_mode default and content filterSingle‑select: just me · a child · both
4Accessibility quick‑setEstablish baseline accessibilityAlways show numbers (default on), reduce motion (from system), pattern fills (off)
5Library revealShow what the answers unlockedPersonalised library populated; one starter artwork featured prominently
6Featured starterGet the user into the canvas with minimum friction”Start with this one?” → straight to canvas, no download spinner visible
7Guided first tapsSurface the core interaction without a tourTwo gentle tooltips: palette swatch, then first cell
8Aha momentLet the canvas deliver valueUser fills cells; no interruption
9Founder’s noteBuild trust at the moment of valueAppears after first artwork completion (or 50% milestone if very large). Dismissible.
10Soft account promptOffer sync & library persistence after value”Keep your library across devices?” — dismissible; non‑blocking
11Pre‑permission screenExplain notification value before the OS prompt”We’ll let you know when new artworks land in your themes.” Sample notification shown.
12OS notifications promptSystem permissionOnly fires if the user opts in on screen 11

Personalisation taxonomy

The cultural‑themes multi‑select drives library ranking and the “chosen for you” row. Themes are intentionally broad so even a single tap produces a usefully filtered library.

cultural_themes (multi-select, >= 1 required)
  textiles           // Kente, mudcloth, Adinkra, Ankara
  carnival           // Caribbean carnival, costumes, dance
  portraits          // Faces, hair, beauty
  family             // Multi-generational, daily life
  children           // Child-friendly characters and stories
  symbols            // Cultural symbols and iconography
  traditions         // Weddings, ceremonies, celebrations
  landscapes         // Places, architecture, markets

audience (single-select, required)
  self · child · both

accessibility (defaults written, user can override)
  always_show_numbers : true
  reduce_motion       : inherit from OS
  pattern_fills       : false

Retention checklist (post first session)

Displayed as a small panel at the top of the library home, dismissible but not auto‑hidden. Progress survives app restarts and reappears for the first three sessions.

  • Complete your first artwork
  • Browse a premium pack preview
  • Set a gentle daily reminder
  • Try a portrait in a different cultural theme
  • Save your library to a free account

Open

The detailed founder’s note copy, the exact starter artwork chosen for screen 6, and the visual treatment of the pre‑permission screen are owned by Product / Design and tracked in §20 Open Decisions as OD-10, OD-11, OD-12 (added).