One of SpendCheck's newer features lets you tap your card for an Apple Pay purchase and have it show up in the app automatically, through an iOS Shortcuts automation — no manual entry needed. It worked. It just wasn't fast, and it wasn't silent, which for something meant to run invisibly in the background matters.
I traced it down to a real bottleneck: every time the app needed to know something about a merchant — its usual category, whether you'd seen it before — it scanned your entire expense history to find the answer. Fine with a few dozen expenses. Not fine as the app scales with real, longtime users.
The obvious fix was a database index — a quick patch that would've made the scan faster without changing what it was doing. I almost shipped that. Instead I asked a more basic question: how many distinct merchants does a person actually have? Even someone with years of data and thousands of logged expenses realistically has a few hundred merchants, not thousands. That's a fundamentally different, much smaller problem than "expenses" — and it deserved its own small, dedicated part of the database instead of being buried inside a bigger scan every single time.
So instead of the quick patch, I had it rebuilt properly: a real Merchant model that tracks its own usage count and last-used category directly, a versioned migration to carry existing data forward safely, and every place in the app that needed a merchant lookup rewired to read from this new, tiny table instead of scanning everything.
Before shipping it, I read through the actual code change line by line — and caught two bugs that "worked" but were quietly wrong. Recurring expenses like subscriptions and rent were never being linked into the new system, so they'd have silently disappeared from the app's merchant search and filters even though they were still being logged correctly underneath. And a usage counter meant to track "how often do you shop here" was incrementing every time you edited an expense, not just when you added a new one — so fixing a typo in a note would slowly and invisibly corrupt the app's sense of your own spending habits.
Neither bug would have crashed the app or lost anyone's data. Both would have made it quietly less trustworthy over months of real use — which is arguably worse, because nothing would have looked broken.
This is the part of building with AI tools that I don't think gets talked about enough. They're genuinely good at producing code that runs and looks right. They're not the ones deciding what "right" means for your specific app, and they won't always catch a bug that only shows up when you ask "what happens if a real person does this weird, ordinary thing five times." That's still the part that needs a human paying close attention.
SpendCheck is free, fully on-device — no accounts, no cloud storage, nothing about your spending ever leaves your phone — and live on the App Store now. I'm testing this update myself for the next few days before it goes out to everyone else.
Download SpendCheck on the App Store: https://apps.apple.com/app/id6787849347