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
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 + the Foundation Models framework (iOS 18+) 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 + Foundation Models 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.
What was actually hard
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.

Project Outcome
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.
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



