On-Device AI Categorization & Bank Privacy
How On-Device AI Categorization Protects Your Bank Privacy
Last February, I sat in a coffee shop north of Tampa and opened a spreadsheet of transaction descriptions people had sent me. One read: "PLANNED PARENTHOOD JACKSONVILLE." Another: "NARCOTICS ANONYMOUS MTG DONATION." A third: "PSYCHIATRIST OFFICE CO-PAY."
These weren't hypothetical edge cases. Real people, real privacy moments. And I realized that if I built Misto's with the same architecture as every other fintech app—dumping raw transactions to a cloud API for categorization—I would be complicit in exposing exactly these intimate details to a third-party vendor, a database somewhere, a potential data breach.
That day, I decided: on-device AI categorization would be non-negotiable.
What On-Device AI Categorization Actually Means
When you import transactions into Misto's, the AI that cleans up cryptic descriptions like "WMT #2847 SUPERCENTER ST PETERSBURG" and tags it "Groceries" runs entirely on your device. No description leaves your phone or browser. No external API call. No inference logged on a server.
I use a lightweight language model small enough to bundle with the app—roughly 100MB, trained on transaction patterns that don't require knowing anything about you. It learns general patterns: CVS often means Pharmacy, Whole Foods means Groceries. But it learns that once, on your device, forever.
The moment you enable Misto's Premium (the one-time $49 unlock that includes the AI suite), that model unpacks locally. Your transactions stay yours.
The Trade-Off I Made: Speed vs. Privacy
Building this cost me something real. A cloud API would categorize 500 transactions in 2 seconds. On-device, it takes 12–15 seconds on an older phone, 4–5 seconds on a modern one.
I tested this in late April, right before the July web launch. I remember the exact moment I decided to keep it slow: I was watching the progress bar fill on my iPhone 11, and it hit me that the person using Misto's might prefer the wait if it meant absolute certainty their data wasn't leaving their pocket.
So I kept the slower path. I added a small visual flourish—a calm, pulsing Misto observation in the import modal—to make the wait feel intentional, not broken. "Misto is learning your transactions. Take a breath." Something like that.
That decision cascaded. It meant I couldn't rely on cloud-hosted inference for the Tax Vault either, which flags possible deductions. Same constraint: everything runs on-device. It meant I had to be careful about model size when building multi-device sync (Premium members can sync across phone, tablet, and web, but sync is zero-knowledge encrypted—I can't see the transactions or the categorizations).
It also meant I had to be honest in the UI. No false promises of "military-grade security" or "unhackable." The truth: your transactions exist on your device. They're encrypted at rest (AES-256-GCM, key derived from your password, which I never see). If someone gains physical access to your phone, they could theoretically extract them. I say that plainly in the FAQ.
Why This Matters More Than You Think
The fintech industry normalized the idea that categorization, analysis, and recommendations require sending your statements to the cloud. Mint did it. Most newer apps do it. It became invisible—just how things work.
But every transaction is a story. "AMAZON" could be a pregnancy test. "CVS" could be antidepressants. "STARBUCKS" could be a coffee, or it could be a meeting with a therapist who operates out of a coffee shop. When you send those descriptions to a third party, you're not just trading convenience for privacy. You're trading intimacy.
I built on-device AI categorization because I think you deserve to see your money clearly—to let an AI help you understand your spending patterns—without assuming the cost is total data transparency.
How It Works in Practice
When you import a CSV, PDF, or OFX file (no third-party aggregator, no bank login stored on my servers), Misto's reads the transactions locally. The AI model tags each one: groceries, dining, insurance, transport, whatever fits. You review the categories, adjust any that feel wrong, and move forward.
On Premium, if you enable live bank sync, that sync also stays local. I built it so that when you authenticate with your bank, you're signing in directly to the bank's own portal in an in-app browser. The transactions are captured on your device. I never see them. I never log them.
It's slower than Plaid. It's less seamless than Stripe's aggregate APIs. But it's the only path that doesn't require me to ask you to trust a third party with your financial intimacy.
The Broader Implication
On-device AI categorization isn't just a privacy feature. It's a statement: you don't have to choose between clarity and ownership. You can have both.
Mint shut down in late 2023, and a lot of people felt betrayed—not because the app broke, but because they realized how much of their financial life had been sitting in a database owned by someone else. I wanted to build something that made that betrayal impossible by design.
If you'd like a quieter way to see your money without sending your statements anywhere, the free-forever core lives at https://mistosfinancial.com/. You can categorize manually, or unlock Premium for on-device AI that works only for you.
Want Misto’s to read your ledger like this?
Create your free account today and start tracking your wealth like a garden.
Create a Free Account