Fintech · iOS App · 2024

Vaultly

Personal finance app with real bank synchronisation — because manual entry is where good intentions go to die.

2kUsers, month 1
4.9★App Store rating
18 daysBuild to launch
€0Churn, 90 days
Accounts
Transactions
Analytics
// the problem

The data was always wrong

Anna tracked her expenses manually in Notes. She'd forget transactions, categorise incorrectly, and end up with a monthly summary that bore no resemblance to reality. Existing apps either required manual input or connected to UK banks only — useless in Spain.

She needed: automatic bank sync across Spanish and European banks, smart categorisation, budget alerts, and a weekly digest. In Spanish.

// the brief

Scope

Days 1–5

Plaid Integration

OAuth bank connection flow, transaction sync, data model

Days 6–12

Core UI

Account overview, transaction list with auto-categorisation, budget rings

Days 13–18

Analytics + Launch

Spending charts, weekly digest notifications, App Store submission

// key decisions

The hard parts

Plaid in the EU

Plaid's European coverage required a separate OAuth flow for PSD2-compliant banks. Built a custom token refresh manager to handle 90-day re-authentication cycles transparently.

Smart categorisation without ML

Used Plaid's merchant data + a curated lookup table of 1,200 merchant patterns. Categorisation accuracy: 91% without any on-device ML overhead.

Privacy architecture

Bank credentials never touch our servers. Plaid tokens stored in the iOS Keychain. All sync happens device → Plaid → CoreData. Zero plaintext financial data stored externally.

Swift 5.9 SwiftUI Plaid SDK CoreData Keychain Charts framework Push Notifications
// results

90-day snapshot

2,041

Downloads in first month

91%

Auto-categorisation accuracy

4.9★

Rating, 89 reviews

"I finally know where my money actually goes. And it happened without me doing anything — the app just figured it out. Worth every cent."

AS

Anna Sorokina

CEO & co-founder, Vaultly

Next case study

ShiftSync

SaaS · iOS
View ShiftSync case study →