Vol.02 · Issue 01 · Hi-Fi Wireframe
BLUNT

No filter · No BS · We highlight where your money goes.

So you stop pretending you didn't notice.

Edition v1.0 · Hi-Fi
2026 · No filter · No BS · We highlight where your money goes
Mobile · 390 × 844 · iOS leans

§ 00 · Foundations

Colors, type, and spacing.

The values every screen below uses for color, typography, spacing, and elevation. The Design System tab has the long-form version with usage rules.

Brand palette

Ink
--ink · #0E0B14
Paper
--paper · #F4F1EA
Highlighter
--hi · #F0FF4C
Accent
--accent · #5B3DF5
Win
--win · #00C26A
Burn
--burn · #FF3B30
Warn
--warn · #FF8A1F

Mobile type scale

MEGA · 46pxAnton · uppercase
SHOPPING UP 47%
DISPLAY · 26pxInstrument Sans
Morning, Alex.
QUOTE · 17pxInstrument Serif italic
"That's $42 on coffee this week. Stop."
BODY · 14pxInstrument Sans
3 transactions need sorting. Swipe to categorize.
MONO · 10pxJetBrains Mono
SAT · APR 18 · 09:41

Spacing · 4-grid

--s-1 to --s-10

4 · 8 · 12 · 16 · 20 · 24 · 32 · 40 · 56 · 72. Mobile screen padding lands on s-4 (16px); section gutter on s-5 or s-6.

Radii

--r-1 to --r-8 + pill + circle

Buttons r-3 (12). Cards r-7 (22). Heroes r-8 (28). Tiles r-4 (14). Pills r-pill (999). Avatars r-circle.

Elevation

--el-1 to --el-4 + cta + hi

List rows el-1. Cards el-1 to el-2. Modals el-3. CTA shadow uses el-cta. Yellow hero shadow uses el-hi.

Highlighter rule: Yellow (#F0FF4C) is the personality color. use ONE highlighted phrase per screen. Two breaks the spell.

§ 01 · The parts bin

Every component, every state.

All the buttons, cards, inputs, chips, lists, alerts, and other UI pieces that make up the app. shown in every state they have (default, focused, error, success, etc.). Engineers should be able to build any screen using only what's in this section.

Buttons · Primary (highlighter)

.btn .btn-primary
The single boldest button in the system. Use once per screen, on the dominant action.

Buttons · Ink + Paper

.btn-ink · .btn-paper
Ink: secondary CTA on light surface. Paper: primary on dark surface.

Buttons · Accent + Ghost

.btn-accent · .btn-ghost
Accent indigo: secondary brand voice. Ghost: tertiary. Danger: cancel/destructive.

Buttons · Icon + Ghost-dark

.btn-icon · .btn-ghost-dark
Icon-only buttons: 42×42 hit target. Ghost-dark: secondary on ink surfaces.

Chips · Suggestion + Tag

.chip · .chip-tag
Stash says Shopping Over budget On track

Chips · Status + Streak

.chip-status · .chip-streak
↑ $412 $47 OVER FLAT 7-DAY 12-DAY

Inputs · Text + Search

.inp · .inp-search

Password too short

Toggle · On / Off

.tog
Overspend alerts
Daily check-in
Weekly recap

Mega headline w/ highlighter

.headline · .hl
What's the
goal?

Display + serif accent

.headline-display
Your week, unfiltered.

Pull quote · Fox dialogue

.pull · Instrument Serif italic

"Hey! I'm the fox who's ready to kick some financial A$$ with you. I'll read your receipts, do the math, and tell you the cold hard truth. Yours, truly."

Section card

.card

§ Section 04

Recent activity

Feature / hero card

.card-feature

Safe to Spend · April

$842

13 DAYS LEFT~$65 / day

"Stash says" card

.card-coach
Stash says

"Hey, your net worth's up $412 this month. Your investments are pulling the weight your spending habits won't. Take the damn win."

Financial tile (3-up grid)

.fin-tile · .fin-tile.dark
Spending
$712
+$89 vs last mo
Cash
$8,240
↑ $340 this mo
Invest
$18,400
↑ 4.2% YTD
Credit
-$1,247
Due May 5
Loans
-$420
$24k remain
Net Worth
$24,830
↑ $412 this mo

Transaction row

.list-row · transaction
B
Blue Bottle Coffee
Today 9:14am
-$4.50
P
Paycheck
Apr 1
+$2,500

Category row · with mini bar

.list-row · category
Shopping
4 transactions
$247
Food
5 transactions
$280

Coach chat bubbles

.bubble-fox · .bubble-user · .tdots
🦊

"Welcome back. 7 days straight. You might actually be serious this time."

How do I save $500 this month?

🦊

"You've got $1,842 left. Cut takeout (~$60), skip the fun stuff ($100), kill the midnight browsing. Do that and you're fine."

🦊

Progress · bar / dots / ring

.bar · .dots · SVG ring
40%

Emergency Fund

$1,200 of $3,000

Slide-in panel header

.np-hdr
Notifications
3 unread

Toast

success / error / neutral
✓ Food  +10
✕ Sync failed
Welcome to BLUNT

Spending alert · real-time

.spending-alert · fires when a category crosses budget mid-session
Shopping · over budget
Yo. $202 of $200. $h!t.
"That Zara hit just put you $2 over. Walk it back tomorrow."
Triggered when a posted transaction pushes a category past its budget cap. Slides down from the top status-bar; auto-dismisses after 6s if untouched. Tied to Stash angry pose. Use sparingly. only on actual breach, not approach.

Bottom nav · 5 slots, FAB center

.bnav
Home
Sort It
Coach
Breakdown
Profile

§ 02 · Cold start

The onboarding flow.

From the splash screen to a fully linked bank account, in about six taps and under 90 seconds. The user picks a goal, enters their income, picks Stash's tone, and connects their bank. Between each step, Stash walks across the bottom of the screen to carry the user forward.

01Splash · 1.4s loader
Boot screen

The splash screen shown while the app boots. BLUNT wordmark centered with the highlighted U. A small mono volume/issue tag at top. Stash walks across the bottom of the screen on a 12-second loop while the app loads.

9:41●●● 5G
BLUNT

No filter · No BS · We highlight where your money goes

Stash walking

Waking Stash…

02Welcome · meet your coach
First-impression

Wordmark + tagline. Fox quote sets voice. Get-started CTA + sign-in escape.

9:41●●● 5G
No filter · No BS · We highlight where your money goes
BLUNT
A money coach who reads your receipts and tells you the truth.
Step 01 · meet Stash

"Hey! I'm Stash the fox and I'm ready to kick some financial A$$ with you. I'll read your receipts, run the math, and say the part you've been avoiding. Yours, truly."

Have an account? Sign in

03Onboarding 1/4 · pick a goal
"What's the goal?"

Highlighter on the noun. 2×2 goal grid with mono A/B/C/D markers. Highlighter CTA, not paper.

9:41●●● 5G
04 · Your goal

What's the
goal?

Pick one with me. Not five. That's how people end up doing none of them.

A Save more $ stays in account
B Kill debt CC, loans, the works
C Invest more Future-you problem
D Just track it No goal, just watch
04Onboarding 2/4 · income
"How much comes in?"

Mega-amount input centered. Mono prefix. Preset chips below. selected one in highlighter.

9:41●●● 5G
02 · The numbers

How much
comes in?

What's your monthly take-home, after taxes? An estimate is fine. Just don't lie to me.

Monthly take-home
$
USD · per month
05Onboarding 3/4 · tone
"How honest?"

3 tones (A$$ / $h!t / @#$&) mapped to Light / Medium / Full roast. Medium is default. Auto-escalate is opt-in below the picker. kicks Stash one step up after 3 weeks of overspend, then resets when you recover. Stash walks across the bottom of this screen on transition in (splash + onboarding step transitions per locked §14).

9:41●●● 5G
02 · The voice

How
honest
can I be?

Slide it. Same spending, your call how hard I go.

c'mon.

"$312 on Uber?! That's a car payment, except you don't get a car."

Light $h!t Blunt
06Onboarding 4/4 · connect bank
"Hook up the receipts"

3 popular banks shown. Plaid trust line uses the locked BLUNT framing. name-drops Venmo / Robinhood / Coinbase / Cash App so the trust signal is concrete, not jargon. Final CTA shifts from highlighter → paper to mark "you're done with setup". Tap a bank → Plaid Link sheet (frames 15–18). Tap "Add it manually" at the bottom for unsupported institutions.

9:41●●● 5G
03 · The receipts

Hook up
the receipts.

Plaid handles your password. I never see it. Same setup as Venmo, Robinhood, Coinbase, Cash App. If you trust those, you can trust me.

CH
Chase
✓ LINKED
BA
Bank of America
CONNECT →
WF
Wells Fargo
CONNECT →

256-bit encrypted · bank-grade · revoke anytime in Settings

§ 03 · The day-to-day

The five main screens.

Home, Sort It, Coach, Breakdown, and Profile. The bottom nav appears on every one of them. These are the screens users open day-to-day.

07Home · daily money report
Editorial dashboard

Mono date eyebrow. Display-italic greeting. Hero is Safe to Spend · this month (replaced the original Net Worth hero. Net Worth lives on as a fin-tile). Tiles, sort nudge, weekly recap CTA, subscription burn, recent activity.

9:41●●● 5G

Sat · Apr 18 · 09:41

Morning, Alex.

7-DAY

Safe to Spend · April

$842
13 DAYS LEFT BILLS PAID GOALS FED

"You've got $842 left. Bills paid, goals fed. The rest is all you. Just don't @#$& it up."

Ask Stash →

Priority action · today

Cancel MasterClass · save $180/yr

"94 days untouched. The math is doing itself."

Ask Stash anything about your money

ASK →

Home
Sort It3
Coach
Breakdown
Profile
08Sort It · swipe to categorize
Card stack

Dark stage. Direction labels live at edges. Top card has merchant + mono amount + Stash quote. Combo pill rises after 3-streak. Auto-learn: after 3 confirmed sorts of the same merchant→category, Sort-It auto-categorizes future charges silently. Override one: right-swipe on the auto-sorted transaction in the feed. Make it a rule: long-press → "Always file Blue Bottle as Coffee". sticky regardless of vendor name drift.

9:41●●● 5G

Sort It

Drag to categorize

120
PTS
3 / 6
Bills
Fun
Shop
Food

Uber Eats

$24.50

Apr 18

Stash says → Food

"Another delivery fee. Your kitchen misses you."

Streak on fire
3 ×
Home
Sort It
Coach
Breakdown
Profile
09Coach · chat with the fox
Conversational money advice

Header shows Stash's name + a quiet "Online" status. Fox replies are serif italic. pull-quote energy. User bubbles are accent indigo. Suggestion chips above input.

9:41●●● 5G

Stash the fox

Online

Today, 9:41 AM

🦊

Stash highlighted something

"Hey Saw your Blue Bottle this morning. Fourth this week. Your goal said cut to 2. Quick check, push the goal or push back?"

Spending breakdown. Savings plan. Safe-to-spend math. The hard truth about that credit card. Pick one.

How do I save $500 this month?

🦊

"$1,842 left. $500 saved = live on $1,342. Cut takeout (~$60), skip fun ($100). Stop midnight browsing. Done."

🦊

Stash sticks to budgets, not stocks.

Home
Sort It
Coach
Breakdown
Profile
10Breakdown · category mode
Where the money went

Top: month tag pill. Coach-says recommendation banner. Category list with mini-bars. Goals below.

9:41●●● 5G

Breakdown

April 2026

This month

§ Your money, right now

+ MORE
Cash
$8,240
↑ $340 mo
Credit
-$1,247
Due May 5
Spent this month
$712
+$89 vs last
Net Worth
$24,830
↑ $412 mo
Stash pointing
Stash says

"Hey, you spent $247 on shopping this month. $h!t, that's $47 over. Everything else holds. Tap a category and let's dig in together."

Shopping
4 transactions
$247
Food
5 transactions
$280
Fun
4 transactions
$100
Bills
4 transactions
$450
🚗
Transport
2 transactions
$85

§ Highlights

What Stash highlighted
3 active
Goal slip last 7 days

Blue Bottle this week

"Your goal said cut Blue Bottle to 2. We're at 4. $h!t."

Weekend delivery +40% over weekdays

Late-night Amazon: 3 returned

Adjust budget

Move the dials. Stash learns.

Goals + NEW GOAL
Emergency Fund 40%
$1,200 saved of $3,000

Ask Stash anything about your money

ASK →

Home
Sort It
Coach
Breakdown
Profile
11Profile · settings + identity
Tone, model, accounts

Ink hero with avatar + streak chips. Personal info collapsed by default into a single tappable row (most users rarely edit name/take-home/location). Promoted cards: Income Streams, Linked Accounts, Stash's Tone, AI Model, Notifications, Privacy. these are what users actually adjust.

9:41●●● 5G

Alex Chen

Member since Apr 2026

7-day streak
+$412 SAVED

Income Streams

+ ADD

Stash uses each stream's volatility to calculate Safe-to-Spend. Variable streams build a buffer; stable streams flow through.

Salary · Acme Corp

$4,166 / month · stable

15th & 30th
💻

Freelance · design

~$1,200 / mo avg · variable

irregular

Dividends · Fidelity

$200 / quarter · quarterly

scheduled

Linked Accounts

Chase Checking ✓ Linked
Apple Card ✓ Linked
+
Link a new account

Goals

+ NEW
Emergency Fund
40% · $1,200 of $3,000 · 6mo streak
Japan Trip
$0 of $5,000 · just started

Stash's Tone

Pick your baseline. Stash dials it up one step if you blow past a goal three weeks in a row, then settles back when you recover.

A$$

Light

"You're a$$-ing it on takeout."

$h!t

Medium DEFAULT

"You said $200. The $h!t says $247."

@#$&

Full roast

"@#$& you doing, sport. That's rent money."

Auto-escalate

+1 step after 3 weeks over goal

AI Model

More powerful = smarter coaching, uses more compute

Best balance of speed and intelligence. Recommended for most users.

Notifications

Overspend alerts
Daily check-in
Weekly recap
Net worth updates

Privacy & Data

Share anonymous data
Allow coach memory
Delete all data

Ask Stash anything about your money

ASK →

Home
Sort It
Coach
Breakdown
Profile

§ 04 · The slide-in drawers

Five detail views that slide in over the main app.

Notifications, Subscriptions, Goal detail, Account link, and Weekly recap. These open from the main screens, slide in from the right, and close to return the user where they were.

12Notifications · panel
Roasts, wins, reminders, system

Two-section triage: Needs your attention (high-priority. Highlights, bill-due, overspend pattern) sits at the top. FYI (wins, streaks, system) sits below. Scrollable horizontal tabs filter further if needed. Unread = indigo dot. Roasts use serif italic. Tap behavior (locked): tap on a transaction-tied notif → opens that transaction detail with a Stash speech-bubble at top carrying the highlight/roast copy.

9:41●●● 5G
Notifications
3 unread

Needs your attention · 2

Stash highlighted: coffee goal slipping

HIGHLIGHT

"Blue Bottle this week. Goal said 2. $h!t."

3m ago

Credit card due in 17 days

Apple Card · $1,247 due May 5. Pay full balance.

8h ago

FYI · 5

Stash roasted your Uber Eats

"Another delivery fee. Your kitchen misses you."

9m ago

TAP → UBER EATS · $24.50

You hit your transport goal

$85 of $150. under by $65. Move that to savings.

2h ago

YESTERDAY

Your week is in

WEEKLY HIGHLIGHTS

"7 things I flagged from your week. 30-second read."

Sun 9:00am

TAP → RECAP

Shopping over budget

"$247 vs $200. $47 over. Receipts don't lie."

1d ago

TAP → SHOPPING BREAKDOWN

7-day sort streak unlocked

You've sorted transactions every day this week.

1d ago

13Subscriptions · panel
Monthly burn auditor

Burn-card hero in ink. Cancel candidates first. Stash speaks once at the top of the section (not on every row). Each candidate row stays clean: logo + name + last-opened context + price + one-tap cancel button. Active list below. Brand logos in production: sourced from Brandfetch API by domain. The colored letter monogram shown for some rows (e.g. MasterClass M, Apple TV+ A+) is the fallback for unsupported brands and manual entries.

9:41●●● 5G
Subscriptions
8 active recurring charges

Monthly burn

$86.95

"That's 19 coffees a month. You're paying to forget you subscribed."

At this rate, 12 months $1,043

Cancel candidates 3

"Heads up, these 3 subs aren't earning their keep. Cut 'em loose, save $30/mo."

M
MasterClass
Last opened 94 days ago · 12 min total
$15.00
/mo
A+
Apple TV+
Last opened 47 days ago · Severance is over
$9.99
/mo

Active

Netflix
Monthly · Next May 13
$15.99
/mo
Spotify
Monthly · Next May 13
$9.99
/mo
AP
Amazon Prime
Yearly · Next Jan 2027
$139
/yr
14Goal detail · panel
Inside a savings goal

Ink hero with progress ring + ETA pill. Three stat tiles. Past/projected bar history. Coach card with action. Two CTAs at bottom.

9:41●●● 5G
Emergency Fund
40%
$1,200
of $3,000
⏱ 9 months at this pace
Pace
$120
per month
To go
$1,800
remaining
Streak
6 mo
contributed

Contributions

past + projected

Now
Nov Dec Jan Feb Mar Apr May Jun Jul Aug
Stash says

"Pick your pace with me. $120/month gets you there in 9. $200/month gets you there in 6. Either works. Let's just pick one and stop hedging."

Talk to Stash →

15Account link 1/4 · pick bank
Plaid bank picker

Header tells you what step. Search 12,000+ institutions. 8-bank grid in 2 columns. Trust strip with name-drop framing per locked Plaid pattern. Bank logos in production: Plaid's institution metadata returns logo URLs as part of the search response. The colored letter blocks shown here are the wireframe fallback for unsupported institutions and manual entries. "Add it manually" link surfaced at the bottom for unsupported banks, credit unions, foreign accounts. First-class fallback, not buried.

9:41●●● 5G
Link an account
Step 1 of 4 · powered by Plaid

Popular

Chase
B
Bank of America
W
Wells Fargo
C
Citi
C
Capital One
A
Apple Card
A
Ally
S
Schwab
Plaid handles the password. Same as Venmo, Robinhood, Coinbase, Cash App. Read-only. we can't move money.
16Account link 2/4 · credentials
Sign in to Chase

This is the Plaid Link sheet rendered inline (per locked v1 pattern: native bottom sheet over backdrop, not webview/system-browser). Selected bank shown in summary card. Two inputs. Encryption hint inline. Accent CTA.

9:41●●● 5G
Connect Chase
Step 2 of 4 · powered by Plaid
C
Chase
Sign in with your Chase credentials
Encrypted in transit · Plaid handles auth · Blunt never reads creds
17Account link 3/4 · connecting
Plaid handshake

Spinner + 4 progress steps that resolve in sequence. Done = win green check; pending = empty circle.

9:41●●● 5G
Connecting…
Step 3 of 4 · powered by Plaid
Connecting to Chase
This usually takes 5–10 seconds
Verifying credentials
Fetching accounts
Importing transactions
Categorizing with AI
18Account link 4/4 · success
"Chase is linked"

Big green check. Account summary list. toggle which to track. Footnote explains the locked S2S timing rule (cards deduct at swipe, not statement). Coach card to acknowledge. Done CTA.

9:41●●● 5G
Connected
Step 4 of 4 · powered by Plaid
Chase is linked
3 accounts connected · 247 transactions imported · Auto-categorized
Checking ····4129$4,820
Savings ····7782$3,420
Credit Card ····8801-$1,247

CARD TIMING: CARD SWIPES DEDUCT FROM SAFE-TO-SPEND IMMEDIATELY. NOT WHEN THE STATEMENT POSTS. SO THE NUMBER IS HONEST ABOUT WHAT YOU'VE COMMITTED.

Stash says

"Welcome aboard. I can see that $1,247 sitting on your card. Yeah, we're gonna talk about that one."

19Weekly recap · card 1 / 7
"A week in receipts"

A 7-card weekly recap, similar in feel to a Spotify Wrapped story. Drops automatically every Sunday at 9:00am via a scheduled job. Users reach it through 4 entry points: (1) Sunday push notification "Your week is in", (2) the prominent recap CTA card on Home (visible Sun → Tue, then collapses to a smaller link), (3) the WEEKLY HIGHLIGHTS card in Notifications panel, (4) Coach's Sunday proactive opener "Your week's recap is ready". Past recaps archived in Profile → Past Recaps. Progress pips at the top. Tap the left or right side of the screen to step through cards. Each card has its own background color tied to the metric it shows.

9:41●●● 5G
Your week · Apr 12 – Apr 18
A week
in receipts.
"Pay attention. We're going through it together."
20Weekly recap · card 2 / 7
"You spent $612"

Tangerine gradient for spending. Mega-mono number is the hero. Fox roast in serif italic.

9:41●●● 5G
You spent
$612
"Up $89 from last week. Your coffee habit is loyal."
21Weekly recap · card 4 / 7
Top 5 merchants

Violet gradient. Numbered list with stat rows. name on left, mono amount on right.

9:41●●● 5G
Top 5 merchants
Where it
actually went.
1. Trader Joe's$38
2. Blue Bottle$22
3. Sweetgreen$14
4. Uber Eats$24
5. Zara$89
22Weekly recap · card 5 / 7
Roast of the week

Coral gradient. Headline IS the roast. bold, line-broken for emphasis.

9:41●●● 5G
Roast of the week
"Zara
$89.
Again?"
— Coach, Tuesday at 4:17pm.
23aAdjust budget · panel
Override the AI's first take

Opens from Breakdown's "Adjust budget" link. Per-category sliders with original AI allocation shown small. Stash banner explains. Save commits new caps; Reset reverts to AI defaults.

9:41●●● 5G
Adjust budget
April · move the dials
Stash pointing
Stash says

"This is my first take. Move the dial wherever feels right. I'll learn from what you change and we'll get this dialed in together."

Allocated

$3,950 / $4,166

$216 unallocated 5% buffer

By category

Shopping

AI suggested $300 · you set $250

$250

Food

AI suggested $300

$300

Bills FIXED

Detected from recurring transactions

$2,500

Fun

AI suggested $100

$100

Savings GOAL-LINKED

Emergency Fund + Japan Trip

$800
23Weekly recap · card 7 / 7
Net worth + share

Final card. Net worth callout + share button (translucent, glassy on the gradient).

9:41●●● 5G
Net worth
+$412
this month.
"Investments are doing the work. You're welcome."

§ 05 · The unhappy path

Empty, loading, and error states.

The three extra modes each main screen needs: empty (no data yet), loading (something is being fetched), and error (sync failed, auth expired, etc.). All designed below.

24Home · empty (fresh user)
No accounts linked yet

Friendly nudge to link a bank. Fox is patient. Net-worth tile shows a blank state, not a fake number.

9:41●●● 5G

Sat · Apr 18 · 09:41

Welcome, Alex.

Safe to Spend · April

— —

Connect an account to see what you've got left

Nothing to roast yet.

"Hook up the receipts. I start judging the moment they hit. That's the whole gig."

§ Section 04 · Recent activity

25Home · loading skeleton
Initial sync

Skeletons match the real layout shape. Pulses subtly. No spinner. feels too "loading". instead, the structure is the loader.

9:41●●● 5G
⟳ Syncing your accounts…
26Home · sync error
Bank connection failed

Inline burn-soft banner at top. App still works. last-known data shown with a "stale" eyebrow. CTA to retry.

9:41●●● 5G

Chase sync failed

Last updated 2 hours ago.

Sat · Apr 18 · 09:41

Morning, Alex.

Stale data

Safe to Spend · April · last sync

$842
— UNSYNCED
Stash says

"Heads up, Chase decided to take a nap on us. The numbers below are stale as $h!t. Don't make a single decision on a 2-hour-old picture. Let's reconnect."

27Sort It · all sorted
Stack is empty

Win state. Done-screen card replaces the stack. Points total + fox quip + "Play again".

9:41●●● 5G

Sort It

Drag to categorize

220 pts

220 points

"Holy $h!t. You finished. That's more than most do."

28Coach · thinking
Mid-response state

User just sent. Three-dot bubble pulses. Input is still active so they can pile on.

9:41●●● 5G

Stash the fox

Doing the math

What if I cut my food spending in half?

🦊
29Coach · offline
No connection

Header status flips to red. Banner explains why. Last reply is preserved. Send button disabled.

9:41⚠ Offline

Stash

Offline

Can't reach Stash

Check your connection. We'll resend when you're back.

Today, 9:41 AM

🦊

"Welcome back. 7 days straight. You might actually be serious this time."

How do I save $500 this month?

! Failed to send · tap to retry

30Breakdown · no goals yet
First-month, no goals set

Categories show but goals area has an empty state with primary CTA to create the first one.

9:41●●● 5G

Breakdown

April 2026

This month
Stash says

"Your categories look fine. But you haven't set a single goal. That's how money walks out the door without a name on it. Let's give yours one."

Food
5 transactions
$280
Bills
4 transactions
$450

No goals yet.

"Pick something to save for. Or something to pay off. The point. Pick one."

31Notifications · empty
All caught up

Tabs stay so user can switch. Body shows the "you're up to date" empty state. Fox is calm.

9:41●●● 5G
Notifications
All caught up

Inbox zero, almost.

"Either you've been good. Or I haven't been paying attention. Bet on the second."

32Account link · auth failed
Wrong credentials

Step 2 retry state. Both inputs flagged. Inline burn message. Helper link to bank's password reset.

9:41●●● 5G
Connect Chase
Step 2 of 4 · retry

Couldn't sign in

Username or password is wrong. Try again or reset at chase.com.

C
Chase
2 attempts remaining

Password too short or incorrect.

Forgot? Reset at chase.com

33Subscriptions · empty
No subs detected

Either fresh user or a clean spender. Fox compliments. CTA points back to Home.

9:41●●● 5G
Subscriptions
No active recurring charges

Zero burn.

"No subs detected. Either you're disciplined or I'm missing data. We'll see."

34Goal detail · brand new
0% saved, no history

Empty ring. Stat tiles show "—". Bar chart is all faded future. Coach gives a starting nudge.

9:41●●● 5G
Japan Trip
0%
$0
of $2,500
⏱ Pace not set
Pace
not set
To go
$2,500
remaining
Streak
0
months
Stash says

"New goal! Let's do this. Tell me a monthly pace and I'll let you know when you're flying. No pace = no plan = no Japan. Pick one."

§ 06 · Build handoff

What's locked and ready to build.

A summary of the design decisions baked into this wireframe, plus the few items still open for engineering to confirm.

✓ APPLIED

  • Hero metric: Safe to Spend.
    Replaced "Net Worth" as the home hero with "Safe to Spend · [month]". discretionary $ left after bills + goal contributions. A decision-helping number, not a vanity one. Net Worth lives on as a tile in the fin-grid.
  • Fox is named Stash.
    Foxes literally cache (stash) food in the wild. so the name is biologically apt for a fox character. It also drops the wordplay where Stash (the fox) finds the money you've been stashing in the wrong places. Single syllable, street-smart, gender-neutral. Introduced on welcome, surfaces in chat header, signs the home pull-quote and every "Stash says" pill.
  • Stash is a sidekick, not a profile pic.
    Two render modes: .fox (circular avatar, used for chat header, profile, tight inline) and .stash (full-body, used everywhere he should feel like a Clippy/Duolingo-style companion). Stash now stands beside every "Stash says" speech bubble, leans on the home hero card, dominates the welcome screen, and is recognizable when in a circle. Both modes take a data-pose attribute; a script at end of file does the asset swap.
  • Transparent assets, end to end.
    Source PNGs were RGB without alpha; source mp4s had a solid off-white background. both rendered as visible white/gray rectangles on dark surfaces. Fixed both with per-frame corner flood-fill chromakey (not blanket color-match. that would key out the fox's cream belly too). Static PNGs → RGBA in /static/transparent/; mp4s → animated WebP with alpha in /anim/. Stash blends seamlessly onto any surface. light, dark, ink, paper. keeps his cream belly opaque, and still animates.
  • Angry-mode grawlix dialed up.
    When Stash is mad, he curses harder. Breakdown banner: "$247 on shopping. $h!t. $47 over." Home sync error: "Numbers are stale as $h!t." Subs cancel: "Cancel this $h!t." Always at the receipt, never at the user. Combined with the welcome A$$, home hero @#$&, and sort win $h!t, that's seven grawlixes total. heaviest on roast surfaces, none on gentle/welcome moments. DS rationing respected.
  • Copy edged up per DS §02.
    Killed most em dashes (per your direction). Welcome intro now lands the wordplay: "Stash. The fox. We're about to kick some financial A$$. Yours, specifically." Home hero closes with "Try not to @#$& it up." Sort done-card cheers with "Holy $h!t." Voice formula [number] + [judgment] + [verb] applied throughout. One grawlix per screen max (DS rationing). No exclamation points (the fox doesn't yell, it judges).
  • Tagline tightened.
    "No Filter · No BS · Just Facts". three-beat declarative, replaces "No filter, no BS" everywhere it appears (splash, welcome, masthead). Subhead now references "reads your receipts". recurring motif.
  • Status chips polished.
    Was solid primary green/red. felt iOS-native, not modern fintech. Now soft rgba tints + bordered + saturated text. New .on-ink modifier handles dark hero surfaces.
  • Tokens replace inline hex.
    911+ token references; inline hex restricted to required bank-brand colors. Engineering can theme by changing one file.
  • Editorial framing everywhere.
    Mono eyebrows (Sat · Apr 18 · 09:41), § section markers, Vol/Issue tags. Highlighter rule enforced. one yellow phrase per screen.
  • Coach voice consistent.
    Fox quotes in serif italic across every surface. The byline pill. formerly "Stash says". is now "Stash says" everywhere, locking the character in as a brand entity.
  • Profile retokenized.
    Was the most off-system screen in v9. Now uses cards, inputs, chips, and the ink-hero pattern from the goal panel.
  • 10 edge states added.
    Empty (home, breakdown, notifs, subs, goal-new), loading (home), error (home stale, coach offline, account-link auth-failed), and sort-it done-card.
  • PRD audit changes integrated.
    After cross-referencing the BLUNT PRD: AI safety guardrail copy added to Coach input ("Stash doesn't do investment picks. Just budgets."); new Budget Adjustment Flow panel; real-time spending-feedback toast pattern added to component library; Priority Action card on home; Highlights section in Breakdown; Income Streams section in Profile (handles irregular income for Side Hustle persona).
  • Highlights system (behavioral insights).
    Rule engine: goal × category × frequency × triggering transaction = highlight. The same data appears on three surfaces, all branded as "Highlights" so users learn one concept: (1) Coach proactive opener (yellow-tinted "Stash highlighted something" bubble); (2) HIGHLIGHT notification card in the Notifications panel; (3) Highlights section in Breakdown ("What Stash highlighted") with goal-contradiction / recurring-spike / decision-quality cards. Single data source → consistent voice across passive and active channels.

✓ §14 LOCKED

  • Brand. locked.
    Character is Stash the fox. App is BLUNT. Tagline holds: "No Filter · No BS · Just Facts." Use full "Stash the fox" on first mention; "Stash" alone after.
  • Tone toggle. locked, hybrid model.
    User picks baseline tone in onboarding (default $h!t, medium). Each nudge ships 3 tone variants. Auto-escalate bumps Stash one step up after 3 weeks of overspend, then resets when the user recovers. Visible in profile + a "Stash is heating up" notice on tone-climb.
  • Safe-to-Spend math. locked.
    Irregular bills (annual subs, taxes, AmEx fee) amortize monthly and reserve out of S2S in equal slices. Credit-card spend deducts from S2S at swipe (post-date), not statement billing. math reflects what you've committed, not what's hit checking. Footnote on account-link success screen explains it.
  • Notification deep-links. locked.
    Tap a transaction-tied notif → opens the transaction detail with a Stash speech-bubble at top carrying the roast/nudge copy. Coach is one further tap away from the bubble's "talk to Stash" CTA.
  • Plaid integration. locked, methodology research complete.
    Native inline Plaid Link sheet (matches 5/6 best-in-class apps: Copilot, YNAB, Lunch Money, Rocket Money, Monarch). Single provider at v1; revisit MX/Finicity backup based on production data. Manual entry as a first-class fallback. See Plaid methodology. best-in-class memo.md.
  • Walking pose. locked.
    Used in splash + onboarding step transitions (Stash walks across the bottom between onboarding 1→2→3→4). Not used in empty states or Sort-It. Keeps the pose tied to "arrival" beats.
  • Pose-asset weight. locked.
    Bundle neutral + welcoming in the binary (~1.7MB cold-start). Lazy-fetch the other 5 (thinking, angry, celebration, pointing, walking) from CDN on first use, then cache. Static PNG fallbacks for all 7 ship in the binary as a safety net (~400KB).
  • Behavioral-insights library. locked.
    v1 ships ~12 nudge templates × 3 tones = 36 strings covering top 8 categories. Templates: overspend by category, streak break, subscription bloat, sort-it pile-up, goal stall, irregular income drop, recurring overspend pattern, weekend splurge, late-night spend, payday burn, savings dip, win nudges. Expansion based on usage data post-launch.
  • Custom merchant rules. locked.
    Sort-It auto-learns after 3 confirmed sorts of the same merchant→category. Right-swipe to override one transaction. Long-press to set a permanent rule (e.g. "Always Coffee for Blue Bottle"). No separate Rules screen at v1; in-context override only.
  • Platform scope. locked.
    v1 ships iPhone + Android. Tablet variants deferred. Design tokens stay platform-agnostic; component layer forks where Material differs from Cupertino.

⚠ STILL OPEN

  • Sort-it gesture interaction.
    Static stack shown. Production: 4-direction swipe + combo system + haptics + the new auto-learn / right-swipe override / long-press rule layer. See v9 JS for working logic. wireframe doesn't try to match the live drag.
  • Net-worth chart.
    Detail panel chart from v9 (line + area gradient) not yet rebuilt under DS. Decide: monthly + YTD toggle, or single default view?
  • Plaid backup provider (v1.x).
    Single-provider at v1 is locked. Revisit MX vs Finicity backup after 4 weeks of production data. If <90% of users complete first-link successfully, add a backup provider.
  • Plaid Income API + Identity prefill.
    Two v1.5 evaluations: Plaid Income (paycheck detection for irregular-income users) and Plaid Identity (prefill onboarding from first linked account, cuts ~3 fields).

↻ USER-FLOW MAP

Every screen + feature has a clear trigger (how the user gets in) and a clear destination (where the next action lands). This map locks that contract so nothing in the app is orphaned.

Screen / Feature How users GET there Where actions LEAD
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-loginBell 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 anywhereSend → 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-linkHighlights 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 herePersonal 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 CoachStep 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.

Audit result: No orphaned features. Every screen has at least one trigger from outside, and every screen has a clear close/back/next path. Push-notification deep-links resolve to specific in-app destinations (locked §14). Sub-panels (Notifications, Subs, Goal, Account Link, Recap) all close back to the screen that opened them.

Build sequence suggestion: Start with §01 components in code (button, card, fin-tile, list-row, bubble, np-hdr) → home screen → onboarding (with walking-pose between-step transition) → coach → sort (with auto-learn + right-swipe override + long-press rule) → breakdown → profile (tone hybrid + auto-escalate) → sub-panels (account-link with native Plaid sheet + manual fallback) → recap. Edge states fall out of the screens once the data layer is wired. Plaid Link + AI streaming are the two hard integrations; everything else is composition. Asset loading: bundle neutral + welcoming poses in binary, lazy-fetch the rest from CDN per locked §14.