Automating bank reconciliation for legal practice management
I led the design of a Plaid-powered bank integration that automated transaction imports and reconciliation, replacing error-prone manual bookkeeping workflows for thousands of law firms.
Over the course of the project, I collaborated with product, engineering, and accounting subject matter experts to research workflows, prototype solutions, and iterate on designs that ensured financial correctness under strict legal trust-accounting constraints.
Law firms were reconciling bank statements via CSV uploads and Excel — a process that was slow, error-prone, and risked compliance audits. Any error in trust account reconciliation could mean a violation.
A Plaid integration was the core flow required to launch Panther Accounting Plus and drive high-value enterprise subscriptions.
Competitors already offered this:
"How can I make reconciliation seamless for billing and accountants in medium-to-large law firms, so they trust us and stay compliant?"
To understand how law firms managed reconciliation, we conducted comprehensive research:
Observation
Design bulk workflows, not one-at-a-time processing
Observation
Show verification states and confirmation before committing
Observation
Design a guided matching UI that also serves as a fallback for non-Plaid banks
Observation
Provide explicit Trust vs Operating account separation
Instead of designing a simple "Import Transactions" feature, I reframed the experience into three logical phases to reduce cognitive load and build user trust progressively.
Securely link bank accounts via Plaid with a transparent OAuth flow. Build immediate trust through clear success and error states.
Standardize messy, inconsistent bank data into a structured format. Handle deduplication, pending vs cleared states, and nightly auto-syncs.
A guided UI that suggests matches, flags discrepancies, and allows users to categorize unrecognized items with confidence.
Link via Plaid OAuth
Auto-sync & normalize
Drag-drop or define
Accounts balanced
The connection flow starts from the Edit Bank Account page, keeping the action contextual. The Plaid OAuth modal clearly communicates the PracticePanther ↔ Plaid relationship. On success, users select a start date to control import scope.
Import modal from Edit Bank Account
Plaid OAuth consent screen
Success state with date picker
The reconciliation UI went through three major iterations before arriving at the final solution. Each iteration was informed by user testing and engineering feedback.
A full-width data table showing all imported transactions. Each row expanded inline to reveal four action tabs: Review Match, Manual Match, Create New Payment, and Exclude.
Suggested matches with "Confirm Match" actions. Inline searchable grid for manual matching. Category selectors for unrecognized transactions (Contact Payment, Firm Payment, Expense). Required reason fields for excluded transactions.
Review Match tab
Inline grid matching
Exclude with reason
Refined the table with a dedicated "Matched Status" column using color-coded badges and a persistent Actions column with contextual buttons (Confirm Suggested, Manual Match, Create New, Exclude).
Status badges with contextual action buttons
Kept the table as a transaction list but moved matching into focused modals with four tabs: Suggested Match, Find Match, Create Match, and Exclude. Each workflow got dedicated space and clearer information hierarchy.
Suggested Match modal
Find Match with filters
Create new match
Exclude transaction
The final design is a drag-and-drop reconciliation interface where users visually match bank transactions to PracticePanther payments on a single screen.
Split-panel reconciliation — Bank Transactions (left) vs PracticePanther Payments (right)
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.
Valid match indicator on drag
Confirmed match nesting
Full reconciliation overview
Matched with full metadata
Once matched, the bank transaction nests visually under the PP payment, creating a clear parent-child hierarchy. Accountants see exactly which transaction was matched without navigating away.
Expanded view showing multiple matched transactions
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 view match history.
Recent Matches panel
Match history with one-click Unmatch actions
Moving from CSV to Plaid wasn't just a technology upgrade — it fundamentally changed how law firms manage trust accounting.
Positioned PracticePanther to compete with Clio and MyCase in trust accounting
Replaced CSV reconciliation with automated Plaid-powered bank feeds and intelligent matching
Foundational feature for Panther Accounting Plus, driving high-value enterprise subscriptions
Users need verification states, confirmation steps, and undo capabilities before trusting a system with financial data. Prioritize correctness over efficiency.
Accountants want to see both data sources simultaneously. Modal and tab-based approaches created too much context switching. The split-panel design matched how they already work.
Three full iterations revealed the initial modal-heavy approach was fundamentally wrong. The drag-and-drop pivot was only possible because we tested early and listened.
Aligning with accounting SMEs was critical for strict legal trust-accounting rules. Without their input, we'd have missed compliance-critical details.