All projects
Spendlio

Technical architecture

Spendlio

TBox's own native iOS expense-tracking app — fully offline, zero backend, with on-device OCR receipt scanning, voice input, and StoreKit 2 subscription monetization.

Swift
SwiftUI
Core Data
StoreKit 2
Vision OCR
Offline-first iOS · SwiftUI In-house product Live on App Store
0 Backend dependencies
100% On-device storage
Live App Store
1 Engineer — full ownership
Expense dashboard
Add expense
Receipt scanner
Analytics view
Budget overview
Settings
Mobile UI
Swift SwiftUI UIKit
Data & storage
Core Data iCloud sync UserDefaults
Platform integrations
StoreKit 2 Vision OCR Speech HealthKit
Type
In-house product
Platform
iOS (native)
Released
2023
Ownership
100% TBox
Stage
Live — App Store
Ownership
100% TBox

Three engineering decisions that define the product

Offline-first architecture
100% on-device — no network required

Spendlio was designed around a single constraint: it must work completely offline. Every expense, receipt, and budget is stored in Core Data on the device — iCloud sync is opt-in and handled through NSPersistentCloudKitContainer, which reconciles changes when connectivity returns. There is no API server, no user account, and no data ever leaves the device unless the user explicitly enables iCloud. The result is instant load times, zero latency on writes, and complete data ownership for the user.

On-device OCR
Receipt scanning via Apple Vision framework

Rather than sending receipt images to a cloud OCR service, Spendlio processes them entirely on-device using Apple's Vision framework. VNRecognizeTextRequest extracts merchant names, line items, and totals from photos in under a second on any modern iPhone. The recognized text is parsed through a lightweight rule engine that maps common merchant patterns to expense categories — no ML training pipeline, no API costs, no privacy tradeoffs.

Subscription monetization
StoreKit 2 — native, server-validated

Monetization runs through StoreKit 2's modern async/await API — cleaner transaction handling, built-in entitlement management, and server-to-server notifications for renewals and cancellations without a custom backend. Product configuration, pricing, and subscription groups are all managed through App Store Connect. Entitlement status is validated locally against the signed transaction receipt, so there is no server round-trip on app launch.

Want to see what we build with full ownership?

Spendlio is our engineering benchmark — every pattern we recommend to clients, we've validated here first. Happy to walk through the architecture on a call.

Start a conversation →