The Problem with Expense Tracking
I’ve tried every expense tracking app on the App Store. They all have the same problem: too many steps.
Think about it. You buy a coffee. To log it, you need to:
- Pull out your phone
- Open the app
- Tap “Add Expense”
- Enter the amount
- Select a category
- Type a description
- Confirm the date
- Hit save
That’s 8 steps for a $4 coffee. No wonder most people give up after a week.
A Better Approach
What if you could just type “coffee $4.50” and be done with it?
That’s what I set out to build. An expense tracker that understands natural language.
How It Works
The magic is in the parsing. When you type “uber to airport $35”, the app needs to understand:
- Amount: $35
- Category: Transportation (because “uber”)
- Description: “to airport”
- Date: today (implicit)
This is where Apple Intelligence comes in. Instead of writing a bunch of regex patterns, I’m using on-device ML to understand the intent.
func parseExpense(_ input: String) async -> Expense? {
let result = await intelligenceService.parse(input)
return Expense(
amount: result.amount,
category: result.category,
description: result.description,
date: result.date ?? Date()
)
}
Privacy First
All processing happens on-device. Your expense data never leaves your phone. This is a core principle, not an afterthought.
Lessons Learned
1. Start with the happy path
Don’t try to handle every edge case on day one. Get the basic flow working first.
2. Sweat the details
The difference between “good” and “great” is in the micro-interactions. How does it feel when you save an expense? Is there satisfying feedback?
3. Dogfood ruthlessly
I’ve been using the app for all my expenses. Every friction point I hit, I fix immediately.
What’s Next
I’m targeting an App Store release in early 2025. Still need to:
- Polish the onboarding flow
- Add basic reports and charts
- Figure out the business model
- Write App Store copy
If you’re interested in beta testing, let me know on Twitter.