B2B SaaS · Fintech
Designing an invoice
platform people can trust.
When I joined the stealth startup, it had a scanning server and a goal, faster invoice scanning, and nothing designed yet. As the sole designer, I shaped what the product became, end to end, for a BPO handling thousands of invoices a month, and wove an AI assistant through the interface, flagging, explaining, and guiding the work wherever it helps. It became a system of clear decisions: what clears on its own, what needs a person, and how every step stays legible.
From the product
The Challenge
Thousands of invoices to fix.
Scanning invoices is slow work. Employees correct them one at a time, all day, reading every field by eye and fixing what the scan got wrong. It is repetitive and draining, and every hour it takes is an hour the company pays for.
No manager can see who is overloaded, which client takes the most time, or where errors are getting through.
Competitive Analysis
The gap no tool was built for.
I benchmarked the field, from legacy OCR suites to modern AP platforms. Each processes invoices for a single company. A BPO processes them for dozens of clients at once, and that gap defined the design.
| Capability | Legacy OCR & ERP SAP Concur, ABBYY, Kofax | AP Platforms Rossum, Vic.ai, Medius, Tipalti | This product Where the design competed |
|---|---|---|---|
| AI Integration | AI absent | A few touchpoints | ✓Extraction, checks, and insights |
| Automation Rate KPI | Not measured | Just a number | ✓Live, per person & client |
| Exception Handling UX | Manual, every time | No source link | ✓Every error linked to the doc |
| Anomaly Detection | Human eyes only | Rule-based flags | ✓Explains why, in plain language |
| Multi-Client Architecture | Out of scope | One org only | ✓Many clients, one interface |
| Processor-Level Visibility | None | Team-level only | ✓Down to each person |
| Admin Intelligence | After-the-fact reports | Dashboards to read | ✓Speaks up first, with next steps |
Strategic approach
From messy inputs to a system that scales.
The research pointed at the real constraint: a single team carrying dozens of clients at once. Saving that team time was the business case, so I made it the measure every design decision had to answer to, and designed features of my own where the market had none, keeping only what got an invoice done faster.
The AI assistant
Designed to assist, the person decides.
Confidence you can act on
Every field carries a certainty signal, surfaced only where it drops, and the queue is ordered by what the AI is least sure of.
Anomalies caught early
Each invoice is checked against the client's history, so an unusual amount or a duplicate reaches a person before it clears.
A correction, not a flag
Beside every flagged field sits the value the AI believes is right, accepted or rejected in one click, so a fix costs a second.
Insights that recommend
Duplicates arriving from one supplier, a processor carrying twice the team average, each surfaced with a fix already attached.
Who it's for
One product, three roles.
The platform serves three roles, each with a different level of authority. The work here was making one product fit all three.
Manages users, clients, integrations, and automation policy.
Owns a team and its client group, and its Zero Touch Rate.
Fixes fields on invoices the AI couldn't clear, then saves.
Design system
Built for consistency.
I built the design system from the ground up: semantic tokens named for intent, a variable layer carrying theme and state, a status model with one color per state, and a component library on a strict type and spacing scale. I extended it with agents and skills I set up in Claude Code, one source of truth as it grew.
Status and core text colors clear WCAG AA on light.
Feature spotlight · Admin view
Send to employee.
Send to employee is the path I designed to turn a flagged invoice into someone's task: the admin filters to the anomalies the AI flagged, opens one, and either clears it or picks an employee, a reason and a note, so the invoice lands in that person's queue with a name and a reason attached.
The full user flow
1 · Sign in
2 · Overview
3 · Invoices
4 · Filters
5 · Anomalies
6 · Invoice detail
7 · Send to employee
8 · Sent
Feature spotlight · Employee view
Upload and fix.
Upload and fix is the path I designed to keep the employee out of the data entry: the server extracts every field on drop, the AI flags what it doubts with a suggested value, and one click accepts it, so the invoice saves in seconds.
The full user flow
1 · Employee dashboard
2 · Upload invoice
3 · Fields to confirm
4 · Saved
Beyond the invoice
Running the operation, not just the invoice.
The flows follow a single invoice. These two screens run the operation around it: which client is healthy, and what the AI costs.
Clients
Every client receives their data differently: a live ERP, an accounting app, a file feed, or a package they download. Adding a client is where that is chosen, with the account owner and the amount above which a person must approve. Three choices, made once, that the rest of the platform follows.
Billing & AI Credits
Billing is where SaaS design usually slips into dark patterns. The model here is two-part, a plan for invoice volume plus credits for the AI, each with its own balance so the customer sees what the AI actually costs. The cheaper tier sits above the buy-more options, and surfaces when the math favors the customer, shown first.
Want to hear more?
Happy to walk through the decisions and what I'd change if I built it again.