case file / Fintech / Neobank / 18 weeks
Banking
That Just Works.
Hold up a paycheck, tap deposit, wait three seconds. The money lands. We moved the read on-device with Apple’s Vision framework and Gemini Nano via AICore, with MICR + IQA validation and a server-side Check 21 re-check for the regulator. 97.3% MICR accuracy, no 24-hour review, no support ticket.

Fintech digital banking app
- Industry
- Fintech / Neobank
- Timeline
- 18 weeks
- Key result
- 420K users, $1.2B deposits
- Stack
- Kotlin + Jetpack Compose, Swift + SwiftUI, Node.js, Apple Vision framework + AFM 3 Core, Gemini Nano via AICore, MICR + IQA (X9.100-187/188), Check 21 server re-check, WebSocket, Zendesk
We built the iOS and Android apps for a US neobank that now serves 420K+ users and has moved $1.2B+ in deposits. On-device check scanning hits 97.3% accuracy, transaction uptime is 99.99%, and the store rating is a 4.7.
Jetpack Compose on Android, SwiftUI on iOS, platform-native because banking apps need to feel trustworthy. Apple’s Vision framework + AFM 3 Core handle the check read on iPhone, Gemini Nano via AICore handles it on Pixel/Android, and ML Kit is the fallback path on older devices. MICR and image-quality (X9.100-187 / 188) validation run on-device, with a server-side Check 21 re-check for legal completeness. WebSocket pushes balance updates the moment a transaction clears.
Mobile Engineering Approach
-
Two native apps, not one wrapper — SwiftUI on iOS and Jetpack Compose on Android, each following its platform’s design language. Banking apps live or die on feeling trustworthy.
-
On-device check read, server-side legal check — We ripped out the third-party vendor and replaced it with Apple’s Vision framework + AFM 3 Core on iPhone, Gemini Nano via AICore on Android, and ML Kit as a fallback. MICR + IQA pass on-device under X9.100-187 / 188; a server-side Check 21 re-check covers the regulator. Deposits went from a 24-hour review cycle to a 3-second confirmation at 97.3% MICR accuracy.
-
Balance updates live — WebSocket pushes every transaction as it clears. No pull-to-refresh, no stale balance at the checkout.
-
Security in the stack — Biometric auth, certificate pinning, encrypted local storage, jailbreak detection, and every transaction signed with a device-bound key.
The hard part
Check scanning sounds simple until you see the real data: crumpled paper, kitchen lighting, handwritten courtesy amounts, faded ink. The vendor charged per scan and still took 24 hours to come back with a “maybe”. We had to move inference on-device and build our own training loop for the edge cases off-the-shelf models keep getting wrong.

How it works
On-device check deposit
What changed
Check-deposit support tickets dropped 80% because users now find out in 3 seconds, not 24 hours, whether a deposit was accepted. Completion rates went up too: nobody abandons the flow waiting for a vendor review to come back.
- 420K+ active
users - $1.2B+ deposits
processed - 99.99% transaction
uptime - 97.3% scan
accuracy


“Check deposits went from a 24-hour review cycle to 3 seconds. Our customer support tickets for deposit issues dropped 80%.”
@ Priya N.
CTO — US Neobank


