
Lab · Case study
Anya Ngay
A twenty-second mood check-in for the people who answer “okay lang” on reflex.
Role
Product design — end to end
Scope
Product · design system · prototype
Type
Self-initiated
Year
2026
Overview
The people who most need to pause are the ones who never ask.
Anya Ngay names a feeling in the language its user actually speaks — and is explicit that it offers awareness, not treatment. Every decision below is on the record, including the one I reversed.
28
Locked decisions
237
Design tokens
15
Test sessions
5.5/7
Average SEQ
What this proves
Evidence
The usability test failed my own design.
A flow I was confident in finished 2 of 12 times — and testers rated it the easiest of the three. Confidence while going the wrong way is the most expensive failure to find late.
Integrity
I dropped a claim the research killed.
The six mood shapes were presented as drawing on Cordillera visual culture. A deep research pass found no documented motif carries an emotional meaning — so the claim went, and the artwork stayed.
Research · Product · Design system · Prototyping · Localization
01 · Discover · Define · Design
Clinical feels like overkill. Journalling loses to a packed schedule.
High-functioning people mask stress until it surfaces as burnout. What exists is either too clinical to identify with, or too effortful to sustain — and for an Ilocano speaker, English-first as well.
The wedge: non-clinical, low-effort, in-language. Awareness, not treatment.
Localisation is copyable — any competitor can translate a string file. The register is not: the way a kabsat actually asks how you are.
Twenty-eight decisions are logged with their reasoning. These six carried the most weight.
D1 · Local-first, account optional
No required signup in the first version. It removes first-run friction and makes “your data is yours” literal rather than a line in a policy.
D20 · Voice is 50% English, 30% Tagalog, 20% Ilocano
An earlier decision made Ilocano lead. Read back, it sounded like a textbook to bilingual users — so I flipped it. Ilocano stays potent precisely because it is the accent, not the whole dish.
D19 · Anonymous-minimal telemetry
Four content-free events, no session replay, no autocapture. Mood values, reflections and history never leave the device in any build.
D18 · Consent gate on test builds
Session replays are personal data. Recording testers without telling them would contradict the exact promise the product makes.
Emoji as a system
Hybrid by necessity. Vectors cannot do soft-3D shading, so hero emoji are 3D renders and the small system set stays outlined vector, with strokes outlined to fills so they scale at any size.
Grounded, not decorated
Eleven behavioural mechanisms — affect labelling, emotional granularity, self-determination, peak–end — mapped to concrete patterns, alongside an explicit list of dark patterns the product refuses to use.
02 · The product
Dark everywhere, except the one moment that matters
Dark-only by decision — the app is opened one-handed, at the edges of the day. The one exception is the check-in, which lifts into pale mint so naming a feeling reads lighter than everything around it.

Onboarding

Check-in

Home
03 · Colour
One accent, held back
Mint is the only accent, so it always means the same thing: this is the thing to touch. Mood colour floods the screen on check-in, then recedes. Coral is reserved for destructive actions.
Page
#00201D
The base. Dark-only, by decision.
Raised
#005049
Cards and raised surfaces.
Mint
#39FCE9
The one accent. CTAs and highlights.
Tint
#B2EEE5
Muted text and quiet supporting copy.
Coral
#FC4039
Reserved — destructive only.
04 · Voice
Fifty English, thirty Tagalog, twenty Ilocano
I started with Ilocano leading every line. Read back it sounded like a textbook — this user thinks and texts in a mix. The ratio settled near 50 / 30 / 20: English carries the interface, Tagalog carries the sentence, Ilocano carries the relationship.
English · 50%
“How are you today, kabsat?” · “Let’s go nga dagus”
The neutral base. Interface verbs and anything technical stay in English — the way this user reads them.
Tagalog · 30%
“Walang tama o mali, kabsat.” · “Hindi iisang mood ang buwan mo.”
The connective tissue. The everyday register that carries the sentence.
Ilocano · 20%
“Anya ngay?” · “Naimbag nga aldaw!” · “kabsat”
The address, the greeting, the name-line. One or two beats a screen, never a paragraph.
05 · Deliver
Tokens, components, product
Three tiers, 237 variables, 20 components, versioned to v0.8. The semantic tier is named for emotion rather than hue — Anxious, not Orange — so the mapping from feeling to colour lives in one place and can change without touching a screen.
1 · Primitives
117
Raw ramps — six mood hues plus mint and green. Never bound to a screen directly.
Color/Green/950 · Color/Mood/Coral/700
2 · Tokens
13
The numeric layer: radius, border width, scale.
Border-Radius/md = 16 · Border-Width/sm = 1
3 · Semantic
97
Role-named — and emotion-named for moods, never hue-named.
Surface/Page · Text/Muted · Mood/Anxious/Base
Storybook · soon
06 · Process
Two contexts, six phases, one codebase
The design system and the product live in separate contexts on purpose — one authors ANYA-DS, the other consumes it. A gap found mid-screen goes back as a token request rather than being hand-built, which is what stops the system drifting.
0 Foundations → 1 Design system → 2 Screens → 3 Build → 4 Validate → 5 Ship
The stack
Figma
Design system
Claude Design
Screens · emoji
Claude Code
The build
Notion
Expo · TypeScript
One codebase
PostHog · Clarity
Instrumentation
Vercel
Test build
Storybook
Next, not built
07 · Validation
Two tasks passed. The third finished 17% of the time.
Fifteen real sessions, 439 tracked interactions, three timed tasks.
Changing what the app may keep finished twice in twelve attempts — and was rated the easiest of the three, at 6.0. People were confident while going the wrong way, which is the most expensive kind of failure to find late. 64% never scrolled home, and the first tap landed on settings half the time. The control was not hard to use. It was somewhere nobody looked.
08 · Reflection
The decision I reversed
The six mood shapes were originally presented as drawing on Cordillera visual culture. A deep research pass — 21 sources, 98 claims, 25 of them adversarially verified and 10 killed — found that no documented Cordillera motif carries an emotional meaning. Every recorded gloss is theological, agricultural, protective or status-bearing. Sun-as-happy was refuted outright. Worse for reuse, much of the vocabulary is rank-governed or earned, and using it without context is defined by Ifugao cultural authorities as irresponsible.
So I kept the artwork and dropped the claim. Sun-as-warmth and teardrop-as-sadness are near-universal, and the shapes still work — they simply are not heritage, and saying so would have been a nicer story than the truth. The limits of that finding are on the record too: it argues from an accessible-record silence, oral tradition was out of scope, and the consent question under IPRA remains unanswered. Genuine grounding would require community consultation, not a research pass.
What I would validate next
UI / UX
Re-test the flow the test broke
The data-control task finished 17% of the time, and 64% never scrolled Home — so everything below the fold is unproven rather than unpopular. Move the control to where the first tap already lands, then run the same three tasks again and compare.
Business
Retention is the whole bet
Mental-health apps sit near 3.3% median D30 retention, so the honest target is 4+ days a week among activated users, not everyone. The moat is the register, not the translation: a competitor can copy a string file, never the way a kabsat asks how you are.
Neuroscience
Affect labelling is the mechanic
Naming a feeling reduces its intensity — among the better-replicated findings in affective neuroscience. Eleven mechanisms map to concrete patterns, but the line between strong and merely suggestive evidence stays explicit. The product promises awareness, not treatment.
Marketing
Language choice is a demand signal
The test build logs which locale people switch to, which tells you where translation quality actually returns. Positioning as awareness rather than therapy also sidesteps the stigma that keeps this audience away from clinical apps — and away from the category’s usual playbook.
Still open: whether a crisis-safety affordance belongs in the first version or the one after it. That one needs a judgement call, not more desk research.