Project Details
The Problem
The new personal contributions feature automated, straightforward member matches — but edge cases still require manual review. With around 250 transactions daily and volumes expected to grow, administrators were managing exceptions outside the system, using Excel spreadsheets to track, categorise, and resolve unmatched contributions.
This created operational risks: no audit trail, no visibility into status, and no way to scale.
My Role
Solo product designer working with a cross-functional team of backend and frontend engineers and a Product manager. I owned the UX from problem definition through to full delivery — including scoping UX trade-offs due to time constraints.
Key Design Decisions
1. Replaced Excel with a structured in-system workflow
The most important decision was bringing exception handling back into the platform entirely. I designed a status model covering Matched, Unmatched, Partially Matched, and Non-EFT states — providing administrators with a single, reliable source of truth rather than a parallel spreadsheet.
The most important decision was bringing exception handling back into the platform entirely. I designed a status model covering Matched, Unmatched, Partially Matched, and Non-EFT states — providing administrators with a single, reliable source of truth rather than a parallel spreadsheet.
I mapped the existing Excel-based workflow in Miro with the engineering leads before designing the replacement in Figma — ensuring the new status model reflected operational reality.
2. Introduced bulk action controls
I introduced a checkbox-based multi-select and a floating action toolbar, enabling administrators to move and reclassify contributions in bulk — safely and efficiently.
I introduced a checkbox-based multi-select and a floating action toolbar, enabling administrators to move and reclassify contributions in bulk — safely and efficiently.
3. Protected system integrity through controlled state transitions
Bulk operations introduced risk — incorrect reclassifications could lead to reporting errors or compliance issues. I worked with finance and engineering to define valid state transitions, prevent invalid moves, and ensure every status update was traceable and auditable.
Bulk operations introduced risk — incorrect reclassifications could lead to reporting errors or compliance issues. I worked with finance and engineering to define valid state transitions, prevent invalid moves, and ensure every status update was traceable and auditable.
4. Shipped fully, with documented UX debt
Time constraints meant not everything could be delivered at the standard I wanted. Rather than hold back the release, I deliberately chose to ship the core workflow fully functional and clearly documented the UX debt for future iterations. Operational need came first.
Time constraints meant not everything could be delivered at the standard I wanted. Rather than hold back the release, I deliberately chose to ship the core workflow fully functional and clearly documented the UX debt for future iterations. Operational need came first.
Outcome
+ Fully shipped a bulk exception management tool for up to 5 administrators handling 250+ daily transactions.
+ Eliminated reliance on Excel spreadsheets for exception tracking, bringing all operations into a single auditable system
+ Enabled bulk processing of contribution exceptions, replacing a one-by-one manual workflow
+ Established a scalable foundation ready for increasing transaction volumes
+ Delivered within time constraints with UX debt transparently documented for future iterations
+ Enabled bulk processing of contribution exceptions, replacing a one-by-one manual workflow
+ Established a scalable foundation ready for increasing transaction volumes
+ Delivered within time constraints with UX debt transparently documented for future iterations
What This Shows
I can design for operational complexity — balancing efficiency, audit traceability, and system safety under real delivery pressure. Knowing when to ship and when to push back is a design decision, too. Working directly with backend and frontend engineers gave me a sharp understanding of how data models and state transitions shape UX decisions in transaction-heavy systems.