Book a 30-min call
$ cd ~/projects/fintech-digital-banking-app agent.shipped · in production

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.

  • Home
  • Fintech digital banking app
Digital banking mobile application

Fintech digital banking app

Industry
Fintech / Neobank
Timeline
18 weeks
Key result
420K users, $1.2B deposits
Tech stack
Kotlin + Jetpack Compose, Swift + SwiftUI, Node.js, Apple Vision framework + Apple Foundation Models (iOS 18+), 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 + 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.

Mobile check deposit scanning interface

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.

> 420K+ active
users
> $1.2B+ deposits
processed
> 99.99% transaction
uptime
> 97.3% scan
accuracy
Banking app dashboard showing account balances
User depositing check via mobile scanning
Kotlin + Jetpack ComposeSwift + SwiftUIApple Vision frameworkApple Foundation Models (iOS 18+)Gemini Nano (AICore)ML Kit fallbackMICR + IQA (X9.100-187/188)Check 21 server re-checkNode.jsWebSocketZendesk

“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

Secure digital banking technology
  • [Apple Intelligence] on-device
  • [Gemini Nano] AICore
  • [MICR + IQA] Check 21
  • [SwiftUI] iOS
  • [Jetpack Compose] Android
  • [Biometric auth] security