SheetLink
ai finance

I Stopped Using Budgeting Apps. Now Claude Has My Raw Transactions and I Can Do Anything With Them.

Budgeting apps lock your money behind their features. I built SheetLink to get my raw transactions into a format Claude can read and act on. Here is why that changes everything, with a real walkthrough.

Rudy·Founder, SheetLink
··7 min read

I am a finance person, and for years I could not get a clean, usable feed of my own household's spending. That is the whole reason SheetLink exists. But the thing I want to tell you about is what happened after I solved that, because it turned out to be much bigger than I expected.

My wife and I run everything through one credit card for the points. It is her personal card, I am an authorized user, and I cannot log in to see the transactions. "Let me update our budget" meant texting her to export a CSV from her bank. Every month. It is the kind of small recurring friction that quietly makes you give up.

So I built SheetLink to sync those transactions into our spreadsheet, on my schedule, without needing her bank login. Your data lands in your sheet, is never stored on our servers, and you control when it syncs.

That fixed access. Then I realized access was not even the real prize.

Every budgeting app I had tried (Mint while it lasted, and the usual suspects since) does the same thing: it takes your transactions and locks them behind its own features. You see its charts, its categories, its version of your money. You cannot ask your own question or build your own tool, because the data is in their box.

When I got my raw transactions into a format Claude could read, that ceiling disappeared. And the proof is almost boring, which is exactly why it is convincing.

I asked Claude plain questions about my transactions:

  • How many are we working with? 1,067 since July.
  • What recurs across most months? H-E-B and Spectrum every month, Reliant and the city utility eleven of twelve, Sam's Club ten. That is my real bills-and- subscriptions list, derived in one question.
  • Anything over $500? A clean list, instantly.

None of that needed an app feature. Mundane questions, instant answers, no app. A budgeting app would make me find the right tab and hope it showed what I wanted. Here, I just ask, because the data is mine and it is in the open.

That is the actual product. SheetLink is not really a sync button. It is the thing that puts your money in a form an AI can act on, under your control. The budgeting is just the first thing I did with it.

I did this as a real MAX customer, from the public docs. The whole setup is three commands.

Install the CLI:

npm install -g sheetlink

Create an API key from Dashboard → API Keys (it starts with sl_), then authenticate. sheetlink auth prompts you for the key and stores credentials locally so you never have to pass it again:

sheetlink auth

Now pull your transactions. By default sheetlink sync writes a clean JSON payload to stdout, which is exactly the format Claude wants:

sheetlink sync --output json

Here's the part that makes it click. I was running this inside Claude Code, so the CLI and Claude live in the same terminal. I didn't export a file, upload anything, or paste a wall of JSON into a chat window. I just told Claude to run sheetlink sync and it read the output directly. My full transaction history went straight from my bank, through SheetLink, into a model that could act on it, without ever leaving my machine.

The most tedious part of any spreadsheet budget is tagging each transaction with a budget category. Plaid gives generic categories; my budget uses specific ones.

This is where the same-terminal setup paid off. Because Claude could run the CLI and read my sheet, I didn't ask it to suggest a categorization approach. I asked it to build one, and it did, in the same session. It pulled my transactions, looked at the 890 I had already tagged, and saw what I would have eventually noticed myself: about 95 percent of merchants map to one category, always. So it wrote the system around that fact.

It's simple:

  1. A lookup table from my own history handles the 95 percent, instantly.
  2. Claude handles only the new or ambiguous merchants. It read a stretch of resort, museum, and ballgame charges and correctly understood it as the family trip we took. Every call it makes becomes a new rule, so the AI layer shrinks every month.
  3. I glance at the genuinely ambiguous handful.

On a recent batch it categorized the large majority automatically, left transfers and card payments alone, and handed me two transactions to decide. Two.

But categorization is just the demo. The real point is that I could have built anything on that data, because it was mine, in the open, and Claude could both read it and run code against it.

While building this I almost added a "filter sync by date" feature, to drop old transactions. I decided against it, and the reason matters: SheetLink's job is to deliver everything Plaid has, faithfully. The moment it decides which transactions you "probably want," it stops being a transparent pipe. I would rather give you all of it and let you act on whatever you want, in your own tools. That is more control, not less.

(There is a legitimate version of date filtering for enterprise-scale volume, which we will solve with incremental sync when a customer actually needs it. But filtering as an opinion about your data? No.)

Free and Pro sync your bank to a spreadsheet with a click. MAX adds the API key, the CLI, output to JSON, CSV, Postgres, or SQLite, and an MCP server so Claude can work with your live transactions. It is the difference between a sync button and a programmable, AI-ready feed of your own money.

This is Part 1. In Part 2 I bring this categorization into the spreadsheet itself: a one-click menu button that runs the same Claude categorization right inside Google Sheets. No terminal, works from your phone. The version any MAX user can copy in five minutes.

Then Part 3 is the one I'm most excited about. Since I'm already working inside Claude Code, the natural next step is to break out of the spreadsheet entirely and have Claude build me a personal finance web app to manage all of it. Not a SaaS dashboard with my data on someone else's servers. An app that runs on my own machine, against a local copy of my own transactions, that I built in an afternoon because the data was already in a form an AI could work with. Fully local, fully private, fully mine. That's the version of personal finance software I've always wanted and never been allowed to have.

If you want the step-by-step method rather than the story, I wrote it up here: how to auto-categorize bank transactions with AI.

If this resonates, SheetLink MAX gives you the CLI, API, and Claude access to do it yourself. And if you just want your bank in a spreadsheet without the monthly CSV dance, that is the free plan.

build in publicsheetlinkclaudemcpclidata ownershipbudgetingautomationplaidfounder

MAX is SheetLink's top plan. On top of syncing bank transactions to Google Sheets and Excel, it adds an API key, a CLI for unattended syncs, output to JSON, CSV, Postgres, or SQLite, and an MCP server so Claude can read and act on your live transactions. It turns a spreadsheet of transactions into a data feed you can build on.

A budgeting app only lets you do what its features allow. When you own the raw transactions in a format an AI can read, there is no ceiling. You can categorize, analyze, ask arbitrary questions, or build your own tools. The budgeting is one thing you do, not the only thing you are allowed to do.

No. SheetLink syncs your transactions into your own Google Sheet or Excel file, or wherever you direct the CLI output. The data is not stored on our servers. It exists for under a second in transit and then lives in your destination, under your control.