Work About Sketchbook Contact
Back to Portfolio
Case Study 2

Reimagining Financial Reconciliation

How I redesigned bank transaction matching in PracticePanther, so billing teams could trust their books without spending a day checking them.

Role Lead Product Designer
Team 1 PM, 5 Engineers, 2 Accounting SMEs
Timeline 9 months, shipped
Impact Month-end in 3–4 hours, down from a full day
Split-screen reconciliation: bank transactions on the left, PracticePanther records on the right
Scroll to explore
The problem

Accountants and auditors at law firms spent up to a full day each month checking ~1,000 bank lines against the books by hand. One missed dollar could become a bar compliance issue.

Meanwhile, 60% of firms kept their books in QuickBooks, outside PracticePanther.

What I did

Led discovery and design for matching every bank transaction to the right record, with a person confirming each match.

The outcome

3–4 hours instead of a full day. 348 firms upgraded.

01

The People Who Keep the Books

Law firms hold client money in trust, and every cent must match their records. Two people sit at the center of that.

Illustration of Maria

Maria

Billing coordinator
“I’d rather it take longer than have a dollar unaccounted for.”
Does
Records payments and closes the books every month.
Needs
Certainty that every dollar is accounted for.
Illustration of Nick

Nick

Litigation partner
“I don’t want to see the books. I just need to know they’re right.”
Worries
If client money is mishandled, he answers to the bar.
Has
Five accounts that Maria balances every month.
Trust account, in one line

Money a firm holds for clients. Every cent must match the firm’s records, or it’s a bar compliance issue.

02

Month-End Meant a Full Day of Checking by Hand

1

Log in & export

Download statements from every bank and card account.

2Bottleneck

Compare by hand

Check each bank line against the ledger, one at a time.

3

Type in what’s missing

Bank fees, short payments and deposits nobody recorded.

4

Check all balances

Bank, trust ledger and client matters must agree to the cent.

Up to 1 dayof month-end work for a medium-sized firm
~1,000transactions a month to check by hand
$1one missed dollar can become a bar compliance issue

Why the two records drift apart

PracticePanther ledgerExported to Excel
Court filing fee, Superior Court$435.00
Process server, B&P Legal$125.00
Expert witness, Dr. Hensley$2,500.00
Court reporter, deposition$680.00
Client trust deposit 4471$5,000.00
Chase statementPDF download
SUPERIOR COURT FILING$435.00
B&P LEGAL SERVICES$125.00
HENSLEY EXPERT SVCS$2,450.00
ACE COURT REPORTING$680.00
CLIENT TRUST DEP 4471$5,000.00
A $35 bank fee nobody recorded A $2,500 payment that arrived as $2,450 A deposit that took three days to clear A payment entered in only one place
Reconciliation only works once every bank line is matched
Bank statement$38,000.00
=
Trust ledger$38,000.00
=
Client matters$38,000.00

Why it mattered to the business

60%

of firms kept their books in QuickBooks, outside our product.

The bet
Bring trust accounting and bank feeds into PracticePanther, sold through Business Pro.
The gap
Clio and MyCase already had bank feeds and matching.
My piece
Connecting accounts through Plaid, and matching every transaction to the right record.
03

I Sat With the People Who Close the Books

12 law-firm interviews Live month-end shadowing Competitive audit: Clio, MyCase
Key finding

It was never about speed. A fast tool Maria has to double-check saves her nothing.

We assumed

Reconciliation is slow, so automate it.

Research showed

It’s high-stakes, so make it trustworthy. Speed follows.

Why fully automatic matching wasn’t safe

What Plaid sends for each transaction
  • The amount and the date it cleared
  • A short description, like “HENSLEY EXPERT SVCS”
What a PracticePanther record needs
  • Which client and matter the money belongs to
  • Whether it’s a contact payment, firm payment or expense
  • Which account and invoice it belongs to

Two $500 payments on the same day look identical in bank data. So the system suggests, and a person decides.

04

From Discovery to a Strategy I Drove Alignment On

Three questions
  • What took firms’ most precious time?
  • What was firms’ most manual work?
  • What caused the most churn and risk?

All three pointed to manual reconciliation

Top priority

Bank matching first

Highest impact on time, trust and risk. Batch matching followed later.

The strategy

Win firms’ trust: automation, with a human in the loop

The system suggests. A person confirms every match, and can undo it.

Accuracy first, then speed

Success measures, agreed with my PM
Month-end in hours, not days A person confirms every match Firms move books off QuickBooks More Business Pro upgrades

Where my work sat in the journey

Bank feed

Read-only, from Plaid

I designed

Account mapping

Each account to the right ledger

I designed

Review

A list per account, with suggestions

I designed

Match, create or exclude

One at a time, undo anytime

Reconciliation

Three-way, audit-ready

5+accounts per firm
~1,000transactions a month
180 daysof history on first import
Batchcreation, designed after launch
05

Following the Money: Connect, Match, Verify

Instead of a single "import transactions" feature, I organized the work into three steps that follow the money from the bank to the books. Each step builds trust before the next one.

Phase 1

Connect

Link bank and card accounts through Plaid, map each one to the right trust or operating ledger, then choose an import start date. New activity syncs daily.

Phase 2

Match

The system suggests matches from amount, date and description. Maria confirms a match, creates the missing record, or excludes the line.

Phase 3

Verify

Matched transactions flow into three-way reconciliation, where a person reviews everything before the books close. Audit-ready for the bar.

How it fits together

From Bank Line to Balanced Books

Every bank line ends up matched, created or excluded, so every cent is accounted for.

1 Connect
Connect accounts Bank and card, via Plaid
Map & import To the right ledger, synced daily
2 Match
Suggested

The system suggests, Maria decides

Triage

Match to an existing record

Create the missing record

Exclude the line

Classify
Contact Payment
Firm Payment
Contact Expense
3 Verify

A person reviews it all

Three-way reconciliation before the books close

06

Connect: Every Account Mapped Before Anything Syncs

Plaid gives a read-only feed from almost any bank. But each large client has its own trust account, so a firm like Nick’s has five accounts to connect. The goal wasn’t just to connect a bank, but to make the firm feel safe doing it.

Because

A transaction is only useful if it lands in the right ledger. One unlinked account means money in the wrong place.

So I designed

A one-time mapping step that links each bank account to one PracticePanther account. Once linked, up to 180 days of prior transactions import automatically.

Connecting to Plaid, then Manage Bank Connections: each bank account is linked to one PracticePanther account
Connect through Plaid, then link each bank account to the right ledger. Unlinked accounts don’t import.
07

Match: Two Iterations Before the Right Layout

The matching screen went through two major iterations before the final design, each shaped by user testing and engineering feedback.

1

High Density Table View

Tested & Pivoted

Approach

I intentionally mirrored the grid-based approach used by our primary competitors to see if an industry-standard mental model would reduce the learning curve. A full-width data table with expandable rows revealed four action tabs: Review Match, Manual Match, Create New Payment, and Exclude.

Iteration 1: Table with inline Review Match tab

Review Match tab

Iteration 1: Manual match with inline grid search

Inline grid matching

Iteration 1: Exclude tab with reason field

Exclude with reason

2

Modal-Based Matching

Tested & Pivoted

Approach

To solve the clutter problem of the grid, I pulled matching into focused modals with tabs: Suggested Match, Find Match, Create Match, and Exclude. Suggested matches were listed first for Maria to confirm. Each workflow got dedicated space and clearer information hierarchy.

Iteration 2: Suggested Match modal with transaction details and ranked matches

Suggested Match modal

Iteration 2: Find Match tab with multi-filter search

Find Match with filters

Iteration 2: Create Match with Contact Payment, Expense, and Firm Payment categories

Create new match

Iteration 2: Exclude transaction with required reason field

Exclude transaction

The Pivot: From Modals to Split-Panel Drag-and-Drop

Matching is really comparing two lists, and the modal hid one of them. In testing, 7 of 10 participants lost their place. We had already put work into the modal, but I made the call to redesign around a side-by-side layout, and engineering’s concerns supported it. I used AI prototypes so we could test the new layout with users quickly.

Before

Modal-heavy, tab switching, context loss

→

After

Single screen, split panel, drag-and-drop matching

08

Final Solution: Both Lists, One Screen

Bank transactions on the left, PracticePanther records on the right. Three decisions shaped it.

Final Solution: Split-panel reconciliation with Bank Transactions (left) and PracticePanther Payments (right)

Split-panel reconciliation - Bank Transactions (left) vs PracticePanther Payments (right)

Live prototype Click or drag a bank transaction to find its match. Try Recently Matches to undo.

Built in Figma Make with sample data. Best on a laptop or desktop.

Decision 01

Both lists stay on one screen

People lost their place when one list was hidden.

Her own paceFilter and sort by date or amount.
No statements to downloadBank activity syncs in from Plaid.
Nothing matches until she picksClick or drag a bank line to see matches.

Drag-and-Drop Matching

Users drag bank transactions from the left panel onto PracticePanther payments on the right. A green border and "Valid Match" indicator provides clear visual confirmation before committing. Every card has a handle, and clicking works too, so drag is a shortcut rather than the only way.

Drag interaction showing Contact Payment, Firm Payment, and Expense classification options

Drag interaction with payment type classification

Decision 02

The system suggests, Maria decides

Two $500 payments can look identical, so only Maria can pick the right one.

Narrowed for herOnly records that fit the amount and date.
Look-alikes told apartPayment number, client, matter and reference.
One deposit, many paymentsDeposit slips match in one step.
Matched transactions with hover options for payment creation

Hover reveals payment creation options

No Match? Create It Here

Hovering on a transaction card reveals options to record it as a contact payment, firm payment or expense, right from the bank line. This keeps the interface clean while providing quick access to classification actions.

Drag-to-scroll interaction with Hold to Scroll Down tooltip for long payment lists

Drag-to-scroll for navigating long payment lists

Decision 03

Every match can be undone

A wrong match only surfaces at reconciliation, when it’s already a compliance problem.

The list shrinks as she goesShe always knows what’s left.
Next line is readyKeep going from the keyboard.
Full historyEvery match, ready for audits.

Recent Matches & Undo

A "Recent Matches" dropdown shows the last several matches with a one-click "Unmatch" option - directly addressing user feedback about needing to undo wrong matches and fear of irreversible errors.

Recent Matches panel with Unmatch buttons

Recent Matches panel

Firm Payment creation form with Deposit, Withdrawal, and Transfer tabs

Firm Payment creation - Deposit, Withdrawal, Transfer

User Feedback
Users found the drag-and-drop interaction intuitive and felt it added "delight" to their daily workflow.
Low learning curve by leveraging familiar payment patterns
Excitement for using this layout to handle complex bulk matching in the future
Development Feedback
Highly achievable by utilizing existing component libraries for drag-and-drop logic
Maintains system consistency by reusing established payment and expense modules
Much more manageable scope - avoided performance risks of previous iterations
09

What I Chose, and What We Gave Up

Research insight
Design decision
What we gave up
Research insightTwo $500 payments can look identical.
Design decisionThe system suggests, Maria decides
What we gave upFully automatic matching
Research insightPeople lost their place when one list was hidden.
Design decisionBoth lists side by side
What we gave upWork already put into the modal
Research insightA wrong match surfaces at reconciliation, too late.
Design decisionOne at a time, every action undoable
What we gave upBatch matching at launch
10

It Worked for Customers and the Business

Customer impact

3–4 hrsmonth-end, down from a full day
~16Kpayments matched in 6 months

Business impact

348firms upgraded to Business Pro
~$10MARR across Accounting Plus

What I learned

Earn trust first, then automate.

Next Project

Tara Blockers Report

Automating blocker detection to accelerate engineering teams

View Project