Chexy Design System

We implemented a design system across two code bases, a code sandbox, and Figma. The goal was to establish clear guardrails and standards for craft, while we scaled the design team from one to three.

Team
Role
Christine Ung
Lead Designer
Dela Bahmani
Lead Engineer
Timeline
3 weeks

At Series A, product-market fit came from shipping fast. With growing pains, systems means going even faster, but with more precision.

No more frankensteined UI, QA bottlenecks, or subjective design debates.

Colour ramps
Hover a swatch for its token and hex
Paper
Purple
Gold
Sky
Green
Red
1
Brand colours
Royal Purple, Stacks of Gold and Blue Sky
2
Semantic colours
Success, caution and error

Catalyzed by a company rebrand, we were given brand guidelines: a royal purple, gold, and sky blue.

Plus a satirical tone to the content. I was challenged with implementing this into a trustworthy fintech app.

Tokens in use
AaAaAa

Every payment earns you something

Pay the bills you already have and collect rewards on every one of them.

Rewards are issued by the card network, not by Chexy.

1
Surfaces
Background/primary / secondary / tertiary
2
Type colour
The headline is text/primary, its supporting copy text/secondary, the disclaimer text/tertiary
3
Weights
Regular (400), Medium (500) and Bold (700)
Stroke
stroke/primary
Paper/850
The lightest default border and divider — the most common stroke.
stroke/secondary
Paper/800
A slightly stronger default, for more separation.
stroke/tertiary
Paper/700
The strongest neutral divider, for the clearest separation between rows.
stroke/input
Paper/700
Form field borders at rest.
stroke/input-focus
Purple/400
Form field borders when focused — the one 2px stroke.
stroke/input-error
Red/400
Form field borders in an error or critical state.

Tokens are a vocabulary; components are what a team reaches for.

We now spend less time redesigning core components every new feature. A third the time on visual QA. And continue to improve our system with new enhancements. The best part is our non-technical team can now prototype an experiment without the coordination costs.

Alerts
With an action
A circular arrow, top-right.
Dismissible
An X wired to dismiss.
With a link
A link beneath the body.
Learn more
Title only
No icon
Drops the tone icon.
Banner
How it works
Share your PAD details
We charge your card
Funds arrive in 4 days

The brand personality lives in the highs, the lows, and moments in between.

We now have more time to give care to those moments.

Loading
9:41
Verifying your identity
Success
Payment resolved
Your PAD withdrawal has been connected to your payment.
Done

A well-oiled marketing engine

Choose a colour, a title and optional partner mark. This works for our same-day turnaround times. Now, personalized promotional cards drive an 18-26% clickthrough.

Marketing card · hero
Free mortgage Mondays

You’re in with 400 entries. Invite friends to add more.

View details
A door tied with a ribbon and bow, like a present.
Marketing card · colourways
GST/HST due
The Q2 due date is here
A desk calendar turned to a due date.
Up to 2.25 Aeroplan® pts/$1
Apply now
Three TD Aeroplan Visa cards, fanned.
Chexy Plus
Collect 2.3% interest
A stack of gold coins.
Mortgage
Now earning Aeroplan points
Air Canada
A house floating under a parachute, a figure hanging from it.
1
Partner mark
Notched into bottom-right corner.
2
Expressive typography
More brand personality infused. Reserved for marketing surfaces.
3
Illustrations
Prompt shared with the team to generate in OpenAI.
4
Chexy Plus lockup
Stands in for the headline on a membership offer.

The lints are the gatekeeper

Handoff.md sets the defaults in the repo, so every new sandbox starts with the right type, colour and components. Lints stop anyone breaking them. Weekly design reviews catch what’s missed and get the team fluent in it.

Handoff.md
app/sandbox/load-wallet/HANDOFF.md
Load wallet: handoff notes

Running list of decisions to carry into the Linear tickets. Add to it with every related PR.

Design-system changes to make at merge
  • Success screens drop the single Amount recap. Apply this to the DS success template and the real app’s success screens.
  • Activity card padding: PaymentActivity’s last row has no bottom padding, leaving 16px under it instead of 28px.
  • “Returned” status label: now an approved label (check:statuses). It’s money a bank sent back, which isn’t a refund.
BeforeAfter

Three weeks to launch

Months of groundwork came first: the product sandbox I had started long before this, which meant the three weeks weren’t starting from zero. The rebrand itself came with organizational buy-in.

I studied Airbnb, Uber and Wise. AI carried the implementation spread in code — without it, end to end across two codebases, the sandbox and Figma could not have happened with such velocity.

Next project