Design philosophy

The thinking behind CalmExpense

The options we considered, the strongest arguments against what we chose, and the trade-offs we accepted. Named honestly, with the costs included.

Every finance app asks you to trust it. CalmExpense asks you to look instead.

This page is the long version of the design decisions behind CalmExpense: the options we considered, the strongest arguments against what we chose, and the trade-offs we accepted. If a decision came with a real cost, we name it here. Nothing on this page requires you to take our word for anything, and we will show you how to check the important parts yourself.

The promise, in one sentence: your transaction data stays inside your own spreadsheet, in your own Google Drive. CalmExpense never sees it. There is no CalmExpense server holding your history, and no third party is ever connected to your accounts.

How we categorize your transactions (and why we don't use AI)

Sorting transactions into categories is where finance apps earn their keep, and also where most of them quietly start collecting your data. A month of spending is a detailed diary: where you shop, what you subscribe to, what you pay for your health. We looked at the standard ways to automate sorting, and all of them required sending your data somewhere. Here is what we considered, and why we walked away from each one.

The option we considered: an AI chatbot

The friendly option. You ask "what did I spend on food last month?" and a chatbot answers. It can even chat with you about a strange charge. Many finance tools are bolting exactly this on right now, because it feels like the future.

Here is the problem. Researchers at Stanford's Institute for Human-Centered AI studied the privacy policies of six leading AI developers, OpenAI, Google, Anthropic, Meta, Microsoft and Amazon, and found that all six use chat data to train their models by default. Conversations are kept on company systems, sometimes indefinitely, and in some cases human reviewers can read them. The researchers' warning is right in the title of their report: be careful what you tell your AI chatbot.

A finance chatbot would need your transactions handed to someone else's model to do its job. That is not a small detail we could engineer around, it is the whole architecture of the thing. There is no version of AI categorization that keeps your transactions inside your spreadsheet, so there is no version we could accept.

The option we considered: linking your bank account

The convenient option. Connect your bank once, and transactions flow in automatically, forever, with no monthly export on your side. Plaid is the company behind most of that plumbing in the United States.

We looked hard at this, because the convenience is real. Then we looked at how it has actually gone. Plaid paid $58 million to settle a class action over how it collected financial data, with a federal court giving final approval in 2022. The case covered roughly 98 million people and alleged that Plaid harvested bank login credentials and more transaction data than users understood, partly through screens styled to look like the user's own bank login page. Plaid denied the allegations, and the settlement also required changes to how it collects and keeps data.

Read that again as a product decision, not a headline: with bank linking, another company sits between you and your bank and handles your credentials and your history, by design. The middleman is the feature. For a product whose entire point is that your data stays in your hands, that middleman is the problem. CalmExpense does not use Plaid, does not link to your bank, and never will. You import your own statements from your bank's website, the same way you would download any other file, and from that moment the data is yours again.

The option we considered: traditional machine learning

Between chatbots and plain rules sits a quieter option: a machine learning classifier that learns patterns from labeled transactions. It is genuinely better than rules at guessing categories for merchants it has never seen, and it does not need to chat with anyone.

It still needs your data on someone else's computer. Classifiers of this kind are trained on large collections of transactions, and running one on yours means shipping your transaction descriptions to an external service, whether that service calls itself an API, an embedding model, or a private inference endpoint. The math may be clever, but the transaction still leaves the building. For us that was disqualifying on its own, no matter how much accuracy it offered.

What we chose instead: keyword rules and a merchant database

CalmExpense sorts transactions with plain if-then rules plus a database of known merchants. The idea is simple: if the description contains "coffee" or the name of a coffee shop you buy from, it goes to Food and Drink. If it mentions your landlord's name or the word "rent", it goes to Housing. The merchant database means common stores, subscriptions and utilities are recognized the first time they appear, so you are not building everything from scratch.

The rules run as Google Apps Script attached to your spreadsheet, under your own Google account, on Google's infrastructure. Nothing is sent anywhere else, ever. Because the rules are plain text you can read, the behavior is deterministic: the same charge always lands in the same category, today and next year. You can open the rules at any time and change them, and you can add your own rules for anything we missed. Your categories are yours, not the output of a black box you are supposed to trust.

The honest counterargument: rules are less accurate than AI

Now the strongest case against what we built, because it is genuine. A well-trained AI classifier can reach 90 to 95 percent accuracy on transactions it has never seen. A rule engine applied cold to a stranger's spending lands closer to 60 to 70 percent. If the only goal were the highest possible categorization rate, and if AI did not require sending your data out of your spreadsheet, we would use AI and this section would not exist. The accuracy gap is real, and I am not going to pretend otherwise.

Why the gap mostly disappears in practice

Personal finance is repetitive. Most of your monthly transactions come from the same short list of places: the grocery store, the coffee shop, the landlord, the utilities, the streaming services, the pharmacy. Those merchants appear month after month with almost identical descriptions. For that repeat set, which is the bulk of most people's spending, keyword and merchant matching is effectively as accurate as any AI, because the description barely changes and the rule is exact. The impressive AI numbers are earned on the long tail: merchants you visit once and never again.

The long tail is where we accept a visible cost, and you should know it before you buy. A brand-new one-off merchant may land in the wrong category until someone fixes it. Fixing it is one click in a dropdown, right there in your sheet. When you fix it, the correction stays yours: it lives in your spreadsheet and applies consistently from then on. With an opaque AI model you cannot see why a charge was categorized the way it was, and you cannot predict when the model will change its answer. With rules, there is no mystery to audit and no surprise waiting in next month's report.

There is a quieter reason this choice fits CalmExpense. The people this product is for are spreadsheet people: they like seeing the numbers and being able to edit anything. An AI that sorts your life and explains it back to you also stands between you and your own money. We would rather you understand your spending than have it summarized for you.

Why Google Sheets (and not a standalone app or Excel)

The second big decision was where CalmExpense should live, because the platform decides who can touch your data, what it costs you over time, and whether the thing still works in five years.

What we chose: your spreadsheet, on Google's platform

CalmExpense is not a separate app with its own database. It is a Google Sheet, with menus and automation attached, and that choice does most of the privacy work for us.

Google Sheets is free, runs in any browser and on any phone, and needs no installation. Independent trackers count more than 1.1 billion monthly active users, and industry research puts Google Workspace usage above 40 percent of Fortune 500 companies (source). Scale like that is a security feature: Google's infrastructure is probed constantly by attackers, researchers and regulators, and its products carry the enterprise certifications that big businesses are required to use. A young company cannot credibly offer you that depth of hardening on its own servers in year one.

Google has also made public commitments that matter here: the content you keep in Drive is not used for advertising, and it is not used to train Google's AI models without your permission. Whatever you think of Google, that is a different relationship from the one most finance apps offer, where your transactions live in the app company's database under its terms.

And because the code ships as Google Apps Script attached to your spreadsheet, it runs under your account on Google's infrastructure, and you can read every line yourself: open the spreadsheet, go to Extensions, then Apps Script. No compiled mystery, no server run by us, no fine print. If you ever want to leave, the product is an ordinary spreadsheet: copy it, export it to Excel or CSV, or download your whole Drive with Google Takeout. There is no lock-in, because the thing you bought is your own file.

The alternatives we weighed, and why we passed

A standalone app with its own cloud. This is how most finance tools work: your transactions sync to the company's servers, and your privacy becomes a question of their database, their security team, and their business model. Those apps tend to cost $60 to $120 a year, and you carry the risk that the company changes terms, gets acquired, or shuts down. We did not want your financial history on our servers, and we did not want to charge you forever to maintain them. CalmExpense has no servers holding your data, which is also why the price can stay a one-time $29.90.

Excel. Excel is a genuinely excellent spreadsheet, and if you already live in Microsoft 365, you can keep your budget there happily. But as a home for CalmExpense it fit poorly. The full-featured desktop product is tied to a subscription, while the one-time versions are desktop-bound and expensive, and the free web version does not carry the complete feature set. The automation story is weaker for our purposes: Sheets includes Apps Script for free, while Excel's deepest automation still depends on the desktop application. And Excel costs money for people who do not already have it, which is a strange ask for a product built for people tired of subscriptions.

"Local-only" desktop software. Software that promises to process everything on your own computer sounds like the ultimate privacy answer, and we understand the appeal. But a privacy promise from any software vendor is a claim, not a certificate. There is no universal privacy certification you can check, and a compiled desktop app cannot be inspected the way a script in a spreadsheet can. With a small vendor, you are also betting that the company stays alive, keeps updating the software, and never quietly changes direction. Trust is earned over decades, and it cannot be declared into existence on a website.

A random privacy-first website. This is the same problem one level up. A privacy policy is words on a page, and a claim that "your data never leaves this site" still needs an audit trail, a reputation, and someone accountable when things go wrong. We are not going to pretend CalmExpense has Google's track record. That is exactly why we built on Google instead: the part you must trust, the platform holding your file, is one of the most scrutinized companies on earth, and the part that is us has been shrunk to almost nothing, because our code lives in your spreadsheet where you can read it, and your data never touches our systems at all.

Playing devil's advocate against Google Sheets

The strongest objection: "if Google is involved, how is this private?" Fair question. The answer is that there is a difference between storing a file and running a business on it. Your CalmExpense sheet sits in your Drive like any file you own, under Google's published commitments about ads and model training, and the script runs only when you tell it to, inside your account. Nothing about CalmExpense adds a new party that sees your data. Compare that with the typical finance app, where your transactions are the company's most valuable asset.

Second objection: "Google could change Sheets or Apps Script someday." True, any platform can change. But Sheets and Apps Script have been stable, core Google products for well over a decade, and even in the worst case you lose nothing: the file is yours, the code is plain text, and you can export everything today. A proprietary app that shuts down takes its convenience with it, and your history goes with it. An ordinary spreadsheet cannot disappear the same way.

Third objection: "a spreadsheet is less slick than an app." Also true, and it is a trade we chose on purpose. Every number is visible and editable. You never have to wonder where a total came from, because you can click the cell and see. For people who already run their money in spreadsheets, that is not a compromise, it is the point.

The short version

Two decisions carry most of CalmExpense's character. Categorization is done by readable rules instead of AI, so nothing about your spending ever has to leave your spreadsheet for someone else's model. And the product lives on Google's platform instead of our own servers, so the company holding your file has a decades-long, publicly audited record, and the small company writing the code has nothing of yours to hold at all.

The costs are real, and we are not hiding them: an occasional one-off merchant needs a manual fix, there is no AI assistant, there is no automatic bank sync, and the interface is a spreadsheet, not a glossy app. Those are the prices of the promise, and we think they are the right prices for people who would rather own their data than be impressed by software.

If that matches how you think about your money, CalmExpense is a one-time $29.90 purchase, and it runs inside a spreadsheet you already own.

JX, founder of CalmExpense

See your own spending this clearly

CalmExpense turns your bank statement into a clean dashboard inside your own Google Sheets. No bank linking, no subscription. One payment of $29.90.

Start your free trial