A design case study

Everyone else shows you where your money went. North tells you where you’re going.

The judgment a financial advisor sells for thousands a year: do this, not that, and here is why, for you, this month. North reads your whole picture, surfaces the one decision that matters now, and checks back on what you decided.

The work of

Tanmay Jain, Design Director

North is a solo-directed product. One person set the strategy, drew the identity, designed every screen, and held the standard through implementation. Every judgment on this page was made here: what shipped, what was cut, what is never for sale. The record of it is public in the repository. The build was executed with an AI engineering partner working under that direction, which is the reason nine finished surfaces exist here rather than three sketches.

It is a complete, working system rather than a prototype: deployed, and open to anyone with the link. Its own strategy set the bar: that a reader understands the thinking quickly and wants to use the thing, rather than that an adoption curve looks good. Every decision here was made against that.

Strategy

Thesis, audience and anti-users, the pricing principle, and the scope discipline that cut the chart every competitor ships.

Identity & visual system

The compass wordmark, three typefaces, three color families, and a token architecture components cannot bypass.

Product & interaction design

Four destinations, one decision card, onboarding as a conversation, the derivation overlay, and voice mode.

Engineering direction

Every screen reviewed in the browser and settled by measurement rather than opinion, so the design did not degrade on its way to shipping.

9
product screens
25
design-system components
602
tests, none failing

01 · The problem

Judgment is the scarce thing.

Financial information is free now. Judgment is not. The part of an advisor’s job that says this, not that, and here’s why, for you, this month still costs $3,000 to $8,000 a year, and most firms will not take a client below $250k in assets. Everyone under that line gets generic advice or none.

North’s bet is that the judgment layer becomes software, and that the difference is where the intelligence sits.

Every competitor puts the AI in the conversation layer. North puts it in the judgment layer.

Built for

  • The unadvised earner. Strong income, no advisor, idle cash in checking.
  • Everyone, unasked. There is no persona picker. Deriving the situation is the coach’s job, not the user’s.

Deliberately not for

  • Acute financial distress. The honest answer there is a nonprofit credit counselor.
  • The $40 grocery optimizer. That is YNAB’s job, done well, by YNAB.

The assumption everything rests on

That judgment, not information, is the thing this person actually feels the absence of.

Every audience claim on this page depends on it, and it is unvalidated: North has been tested against its own engine and 31 real phrasings, not against the person it was built for. The study I would run first is small. Six to eight people in the segment, shown their own idle cash, asked what they would want next. What matters is whether they say I don’t know what to do with it or I know, and I haven’t. The second answer would mean the scarce thing is follow-through rather than judgment, and North would need to become a different product rather than a better one.

02 · The engine

Seven rules, in order, for everyone.

How do you serve everyone without asking who they are? A waterfall: seven rules in a fixed order, checked against what a person actually told the coach. The first rule they do not yet satisfy is the one thing North raises today.

So a surgeon and a teacher in the same situation get the same read, and nobody is ever asked to pick a category for themselves. Here is that ladder as the product draws it: what is behind you goes quiet, what is ahead stays dim.

The ladder, and where this person stands

3 of 7 · High-interest debt
  1. 01Liquidity floorbehind you
  2. 02Employer matchbehind you
  3. 03High-interest debtyou’re here
  4. 04Tax-advantaged space
  5. 05Goal funding
  6. 06Surplus with nowhere to go
  7. 07Optimization

Position, never progress. A settled rung gets less ink rather than more. Nothing animates, nothing celebrates, and the order never re-sorts.

Why there is no persona picker

The usual way, rejected

if (persona === "young_professional")

Sort each person into a bucket, then write separate advice for every bucket.

  • The reader has to classify themselves, which is the coach's job handed back to them.
  • Anyone between labels gets advice written for somebody else.

What North does

waterfall.firstUnsatisfied(profile)

Walk one ordered list of seven rules against what this person actually told the coach, and stop at the first rule they do not yet meet.

  • Nobody names their category: the profile is built from real answers.
  • A situation nobody anticipated still lands on a sensible rung, because the rules are about the situation rather than the label.

Both are one line of code. The difference is who does the thinking: the reader, or the coach.

The engine is pure TypeScript with no model call anywhere in the path to an answer. The same situation always produces the same read, no figure can be invented, and no answer depends on a service being available. The rule is held by a test titled “income does not determine the rung”. A $400k earner and a $60k earner land on the same rung when their situations match.

03 · The system

Restraint is the premium signal.

The register is an editorial magazine, not a trading terminal. Light pages, warm neutrals, a serif doing the talking. The sharpest decision is that the primary action is ink rather than a colored button, which sidesteps fintech’s entire vocabulary of trust-blue and growth-green.

It reads as print, and print is the most expensive thing a screen can do.

The mark

The O is a working compass, and its north point is the one filled shape in the identity.

Three faces, three jobs, each shown at its working size

Newsreader · the voice

Your $140,000 in cash is the problem, not the win.

Geist · the interface

Move the excess into tax-advantaged space

Geist Mono · the figures

$578K – $1.5M · 4 of 7 · 25 years

The serif is the coach thinking. The sans is the interface getting out of the way. The mono is the machine computing.

Three color families, and no more

Ground

Warm paper, four steps of it

paper-0
paper-50
paper-100
paper-200

Ink

All text, and the primary action

ink-900
ink-800
ink-600
ink-500

Signal

At most one element per viewport

indigo-600 · the coach
clay-600 · attention

Amounts are never colored and direction is a glyph, so the palette is colorblind-safe by construction.

Every number carries its confidence

You hold in checking, about of expenses, growing at a year.

Stated, inferred, or assumed. A screen reader hears the same distinction. No other personal-finance product does this.

The width is the uncertainty, and you can drag it

Drag the field to try a different year.

The band's width is how much North does not know, so a reader sees the confidence without reading a word. The bars breathe on a slow stagger, because uncertainty is alive. Drag it, or use the arrow keys, to move the horizon year.

One drawing, six strokes

Every figure interpolates into every other. The component is mounted once and fed new ids, because remounting it would be a swap rather than a morph.

Six pieces, one argument: not one of them is a style choice. Each is a rule the product cannot get around: a mark that may not be redrawn, a face that appears at one job only, a number that cannot reach the screen without stating how well it is known. A system is what still holds when the person who set it is not in the room.

Which is why the system is enforced rather than documented. A component cannot reach past the token layer to a raw colour. The principles are pinned by tests that fail the build. The gallery at /design measures its own contrast so it cannot go stale, and ten documents record why each rule exists, because a rule whose reason is lost is the first one broken. None of that was necessary for one person. It is what I build so a team can move without me.

04 · The screens: live, not screenshots

Pick a moment. The product runs, right here.

Both devices are the real app, seeded with nine months of story. Scroll the read, open a derivation, hold a decision. Choose a journey to begin; pressing the one you are on resets it.

Nothing is running yet. Choose a journey above.

05 · The calls

What was cut, and what is never for sale.

The MVP is not the list of good ideas. It is the shortest path to the thesis being undeniable, and anything that does not shorten that path waits, however good it is.

Trajectory, the standalone charting surface every competitor ships, was the most expensive item in the original scope and the least load-bearing. It was cut. What survives is the horizon fan under the day’s decision, where a range makes the choice in front of you feel consequential. That makes it the rare cut that also improved the product, since a projection isolated in its own tab is divorced from the thing that moves it. Free-form chat was cut for a different reason: omitting it is a positioning statement.

Membership follows one principle: the coach’s judgment is never paywalled; its time is. Free carries the entire decide, track, check-back loop. Plus buys room to think: more scenarios, the spoken conversation, every goal instead of the first.

The ethics pin is a test, not a policy

assert.ok(FREE_SCENARIOS.has("debt-first"),
  "the copy just became a lie")

It reads: the free tier must always contain this one scenario. Should anyone ever move it behind the paywall, the test fails and the change cannot ship.

FREE_SCENARIOS
The set of what-ifs a free member can open.
"debt-first"
The scenario that tells you to stop losing money to high-interest debt.
"the copy just became a lie"
What prints when the check fails. The product promises the judgment is never paywalled; moving this would make that sentence false.

A principle in a document is a hope. A principle in the test suite stops the build.

06 · The reversals

Three things I was wrong about.

A case study that runs in a straight line from thesis to execution is describing a project that never met anything it did not expect. These three are the places North changed direction, with what triggered each and what the change cost. The third reversed a rule I had written down myself.

  1. The coach's router

    What I believed

    Recognise the questions I planned for and refuse the rest. For a product that must never answer a markets question, refusing by default felt like the safe posture.

    What changed it

    Measured against 31 ordinary phrasings, it refused 12 of the 29 it could answer (41%), including every form of “what can you do”. Widening the term lists took that to 2 of 31, which looked like a fix. A second survey, written blind against the new lists, refused 25 of 29. The lists were never the problem; the polarity was. Refusing on the absence of recognition made them responsible for every way a human might phrase a question, and no list can do that.

    What it cost

    Inverting it makes the refusal list the one that must be complete. An adversarial review found it wrong in both directions: 36 findings, 24 confirmed.

  2. A fifth destination

    What I believed

    The spoken coach would be its own surface: “Read this to me”, a narrator for the page you were on.

    What changed it

    A one-sentence review: a page narrator is not a coach. My own voice document had said so on its first page, that North is already a conversation and it just happens to be typed, and I had not applied it.

    What it cost

    The planned fifth tab was cancelled and folded into Navigator, which had always been the surface for thinking something through.

  3. A rule I had written down

    What I believed

    Voice is never a mode, with no state you enter and have to leave. The rule existed to stop North disclosing your balance to a room you had not chosen.

    What changed it

    A mode you deliberately enter and leave with one tap serves that reason better than ambient speech does. Nothing begins by surprise, and the exposure is bounded by a surface you can see you are in.

    What it cost

    The letter of the rule reversed; its purpose intact. The typed conversation stays the visible twin, so nothing is ever voice-only.

And the same standard, at the scale of a single line

  • Spacing: a gap belongs to the weaker relationship it separates

    One rule replaced eight ad-hoc gap values across the app.

  • Every mark sits on its line by construction, not by a number

    Three hand-tuned pixel nudges retired by one primitive measured in line-heights.

Commit messages, verbatim. Each replaces a local patch with a rule the system can hold. This is the standard I would want a team operating at, held here by one person.

What all of them have in common is that the reason outlived the rule. A rule is a hypothesis with a reason attached; when the two come apart, the reason is the part worth keeping.