| Splash (#01) | App launch (cold start) | Auto-routes after 1.4s. First-time → Welcome. Returning → Home. |
| Welcome (#02) | Splash → first-time user | "Get started" → Onboarding 1/4. "Sign in" → Auth flow. |
| Onboarding 1–4 (#03–06) | Linear from Welcome. Stash walks across each transition. | Each Continue → next step. Step 4 (bank link) triggers Plaid sheet → returns → completes → lands on Home. |
| Home (#07) | Bottom nav (default tab) · post-onboarding · post-login | Bell icon → Notifications panel · Streak chip → Profile · S2S hero → S2S detail · Stash byline → Coach · Priority Action card → relevant sub-panel (Subs / Breakdown / Goal) · Fin-tile tap → Spending → Breakdown filtered, Cash → linked accounts list, Credit → card payoff detail, Net Worth → Net Worth detail · "+ Invest · Loans · 2 more" → expanded fin-tile sheet · Sort nudge → Sort-It · Recap CTA → Weekly Recap card 1 · Subs row → Subscriptions panel · Goal row → Goal Detail · Recent activity item → transaction detail. |
| Sort-It (#08) | Bottom nav · Home sort nudge · Push notif "you've got 3 to sort" | Each swipe → confirms sort, advances to next card · Right-swipe override → updates one transaction · Long-press → permanent merchant rule · Last card → "All sorted" done state → Continue → Home. |
| Coach (#09) | Center FAB on bottom nav · Notification deep-link "Talk to Stash" CTA · Stash byline tap from anywhere | Send → Stash response · Suggestion chip → fills input → send · Proactive Highlight bubble → tap → relevant detail (transaction / Breakdown Highlights / Goal). |
| Breakdown (#10) | Bottom nav · Notification "TAP → SHOPPING BREAKDOWN" deep-link | Highlights chip at top → smooth-scrolls to Highlights section · Category row tap → category-filtered transaction list · Highlight card tap → transaction or Coach for context · "This month" pill → month picker. |
| Profile (#11) | Bottom nav · Streak chip on Home → goes here | Personal info row → expand · Income stream tap → edit panel · Linked account tap → Plaid re-auth/disconnect · "+ Link a new account" → Plaid flow · Goal tap → Goal Detail · "+ NEW" goal → Goal Detail (brand new) · Past Recaps row → archive list → tap any → that week's recap · Tone option tap → sets tone · Tog → toggles state · Privacy "Delete all data" → confirm modal. |
| Notifications (#12) | Home bell icon · Push notification tap (from outside the app) | Each notif tap → its target (transaction-tied → transaction detail with Stash bubble · Highlight → Breakdown Highlights · Bill due → Credit card detail · Weekly Highlights → Recap card 1) · "Mark all read" → clears unread dots · X-close → returns to caller. |
| Subscriptions (#13) | Home subs row · Highlight notification "Cancel candidate" · Coach suggestion "show me my subscriptions" | Cancel button → confirmation modal → cancellation flow (deep-link to provider OR in-app cancel via Plaid where supported) · "+ Add manually" → manual sub form · X-close → returns to caller. |
| Goal Detail (#14) | Profile → Goals list (tap any) · Profile → "+ NEW" creates a new one (brand-new state #34) · Coach proactive "let's pick a pace" · Recap card "set up a goal" | "+ Add money" → manual contribution flow · "Adjust pace" → pace slider · Stash CTA "Talk to Stash" → Coach prefilled with this goal's context · X-close → returns to Profile. |
| Account Link 1–4 (#15–18) | Onboarding step 4 · Profile "+ Link a new account" · Re-link push when Plaid token expires · Plaid webhook-triggered nudge in Coach | Step 1 search → tap bank → step 2 (Plaid Link sheet) → step 3 (connecting) → step 4 (success). "Add it manually" → manual account form. Auth-failed state #32 → retry or change bank. |
| Weekly Recap (#19–23) | Drops Sunday 9:00am via scheduled job. 4 entry points: (1) push notification "Your week is in" · (2) Home recap CTA card (prominent Sun→Tue, smaller link Wed→Sat) · (3) Notifications panel WEEKLY HIGHLIGHTS card · (4) Coach proactive Sunday opener. | Tap left/right edge → step backward/forward through 7 cards · Final card "Talk to Stash about it" → Coach with recap context · X-close → returns to caller. All past recaps archived in Profile → Past Recaps. |
| Edge states (#24–34) | Auto-trigger from data conditions on each parent screen (no transactions yet, network error, sync stale, no goals, etc.) | Each empty state has a primary action that resolves the empty (Link first account, Set first goal, etc.). Each error state has Retry. Each loading state auto-resolves to its filled-data twin. |