So four developers build one product

The UI kit

Colors, type, components and the rules behind them. Everything on this page is live HTML and CSS — inspect it, copy it, or hand it to whoever sets up the component library. It is intentionally small: fewer choices, fewer inconsistencies.

Color

Teal#1FABAA Primary action. One per screen — if everything is teal, nothing is.
Navy#14324f Headers, headings, structure. The steady voice.
Royal#2F5FD0 Links and secondary emphasis. Never a primary button.
Gold#C9A227 Celebration only — pre-qual letter, clear to close.
Success#1f9d55 Accepted, complete, verified.
Attention#e4a24c Needs redoing. Not an error — a nudge.
Stop#C1503A Guardrail blocks and at-risk loans. Rare on purpose.
Clone#55568F The AI clone’s voice — and only ever that. Never a button.
Muted#6b7a8c Explanatory copy. Most of the reassurance lives here.
Contrast: every text/background pair used in the prototype meets WCAG 2.2 AA. M16 makes an independent accessibility audit a launch item, not a nice-to-have.
Two colours carry a darker twin, and it is not optional. Stop #C1503A measures 4.11:1 on its own pale background — under the 4.5:1 floor for body text. Small text on a tint therefore uses #A8402C (5.36:1); the clone uses #484975 (6.50:1) the same way. Full strength is for fills, borders and icons. The tokens are named --stop-ink and --clone-ink so this cannot be got wrong by accident.

Type

question · 19px / 680
About how much is the home?
section title · 13px / 600
Your application
body · 13.5px / 400
Connect your payroll and we’ll fill this in for you.
hint · 11.5px / muted
A ballpark is fine — we can change this later.
legal · 10.5px / muted
Equal Housing Lender. CLEAR Home Loans NMLS #XXXXX.

Rules

✓

System font stack. -apple-system, "Segoe UI", Roboto — it loads instantly and looks native on the device the borrower actually owns.

✓

16px minimum on inputs. Anything smaller makes iOS zoom the page when the field is focused. This is the single most common mobile form bug.

✗

No all-caps body copy and no justified text. Both hurt readability, and one of them looks like a disclosure trying to hide something.

✓

Plain language above legal language. Every disclosure gets a one-line human summary sitting on top of it.

Components

Buttons

Full width on phones, always. One teal primary per screen; gold is reserved for a win.

Choice

$350,000 – $450,000 ✓
$450,000 – $600,000

Tap targets ≥44px. Ranges beat free text — a borrower who has to be precise stops.

Input

•••–••–____

Native keyboards by input type. Mask sensitive values on screen; never log them.

Progress

Section 3 of 8 · saved just now

Always show both the bar and the words. “Saved” is doing as much work as the bar.

Reassurance note

Connecting can qualify your loan for faster verification — fewer documents later.
E-SIGN consent captured before delivery. Every signature is timestamped.

Teal explains a benefit. Sand carries a legal or timing fact.

Status pills

Sent 08.03 Awaiting you 4 days idle Clone replied

Soft fills, dark ink. A borrower mid-purchase should never be shouted at — the colour sets the mood, the ink does the contrast work.

Guardrail block

⛔ Guardrail triggered — response blocked

Category: rate quote. Converted to escalation. Logged.

Shown in the prototype so the team sees it. In production the borrower sees the warm handoff, not the machine reason.

The unhappy path

Every demo shows the happy path. Loans die on the other one. These three states are part of the kit — not error handling bolted on at the end — because the moment a borrower is stuck is the moment the product either keeps them or loses them.

The three states, and who owns the next move

✓
Done — nothing owed

“Nothing needed from you today. We’ll text the moment it moves.” Silence is the failure mode here; say it out loud.

!
Needs redoing — the borrower’s move

“Re-send this one — the last upload was cut off at the bottom.” Name the fix, never the fault. This is a nudge, not an error.

⛔
Blocked — a human’s move

The borrower never sees a dead end. A block always resolves to a named person with a time: “Christa will call you this afternoon.”

Rules that make it work

✗

No state may end without a next action. A screen that says only what went wrong is unfinished.

✓

Never colour alone. Every state carries an icon and words — 1 in 12 men cannot separate the terracotta from the green.

✓

Stop is rare by design. If terracotta is common on a screen, the screen is wrong, not the palette.

✓

Progress survives a stumble. Nothing already entered is lost when a step fails — saved state is shown, in words, on the failure screen itself.

Amber and terracotta are deliberately far apart: needs redoing is routine and the borrower can fix it alone; blocked means a licensed human now owns it. Collapsing the two is how a product teaches people to ignore its warnings.

Voice — how the product talks

✗

“Please provide documentation evidencing your income.”

✓

“Your last 2 paystubs — so the underwriter can confirm your income.”

✗

“Your submission has been received and is pending review.”

✓

“Nothing needed from you today. We’ll text the moment it moves.”

✗

“Error: document rejected.”

✓

“Re-send this one — the last upload was cut off at the bottom.”

The four tests

1

Say why. Every request for something private carries its reason in the same breath.

2

Name the next thing. A borrower should never wonder what happens now or who has the ball.

3

No blame in errors. The document was cut off; the borrower did not fail.

4

A person’s name, not a department. “Christa will call you” beats “a representative will be in touch.”

Spanish is held to the same bar. A translated string that reads like a form defeats the point — M-group items treat Spanish as a launch-tier experience, not a language pack.

Who is talking — the clone and the system are never the same voice

One conversation, three speakers

The system
Section 3 of 8 · saved just now.
Christa — AI clone
Most people here just connect payroll — it saves you digging out paystubs later. Want me to walk you through it?
The borrower
What if my hours change every week?
Christa — AI clone
Variable hours are normal — underwriting averages them. I can’t tell you what that does to your rate, but I’ll have the real Christa call you today with the number.

That last line is the whole charter in one bubble: it helps, it declines to quote, and it hands off to a named licensed human with a time.

Why the clone gets its own colour

✓

Indigo #55568F, everywhere the clone speaks. Same colour on the docked bubble, the chat, the LO desk transcript and the guardrail log. A borrower should recognise who is speaking before reading a word.

✗

Not teal. Teal is the borrower’s own action — the one thing they can tap. Dressing the AI in it implies the AI is acting for them.

✗

Not royal. Royal means “this is a link.” The prototype flow map currently marks the clone royal; that is the collision this token fixes.

✓

Disclosure rides the colour, not instead of it. Colour is recognition; the label “AI clone” is the disclosure. 71% of borrowers want to be told when AI is used — J.D. Power. Never one without the other.

The clone never speaks in a status colour. Green, amber and terracotta belong to loan state. If the clone delivers bad news, the bubble stays indigo and the words carry the weight — otherwise the AI starts looking like it made the decision.

The five rules the clone is written to

Never quote a rateThe clone answers process questions and reassures. Any number a borrower needs comes from a system-of-record screen, in mono type — never from the clone’s own sentence. The typeface is doing compliance work: mono means “a system produced this,” prose means “someone is talking.”
Name the LO, and name the AI“I’m Christa’s AI assistant” — never “your virtual assistant,” and never just “Christa’s assistant.” The clone represents a real person the borrower can still reach, and says plainly that it is not her.
Specific nudges, not reminders“You’re 60% done — pick up where you left off” beats “Don’t forget to finish your application.” A nudge that cannot be acted on immediately is just guilt.
Consent reads plainlyEvery disclosure event states what it is and when it happened — no legal shorthand the borrower has to interpret. The one-line human summary sits above the legal text, never below it.
The realtor gets status, not detail“On track for the 28th” — never a number, a condition, or anything financial. The partner surface shows locked or floating and the expiry date, and never the rate.
Willis changed one of these, and it is the one to argue about. The source draft read “I’m Maria’s assistant.” That is warm, and it is also how a human assistant introduces themselves — a borrower can finish the whole conversation without ever learning they were talking to software. J.D. Power puts 71% of borrowers wanting to be told when AI is used, and the Atlas charter makes disclosure structural rather than optional. One word — AI — keeps the warmth and closes the gap. If counsel wants it softer, that is counsel’s call to make on the record, not a copy decision.

Accessibility floor

Target device

A mid-range Android on cellular. That is the definition-of-done device (11.3), not a desktop browser.

Never color alone

Every status carries an icon or a word beside the color. Red and green are the two most common forms of colorblindness.

Screen readers & focus

Real labels, visible focus rings, logical tab order. WCAG 2.2 AA verified independently before launch (M16).