Enterprise Fintech · UX Case Study

Corporate Card Admin

The control room where a company's finance team runs its entire corporate card program: issue cards, approve the money, and keep every account current.

Role
Lead Product Designer
Scope
End-to-end
Platform
Responsive web
Focus
Information architecture · Approval flow · Heuristic evaluation
svb-go.com / card-admin / dashboard
SVB Go Card Admin dashboard: KPIs, credit utilization, needs-attention alerts, spend, and recent activity
Scroll to walk the process
8
Connected screens, one wired prototype
220
Cardholders under a single admin's oversight
19
Heuristic findings surfaced and all resolved
1
Job that everything else orbits: approve payments
The project

A tool that looks simple, until you're the one accountable for the money.

A mid-size company hands corporate cards to a few hundred employees. Someone has to decide who gets a card, how much each person can spend, whether a payment goes out this week, and what happens when an account slips past due. At SVB, that someone opens SVB Go.

This project reimagines the admin portal behind it, built as a single, fully-wired prototype, to SVB's real brand, and pushed to production fidelity so the flows could actually be tested rather than just admired.

The interesting problem was never drawing screens. It was untangling a workflow where a single missed approval or a wrong limit is real money, and doing it inside a brand system that fights accessibility at every turn.

The challenge

How do you give a finance lead total control over other people's spending, without making control feel like friction?

PAIN 01

Money moves on trust

Employees submit payments; the admin releases them. Approving blind, with no evidence in view, is how errors and fraud slip through.

PAIN 02

Signal buried in noise

Past-due accounts, cards nearing limits, requests waiting on a decision, all easy to miss in a wall of 220 rows.

PAIN 03

Brand vs. accessibility

SVB's signature cyan can't meet the highest contrast standard. The two requirements physically collide.

How I worked

A double-diamond, run honestly.

Diverge to understand the real job, converge on the sharpest problem, explore widely, then ship something that holds up when you actually click it. No automated browser to lean on, so every flow was validated by using it.

Discover Define Develop Deliver PROBLEM SPACE SOLUTION SPACE

Discover

Diverge

Map the admin's real jobs, study SVB's brand from source, audit the domain: what actually happens in a corporate card program.

Define

Converge

Rank the jobs by stakes and frequency. Name the one that everything orbits (payment approval) and frame the guiding question.

Develop

Diverge

Design the approval flow, restructure the IA, prototype real interactions, and stress-test decisions against edge cases.

Deliver

Converge

Build to production fidelity, snap every token to the brand, and take the whole thing to WCAG AAA where the brand allows.

STEP 01

Frame the user

Who the admin is, and the four jobs they can't avoid.

STEP 02

Empathize

Says / thinks / does / feels, what the role actually feels like.

STEP 03

Prioritize

Insights, how-might-we, and the thing to protect above all.

STEP 04

Architect & design

IA, the approval flow, and the decisions behind each cut.

STEP 05

Systemize

Brand fidelity, accessibility, and craft at the detail level.

Discover · Research

Grounding the design in evidence, not assumptions.

Before a single screen, I needed to understand three things cold: the job the admin actually does, SVB's real brand system, and exactly where the existing experience broke its own promises. Here's how I got there and what it told me.

Research questions
Q1

What does the card admin actually do, in what order, how often, and where does a wrong move cost real money?

Q2

What is SVB's genuine brand system, the exact palette and type, rather than a lookalike approximation?

Q3

Where does the current flow break its own promises: dead ends, mismatched data, buried signal?

Q4

How do mature enterprise tools pattern approval queues, at-risk surfacing, and role-based access?

How I researched
Method 01

Domain & workflow modelling

Mapped the corporate-card program end to end: the roles (PCAM, Admin, User), the money path (submit → review → release), the account lifecycle, and every point where a wrong decision has a financial cost.

Output: a task inventory ranked by stakes & frequency
Method 02

Brand forensics, from source

Pulled the exact palette from SVB's official logo SVG and brand-guidelines PDF rather than eyeballing it. Identified Neue Montreal as the brand face, and its commercial licensing constraint, up front.

Output: a token set snapped to real brand values
Method 03

Heuristic & flow evaluation

Walked every screen and followed every link the way the admin would, logging each break against Nielsen's heuristics: system status, match to the real world, error prevention, consistency.

Output: a defect log of promises the UI didn't keep
Method 04

Comparative reference scan

Studied how established finance and admin platforms handle the same jobs (approval queues with inline evidence, at-risk surfacing, role-based access) to separate genuine conventions from cargo-cult patterns.

Output: pattern decisions with a rationale, not defaults
What the research surfaced
FINDING 01

The highest-stakes, highest-frequency task, approving payments, had no home in the product.

So what

Make approval a first-class, default surface. Everything else is context around it.

FINDING 02

The interface made promises it didn't keep, a "10 pending approvals" link led to a page with no approvals, and alert counts didn't match the rows they opened.

So what

For someone moving other people's money, honesty is the primary trust lever. Every link and count must hold.

FINDING 03

Signal was buried, six at-risk cards hidden inside a 220-row roster, with no way to isolate them from an alert.

So what

Alerts must carry their filter all the way to the destination, with a clear way back.

FINDING 04

Two different concepts of "activity" (one per-cardholder, one program-wide) were conflated behind a single link.

So what

Separate them structurally and name them distinctly, or the whole IA reads as duplicative.

FINDING 05

Brand and accessibility were on a collision course, SVB's signature cyan can't meet the strictest contrast bar.

So what

Resolved by role: cyan stays for scale and decoration, small compliance-critical text runs in the deeper Bandana blue instead, so nothing readable falls below AA.

Where this research ends, and what comes next

This exploration is built on secondary research, domain modelling, and heuristic evaluation: rigorous, but not a substitute for hearing from the people who live in the tool. The next layer is moderated sessions with practising card admins to validate the assumptions I'm making here: that 85% is the right "nearing limit" threshold, that the evidence set on the approval screen is complete, and that the alert model matches how they actually triage a morning. I've noted these as open questions rather than settled facts.

Discover · Who we're designing for

Meet the Primary Card Account Manager.

Not a banker, a finance or ops lead at the company itself, running the card program alongside a dozen other responsibilities. This is who the product answers to.

MC

Marie Conti

Primary Card Account Manager
CompanyNimbus Robotics
TitleFinance Operations Lead
Manages220 cardholders
Tech comfortHigh
In the toolDaily, in bursts

"I don't need a dashboard to admire. I need to know what needs me today, deal with it, and get back to my actual job."

Motivations

  • Keep every account in good standing, no surprises at statement close
  • Release legitimate payments fast, catch the wrong ones
  • Be able to prove why any decision was made

Frustrations

  • Approving payments with no supporting evidence in view
  • Hunting through 220 rows to find the 6 that matter
  • Links and alerts that promise something and lead nowhere

Primary goals

  • Clear the approval queue with confidence
  • Spot at-risk accounts before they slip
  • Issue and adjust cards without a support call

Success looks like

  • In, resolved, out, in minutes, not a morning
  • Zero payments approved she couldn't explain
  • Never surprised by a past-due account
Discover · Empathy map

What the role actually feels like.

Before deciding what to build, I mapped the admin's headspace across a normal week, the gap between what they say and what they quietly feel is where the design opportunities live.

Says

  • "Is this payment actually legit?"
  • "Just show me what's overdue."
  • "I approved it, where's the record?"
  • "Why does this link go nowhere?"

Thinks

  • "If I get this wrong, it's real money."
  • "I don't have time to read every line."
  • "I need to trust what the screen tells me."
  • "There's probably something I'm missing."

Does

  • Checks the dashboard first thing, in short bursts
  • Expands a payment to read the memo & docs
  • Filters the roster to find at-risk cards
  • Cross-checks amounts before releasing money

Feels

  • Accountable, the buck stops here
  • Time-pressured, pulled in many directions
  • Wary of approving something blind
  • Reassured when the tool is honest & clear
MC
The admin
Define · What the research pointed to

Three insights that shaped every screen.

Insight 01

Approval is the product

Every other feature is context around one act: releasing money. If that flow isn't trustworthy and fast, nothing else matters.

Insight 02

Honesty beats density

An admin managing other people's money needs the interface to never lie, not by a broken link, not by a count that's off by three rows.

Insight 03

Cut the helpful-looking noise

Redundant shortcuts and decorative panels tax attention. The strongest edit was often removal, not addition.

The guiding question

How might we let the admin release money with total confidence, inspecting the evidence in one motion, while surfacing exactly what needs them, and nothing that doesn't?

Develop · Information architecture

Eight screens, one lean spine.

The sidebar stays disciplined, only the destinations the admin needs daily. Depth lives one level down, reached through context rather than clutter.

svb SVB Go · Card Admin
Dashboard

The daily triage screen: needs-attention alerts, spend, and recent activity.

Cardholders

220-person roster with balance, limit, utilization & status filters.

Payments

Pending approvals (default), single, auto & accounts.

Statements

View & bulk-download up to 24 months of history.

Card Activity

One cardholder's transactions & authorizations.

New Card

Issue cards, set limits & delivery, track requests.

Administration

Portal users, roles (PCAM / Admin / User), access.

Activity Log contextual

Program-wide feed. Reached via "View all", deliberately kept out of the sidebar.

The naming call: "Card Activity" (one person) and "Activity Log" (everyone) sit next to each other. Blur the labels and the whole IA feels duplicative, so one is a permanent nav item and the other is a destination you reach through the dashboard.
Develop · User flow

The path that had to be flawless.

Approving a payment is the task the whole product exists to serve, so I mapped it end to end before designing a single screen: where the admin enters, what they need to see before deciding, the decision itself, and a safety net on both outcomes. The flow is what drove the two P0 fixes, evidence-before-decision and a reversible action.

Morning login → Dashboard
The daily entry point. Marie scans the "Needs attention" panel.
"10 payments pending approval"
One clear alert, deep-linked straight to the queue, no hunting through the nav.
Pending approvals queue
The default Payments tab. Sortable by amount, date, or cardholder to triage by priority.
Expand a row to inspect
Amount, memo, funding account, and supporting documents, surfaced inline before any decision.
Is the evidence sufficient?
Approve path
Approve
Single, or select many and bulk-approve.
Confirmation
For bulk: count, total, and every cardholder shown before funds move.
Safety net
Undo window
A few seconds to reverse before it's final.
Funds released · action logged
Decline path
Decline
A reason is required, no silent rejections.
Reason captured
Recorded against the request for the audit trail.
Safety net
Undo window
Same reversibility as approve.
Declined · requester notified

Why the flow matters: mapping it exposed the two riskiest gaps before pixels existed. The admin was being asked to decide without the evidence in view, and once they decided, there was no way back. Every screen downstream was designed to close those two gaps, which is why "inspect before deciding" and "undo on every outcome" became the non-negotiables.

Develop · Decisions that mattered

The thinking behind the cuts.

01
Structure · the core flow

Make approval the center of gravity

The dashboard advertised "10 payments pending approval" and linked to a Payments page where those ten payments didn't exist anywhere. A dead end that survives a hundred polished mockups, because each screen looks fine alone; it only shows when you wire it and follow your own links.

I made Pending Approvals the default tab and designed the interaction around one rule: you should never approve money you can't inspect. Each payment expands in place to reveal requester, memo, funding account, reference and supporting documents. Approve confirms cleanly; Decline requires a reason, so a rejection never becomes a mystery support ticket.

Before"10 pending approval" → a page with no approvals on it. A promise with nowhere to land.
AfterA first-class approval queue with inline evidence, single & bulk actions, and reason-required declines.
02
Clarity · remove the noise

Cut the helpful-looking, do-nothing links

An "Account Information" panel carried three tidy shortcuts. Two of them just re-navigated to pages already permanently in the sidebar, pure duplication dressed as convenience. The third carried a live count, so it earned its place as an alert.

I removed the two redundant links and reframed the survivor as an actionable alert, not a nav shortcut. Every element is a small tax on attention; links that do nothing the sidebar doesn't are noise wearing a helpful costume.

03
Navigation · keep the promise

Make alerts carry their filter all the way

Clicking "past due" used to dump the admin into all 220 rows and a shrug. Now each alert carries its filter to the destination, with a visible chip explaining why you're seeing a subset and a one-click clear.

This surfaced a data-integrity bug worth owning: "nearing limit" had been wired to a flag that actually meant "limit recently increased", nearly the opposite. I recomputed it from real utilization (balance ÷ limit ≥ 85%) and reconciled every count, so the dashboard number and the rows you land on finally agree. Copy that lies, even by three rows, erodes trust in everything else.

04
IA · resolve the ambiguity

Build the program-wide Activity Log

"Recent activity" is program-wide, mixed people, mixed events. But "View all" pointed at the single-cardholder Card Activity page, dropping you into one random person's transactions.

Rather than the cheap repoint, I built a proper Activity Log: a filterable, time-grouped feed of every event across every cardholder, each row routing intelligently to where you'd go next. Kept out of the sidebar so it doesn't compete for daily attention.

Deliver · The screens

What the decisions produced.

Real screens from the working prototype, each tied to the reasoning behind it. Every screen is fully wired and built to SVB's brand with the exact palette and type.

svb-go.com / card-admin / dashboard
SVB Card Admin Dashboard screen
Dashboard

Get in, see what's on fire, act

The triage screen. Each alert deep-links to the exact filtered view, so "6 nearing limit" lands you on those six, not all 220 rows.

svb-go.com / card-admin / payments
SVB Card Admin Pending Approvals screen
Payments · Pending approvals

Never approve money you can't inspect

The product's center of gravity. Rows expand to show docs before you release funds, and every action has an undo window, the Sev-4 fix.

svb-go.com / card-admin / cardholders
SVB Card Admin Cardholders screen
Cardholders

Isolate the signal, sort it, act

Filtered from a dashboard alert, with a chip explaining why. Real column sorting (shown on Balance) replaced a header arrow that used to do nothing.

svb-go.com / card-admin / payments
SVB Card Admin bulk approval confirmation
Payments · Bulk confirmation

The riskiest action gets the strongest guard

Bulk approve once committed in one click. Now it shows count, total, and every cardholder before any money moves, added straight from the heuristic findings.

Explore the real thing

The screens above are captured from the working build. Open the live, fully-wired prototype to click through all eight screens yourself.

Open live prototype ›
Evaluate · Heuristic evaluation

I graded my own work against Nielsen's ten.

Before calling anything finished, I ran a full expert inspection of the prototype, walking every screen and following every link the admin would, and logged each usability violation against Nielsen's heuristics, rated 0–4 for severity. Nineteen issues surfaced, plus four accessibility items. Here's the honest scorecard.

Method

Expert inspection

One evaluator, every screen, following real task paths, not a scripted click-through.

Framework

Nielsen's 10

Each violation mapped to a specific heuristic and screen, so every finding is traceable and fixable.

Rating

Severity 0–4

From cosmetic to catastrophe, weighted by frequency, impact, and, for a money tool, real-world risk.

Output

Prioritised backlog

A P0/P1/P2 roadmap, so remediation followed risk rather than whatever was easiest.

1CatastropheSev 4
6MajorSev 3
8MinorSev 2
4CosmeticSev 1
+4accessibility items
H1Visibility of system status, clear active states, live filter counts, persistent account contextStrong
H2Match with the real world, plain financial language, minor acronym nitsStrong
H3User control & freedom, no undo for money/access actionsWeak
H4Consistency & standards, one table pattern, one modal engine, one tab styleStrong
H5Error prevention, decline-reason good; validation & destructive guards missingWeak
H6Recognition over recall, persistent context & visible filtersGood
H7Flexibility & efficiency, bulk approve & deep-links; no sorting or shortcuts yetAdequate
H8Aesthetic & minimalist, lean, on-brand, redundancy already cutExcellent
H9Error recovery, empty states exist; genuine failure states don'tWeak
H10Help & documentation, present, thin on contextual helpGood
Severity 4 · Catastrophe The headline finding

You could move money with no way to take it back.

Approving a payment, declining one, suspending a card, and removing a user were all immediate and irreversible, and bulk approve, the riskiest action of all, had the weakest guard. In a tool whose entire job is releasing other people's money, a single mis-click had no safety net. Everything else in the report mattered; this is the one that had to be fixed before anything shipped.

Evaluate · Remediation & validation

Then I fixed every one of them.

A findings report nobody acts on is just a nicely-formatted complaint. I worked the backlog top-down by severity and closed all nineteen issues plus the accessibility items, then proved it, rather than assuming it.

19
usability findings resolved, across all ten heuristics
23
automated behavioral tests, all passing after remediation
8/8
screens re-validated end-to-end after every change
Before · Sev 4

Approve, decline, suspend, and remove were instant and irreversible. Bulk approve released many payments in one click with no confirmation.

After

An undo window on every reversible action; a pre-commit modal for bulk approve showing count, total, and each cardholder before any money moves.

Before · Sev 3

The New Card and Add User forms had no validation. Removing a user or suspending a card gave no warning and named no one.

After

Required-field validation with inline errors; destructive actions now name the person and spell out the consequence before you confirm.

Before · Sev 2

Column headers showed a sort arrow that did nothing, and only on one table. Deep screens had no way back but the sidebar.

After

Real, reusable sorting across all eight data tables; breadcrumbs on every drill-down screen; a focus trap and live announcements for screen-reader users.

The evaluation also flushed out live bugs that only surface when you actually use the thing: a dashboard alert that linked to a page where its payments didn't exist, a "nearing limit" filter wired to the wrong flag, and a statements filter that showed every cardholder regardless of the status selected. Each got traced to its root and fixed, because in a money tool, a count that's wrong by three rows quietly erodes trust in every other number on the screen.

Deliver · Design system

Brand fidelity, done from source.

The brief was unambiguous, do not deviate from the brand. So I didn't guess. I pulled the palette from SVB's official logo SVG and brand-guidelines PDF, then snapped every token to an exact value.

Marine Blue
#013A61
Cosmos Blue
#003148
Atmosphere
#009ADC
Bandana
#00578B
Purple
#785FAA
Frosty Day
#CEEBF8
Diluted Blue
#B7DDF1
Shutterbug
#CDF4E5
Cream
#FEEDD4
Off-White
#EBEEEE
Charcoal
#232628
Chevron
#00C0FF
Display · Headings & figures
Space Grotesk
The Neue Montreal stand-in
SVB's brand face is Neue Montreal, a commercial font that can't ship from a free CDN. Space Grotesk carries the same contemporary-grotesque character. Documented as an approximation, with the licensed swap noted for production.
Weights 400 · 500 · 600 · 700
Body · UI & dense data
Inter, for everything you read.
Legibility in a table-heavy tool
Rated the closest structural match to Neue Montreal, and simply clearer at small sizes in a data-dense admin. The pairing keeps brand character in the headlines and clarity in the rows.
Weights 400 · 500 · 600 · 700
What I took from it

Two things stuck.

The hardest enterprise-UX problems aren't visual.

They're about what to remove and what to make honest. The redundant links, the dead-end approval, the two-kinds-of-activity confusion, none are pretty-pixel problems. They're clarity problems. And clarity is exactly what someone managing other people's money actually needs.

The best critique of my work was my own.

Before calling anything done, I ran a full heuristic evaluation and found the one catastrophe-level flaw myself: money moving with no way to undo it. Catching what you can before anyone else has to, then proving the fix, is the difference between a demo and a product.