Context
SACCOs (Savings and Credit Co-operatives) are the backbone of financial inclusion across Sub-Saharan Africa. In Kenya alone, over 14,000 registered SACCOs serve more than 14 million members — yet almost none offered a digital-first experience. Members still queued at offices, passbooks in hand.
Kwara's proposition was bold: build a full neobank layer on top of existing SACCO core banking systems, so members could access loans, savings, statements, and peer transfers — without the institution abandoning the trust it had built over decades.
The problem
Credit unions wanted digital products but lacked engineering capacity. Kwara's platform bridged that gap — but the real UX challenge was layered:
- SACCO core banking data models differ wildly across institutions, creating non-standardised data flows that had to be designed around
- Members ranged from digitally fluent urban professionals to first-time smartphone users in rural counties
- Compliance and internal approval workflows (e.g. loan guarantors, committee approvals) needed to be faithfully translated into async mobile flows
- Trust was fragile — any friction or error in a financial transaction could cause members to abandon the app entirely
"The interface had to feel simpler than M-PESA — but handle the complexity of a full credit union on the back end."
— Design brief, Kwara product team · 2022Design process
Contextual research
On-site SACCO visits, member interviews, operational staff shadowing across 3 counties.
Data structures first
Mapped core banking data models to UI patterns before a single screen was drawn.
Design system + flows
Built a component library from scratch in Figma, co-designed with engineers in React Native.
Usability testing
Prototype testing on Maze with 80+ participants; iterative rounds every 2 weeks.
Research & discovery
Before designing a single screen, I ran a comprehensive discovery phase covering three inputs: SACCO institution assessments, member interviews, and competitive benchmarking of digital banking apps across Africa and Southeast Asia.
What we learned from members
Members trusted their SACCO brand far more than any "app" brand. The app had to feel like the SACCO's own product — not Kwara's.
Loan guarantor flows — where members had to vouch for peers — were the single biggest drop-off point. Async approval states were confusing.
Statement downloads mattered enormously. Members used them for housing loan applications, school fee financing, and visa applications.
Push notifications for balance and transaction updates were rated the single most-wanted feature — above transfers.
User personas
Three primary archetypes emerged from 22 member interviews and 4 staff interviews across SACCOs in Nairobi, Eldoret, and Kisumu. These shaped every major design decision in the MVP.
Njeri, 34
Civil servant, SACCO member for 8 years. She uses M-PESA daily and expects her SACCO to feel at least as smooth. Currently drives to the branch once a month to check her loan balance and collect a printed statement for her mortgage application.
- Instant balance visibility without visiting the branch
- Statement PDF she can share directly with her bank
- Loan repayment reminders so she never misses a date
Has to take half a day off work to sort out what should be a 2-minute task.
Otieno, 51
Small-scale maize farmer, SACCO member for 19 years. Owns a basic Android phone but has never downloaded an app. His son helps him with anything digital. Intermittent 2G/3G connectivity. Primary language: Dholuo; uses Swahili for formal interactions.
- Simple language — no jargon, no English-only labels
- Works offline or on 2G with graceful degradation
- SMS fallback if data is unavailable
Apps "never work" for him — previous digital banking attempts failed at the KYC step because of poor camera guidance.
Amina, 28
Loan officer and de-facto digital guide for her branch. Processes 30–50 loan queries per week, many of which are simply members asking "what's my balance?" She's the power user of the internal admin dashboard but also the front-line escalation point when the member app fails.
- Faster loan approval workflow — fewer back-and-forth calls
- Real-time visibility into pending guarantor approvals
- Clear member status she can quote over the phone
Spends 40% of her day answering calls that the app should handle. When members can't log in, the blame lands on her.
Kamau, 42
Runs a hardware shop, uses his SACCO mainly for asset financing loans to buy stock. Applies for loans 2–3 times per year. Comfortable with apps (uses M-PESA, WhatsApp Business, Quickbooks mobile). Main frustration is the guarantor loop — he has to personally call each guarantor to chase signatures.
- Automated guarantor notifications with single-tap approval
- Loan status timeline — not just "pending"
- Multiple account visibility (personal + business shares)
Loan approval takes 2 weeks minimum because guarantors don't know they've been added until he calls them.
Customer journey map — Njeri applies for a loan
The journey map below tracks the before state — what members experienced before the neobank. Each friction point became a direct design brief for a feature or flow.
| STAGE | MEMBER ACTION | EMOTION | PAIN POINT | DESIGN RESPONSE |
|---|---|---|---|---|
| 1 · Awareness | Remembers she needs a loan; not sure if she's eligible | ●●●●● Neutral | No way to check eligibility without going to branch | Home dashboard: live eligibility estimate based on share capital & repayment history |
| 2 · Research | Calls the SACCO, waits on hold, asks about loan products | ●●●●● Frustrated | Phone lines busy, information inconsistent between staff | Loan products screen: rates, max amount, and required guarantors — always up to date |
| 3 · Apply | Visits branch, fills in paper form, submits with documents | ●●●●● High effort | Half-day lost; form may be incomplete; documents re-requested | In-app loan application: guided multi-step form with inline document capture; progress saved |
| 4 · Guarantors | Contacts guarantors personally to ask them to come to the branch | ●●●●● Anxious | Guarantors forget; process can take weeks; no visibility | Guarantor flow: push notification to guarantors; single-tap in-app approval; applicant sees live status |
| 5 · Wait | Waits for committee approval; calls SACCO to check status | ●●●●● Anxious | "Pending" with no timeline; fear application was lost | Loan timeline view: named stages, estimated completion, push notification at each transition |
| 6 · Disburse | Receives funds via cheque or branch cash | ●●●●● Relieved | Bank/M-PESA disbursement not offered; another branch trip | Instant M-PESA disbursement with confirmation notification and loan schedule summary |
Design decisions
How research drove every decision
Each finding from user interviews translated directly into a specific design choice. Below is the evidence-to-decision chain for the most impactful parts of the product.
Members feared their loan was "lost" once submitted. 6 of 10 called the branch within 24 hours of applying just to confirm receipt.
Loan timeline view with named stages, timestamps, and a push notification at each status change — making the wait legible rather than invisible.
Guarantor approval was the single biggest drop-off in the existing process. Members had to call guarantors personally — some never responded.
In-app guarantor notification with single-tap approve/decline, and a 48-hour reminder push. Applicant sees each guarantor's status in real time.
Statement downloads were used for housing loans, school fees, and visa applications — not just internal reference. Members needed a PDF they could immediately share.
Statements section: date-range picker, instant PDF generation with SACCO letterhead and stamp, and a share sheet that bypassed the need to download first.
First-time smartphone users (especially 45+) failed the ID capture step in competitor apps because camera guidance was unclear in low-light conditions.
KYC flow: animated frame guide, brightness detection with soft warning, and a manual-upload fallback with photo-capture tips in Swahili.
Members trusted their SACCO brand far more than "Kwara." When shown a generic fintech UI, 8 of 10 said they'd be less likely to share financial info.
White-label theming at the design system level: every SACCO gets its own primary colour, logo, and name throughout — Kwara is invisible to end users.
Data structures before pixels
The most important design work happened before Figma was opened. Every SACCO on Kwara's platform had slightly different data structures for accounts, shares, loan products, and repayment schedules. I worked with the back-end team to map these into a normalised UI data model — so the same component library could flex across institutions without needing custom screens.
App screens — key flows
Screenshots from the React Native MVP across the four core journeys: onboarding, home dashboard, loan application, and statements.
ONBOARDING & KYC
HOME DASHBOARD
Total savings and available credit surface immediately — no tap required. Research showed members opened the app primarily to check these two numbers.
Four persistent quick-action tiles (Pay, Transfer, Statements, Loans) placed thumb-zone low. Based on task-frequency mapping from interview data.
In-app bell with badge count, surfacing loan status changes and guarantor requests — addressing the #1 member complaint: "I never know what's happening."
LOAN APPLICATION FLOW
TRANSFERS & STATEMENTS
Design system
I built and maintained the full Kwara design system in Figma — tokens, components, patterns, and documentation — so that as the product scaled from 2 to 8 engineers, the experience stayed coherent. The system was built to mirror the React Native component API, reducing handoff friction and speeding up feature shipping.
Loan flow — the hardest problem
The multi-step loan application flow (eligibility check → guarantor selection → committee review → disbursement) was the most complex UX challenge. Each step could be blocked by an external party, and wait times ranged from hours to days. We designed explicit "pending" states, push-notification hooks at every transition, and a loan timeline view so members always knew where their application stood.
Prototype — React Native MVP
The interactive prototype below shows the complete React Native neobank MVP across onboarding, home dashboard, loan application, and account management flows. Navigate directly in the embed or open in Figma for the full annotated file.
Key flows covered in the prototype:
- Onboarding & KYC — phone verification, national ID capture, biometric consent
- Home dashboard — account summary, share balance, quick actions, notification centre
- Loan application — eligibility check, product selection, guarantor flow, document upload, status tracking
- Transfers & payments — member-to-member, withdrawal to M-PESA, scheduled payments
- Statements — date-range filter, PDF generation, share/download
Outcomes
The neobank launched to a pilot group of 3 SACCOs in Q4 2022 and rolled out to the full network through 2023. The combination of research-led design, a robust design system, and close collaboration with engineering produced measurable results:
Beyond the headline numbers, loan application completion rates improved significantly after redesigning the guarantor flow. Statement download adoption exceeded projections within the first quarter, validating the research finding that members needed documents for third-party financial processes.
What I learned
- Data architecture is UX. Investing two weeks in understanding core banking data models before opening Figma saved months of redesign later. The UI is only as good as the model it sits on.
- Trust is designed in states. In financial products, the scariest moment is ambiguity — a "pending" status with no timeline. Investing in transition states, push notifications and timeline views converted anxious users into confident ones.
- Co-design with engineers from day one. Building the design system to mirror the React Native component API meant shipping was faster and the experience drifted less from the designs than on any project I'd worked on before.
- Test with the actual audience, in the right context. Remote Maze testing had limits; in-person testing at SACCOs with real members surfaced issues — around literacy, trust language, and connectivity — that no remote session would have caught.
