Brett Bullock
← All work

DempIn

An Android app that handles our month-end settling up and tracks my spending the way I actually think about it. It does the work for me, in as few taps as I could get it down to.

ProblemMonth-end receipts

We each have our own credit card, so every month I'd collect receipts, split them up, work out who owed whom, and log my own spending by hand.

SolutionAutomate it, my way

It reads my bank's purchase alerts as they arrive, takes receipts as photos, screenshots or voice notes, and sorts everything into my own categories and splits.

ValueTwo taps a receipt

Logging a receipt is two taps from the home screen, and settling up at month-end is one number I don't have to work out.

By the numbers100%

of it built from my phone, through Claude Code's Remote Control, and nearly all by voice. I wanted to put a constraint on how I work. 14 pull requests, about 6,000 lines of Kotlin.

Built with

Tap any piece of the stack to see what it does here.

Try it

  1. 01Simulate a purchase. A bank notification arrives and logs itself. Keep tapping: one is a big-box store that needs a category, and one is money coming in, which is ignored.
  2. 02Scan a receipt with the camera button. On a phone it opens your camera and Claude reads your actual receipt, or you can choose a photo. The sample receipt shows Claude splitting groceries from an air fryer, spreading the tax, and Misc going over budget (the only time you'll see red).
  3. 03Say an IOU with the mic. It opens pre-filled so you can check it before saving.
  4. 04Open Settle up to see who owes whom, in one number.

A web mock-up with sample data. The real app is Android-only and installs from a signed APK.

Why I built it

My wife and I each have our own credit card, so at the end of every month we reconcile. That meant collecting all the receipts and splitting them, and not down the middle: I eat a lot more than she does, so groceries don't split 50/50. It took me a good chunk of time every month.

On top of that, I track my own spending in a very particular way: a few categories that matter to me, plus our fixed bills, all kept in a Google Keep note. None of the finance apps I'd tried fit how I think about money. My bank's tracker filed a flight under "car".

I wanted to keep my system and automate everything else away. I use Ramp at work, and I love how little effort expenses take there, so that was the bar: something that feels like Ramp, for our own money.

Getting the data

This was the hardest part, and the closest to my day job: getting data out of a system that doesn't offer an API.

My bank has no customer API, and Canadian open banking keeps getting delayed. Plaid-style aggregators are built for businesses, with approvals and fees, and scraping the bank's website with my password risks the account and breaks its terms.

What my phone does get is a notification for every purchase, from the bank and from Google Wallet, and Android lets an app read those. (It could read my wife's banking app the same way.) So DempIn reads them: it pulls out the amount and the store, merges the duplicate alerts from the two sources, skips charges that match a fixed bill, and ignores money coming in or moving between accounts. It also keeps every raw notification in a log, so I tune the parsing on real wording instead of guessing.

Where Claude fits

Receipts can come in however is easiest: a photo from the home-screen camera button, a screenshot or picture already on the phone, or a receipt my wife sends on WhatsApp. Claude reads them by what's on them, not by which store they're from. Groceries from Costco count as Food, an air fryer from the same Costco is Misc, and a mixed receipt gets split into one entry per category, with the tax spread across them.

It also turns voice notes into entries for cash and IOUs. "I owe Sam 40 for dinner" opens filled in so you can check it first, because speech is easy to mishear. And it sorts a new store into a category once, so the app remembers it next time. Stores that sell everything ask you instead, or wait for the receipt.

Each person pastes in their own Anthropic key, so there's no server and no shared bill. Everything else works without one.

Not just for me

Nothing about my setup is baked in. The first time you open DempIn, it walks you through your own monthly budgets, your fixed bills, whether you split costs with someone and how, and an optional Claude key. So anyone can install it and run their money their own way, the way I run mine.

Built to be trusted

It's a side project, but it holds my real finances, so it's built like it matters.

  • The data never leaves the phone. There's no account and no backend. Backups go to the phone's Documents folder every day, and I can save one to Google Drive.
  • Database changes ship with real migrations, never a wipe, so older backups still restore.
  • The money math has unit tests (splits, settling up, receipt parsing, backups), and CI won't merge anything that fails them.
  • When something goes wrong, it says so. An activity log in Settings records the receipts it read, charges it couldn't read, recoveries, backups and crashes. I can share it in a tap, and it's saved with every backup, so Claude can read it and help work out what happened.
  • Releases are signed and built from a version tag: pushing v1.2.0 builds, tests, signs and publishes the APK.
  • It takes as few taps as I could manage: home-screen widget, shutter, saved. A receipt that comes in on WhatsApp goes in through Share → "Partner paid."