Financial Operations Engine — Making Sense of Complexity
How mapping the journey from messy bank transactions to clean financial statements helped disconnected teams design the right product.
Design requirements were coming from separate product teams in isolation, without anyone having mapped how raw bank transactions actually flow into official financial ledgers.
Mapped the complete end-to-end product journey (from initial setup to daily automated processing), giving all teams a shared big-picture story to evaluate every new requirement.
Eliminated dropdown crashes across 40M+ records, redesigned reporting into an active in-app investigation loop, and aligned cross-module workflows.
Two completely different languages.
Daily banking operations speak Business Data, while the company's official financial record only understands Balanced Debits & Credits. They cannot communicate directly.
Meet the Two Systems
To bridge the gap between raw bank feeds and the General Ledger, two specialized systems work in tandem:
“Give me messy business data. I’ll clean, validate, and structure it so it’s primed for accounting.”
“Give me structured data. I’ll turn it into debits/credits and speak the ledger's language.”
Connecting the dots when information was scattered everywhere.
Before jumping into UI design, a designer needs the big picture: What is this product trying to solve? Who uses it, and when? Here is how we investigated the complexity across three progressive parts:
15+ Functional Silos with No Shared Mental Model
“I need to compare operational balances with general-ledger balances, find differences, define valid adjustments, and keep evidence of how each difference was resolved.”
The End-to-End Journey — From Business Activity to Financial Insight
Bring in financial activity and supporting reference data from external banking systems and loan origination platforms.
The 3 Concentric Discovery Layers (From Specs to Ground Truth)
Uncovering Operator Ground Truth & The CSV Export Trap
Conducted in-depth interviews and live walkthroughs with operational bank accountants and reconciliation specialists.
Uncoupling the Inverted Hierarchy: From Broken Setup Wizard to Operational Hub
Synthesizing our discoveries revealed that the interface wasn't just confusing—the underlying Information Architecture and object relationships were fundamentally inverted. Here is how we dismantled the legacy traps:
The homepage forced every user into an SLA setup flow (starts with SLA). It ignored that once an SLA is set up, daily users come in to monitor data loads, resolve failures, and reconcile exceptions—not configure subledgers every morning.
AFCS Home ➔ SLA List ➔ Retail SLA ➔ Ingestion ➔ [EDD Descriptor & Connector]
Connectors and file schemas are reusable enterprise assets. By burying them inside specific SLAs, users had to guess which SLA owned a connector to edit it, causing massive duplication and zero discoverability.
Elevated EDDs and Connectors into a top-level shared catalog. Multiple subledgers now attach to existing file descriptors without duplicate setups.
Designed an automated background API sync between Data Hub and Accounting Engine—eliminating the manual ZIP file exchange entirely.
Decoupled EDD and Connectors so feeds can be maintained independently and reused across subledgers.
Re-anchored the homepage around daily operator needs: pending draft recovery, failure alerts, and load tracking.
Replaced the 6-step manual ZIP download/upload protocol with a seamless automated cloud sync handshake.
Where real-world scale challenged our assumptions.
Once the entire journey was mapped, several critical friction points and failure modes were uncovered:
The 40M+ Row Dropdown Problem
In rule configuration, users map account fields (like customer IDs and account categories). We initially designed a standard searchable dropdown. But in user testing with real bank data, the database contained 40,000,000+ customer entities. Typing caused thousands of matches, server timeouts, and browser freezes.
If a field has 40M rows, users aren't casually browsing—they already know their exact code. We altered the interaction: under 20 matches shows an instant dropdown; over 20 matches halts slow searching and lets the user paste their verified exact ID directly.
Reclassification & The "Wrong Lane" Problem
Financial statements must tell the truth. If an account is overdrawn by $500, displaying it as Cash: -$500 on the balance sheet is misleading because negative cash assets do not exist. In reality, it is money owed to the bank: Bank Overdraft Liability: $500.
Rather than automating reclassifications as an opaque black box, we designed a clear 7-step review cycle (Detect → Review → Prepare → Execute → Investigate → Validate → Retain) ensuring finance teams can trace and defend every balance adjustment during audits.
Reporting is Not a File-Download Task
Finance analysts were regularly exporting giant CSV spreadsheets to calculate adjustments in Excel because the software treated reporting simply as a static download button.
We redesigned reporting into an active in-app workflow: MONITOR overall ledger health → DETECT discrepancies → INVESTIGATE 1-click drill down to source rows → UNDERSTAND the rules applied → ACT resolve and adjust directly inside the app.
Eliminating Manual File Handoffs
In system handoffs, users were manually downloading zip files from the Data Hub and uploading them into the Accounting Engine just to synchronize product definitions.
We helped the product leadership move from “How do we make the file upload button easier?” toward “Why does the user have to perform this manual handoff at all?”, establishing the roadmap toward direct, automated system synchronization.
What Changed
“This proposed design is a much better interface—it aligns well with our thoughts. The current system is not intuitive, so you have to work around it. This makes real sense.”
“This screen is better, it gives you the view of all the assets which are already configured, what status of that, who created, and the last updated.”
“Complex products don't become simple because we hide the complexity.
They become understandable when we expose the right relationships.”