Title card: I needed a finance app. So I asked an agent to build it, with screenshots of the IACF Finance home page using demo data

I Needed a Finance App, So I Asked My Bot to Build It

•

What one Sunday with Grok Bot taught me about software made to order

For about fourteen years I tracked my money in Suishouji (随手记, sui.com). It is a good app. It is also somebody else’s app: my financial history sits on somebody else’s servers, and somebody else decides which features I get. On Sunday, October 11, I wanted to see whether I could replace it without writing the code myself.

I have spent most of my career in manufacturing IT, building integration frameworks and, more recently, open-source tools like the IACF framework, MoM-MCP, apriso-mcp and Testbot. So I know what a “simple” app really costs. A personal finance tool with multiple currencies, credit cards, investments and a decade of imported history is not a weekend project. Normally.

The experiment

I use Grok Bot, an AI agent app. My bot is named Goji, and it has its own Linux computer to work on. At about 9:00 AM PT I asked Goji for a Suishouji-style app. Before writing anything, it went and studied how sui.com is organized: account types, transaction kinds, categories, the export format. About 20 minutes later I had a first working version running.

Then I spent the afternoon doing what I would do with a capable engineer sitting next to me. I used it, noticed what was missing, and asked for the next thing. One request at a time, in plain language. Group my accounts into a tree with totals. Let me set a balance and record why it changed. Add reconciliation. Calculate investment returns properly. Put a home page in front with this month’s numbers.

Four-step loop: you describe what you need in plain language, Grok Bot researches and builds, Grok Bot tests and backs up, you review and refine, then repeat.
The working loop for the whole day. I described and reviewed; Grok Bot researched, built, tested and backed up.

By the end of the day there were 133 automated tests passing, and the code was on GitHub, merged through pull requests the bot opened.

What I ended up with

IACF Finance is a Python FastAPI service with a SQLite database and a single-page web UI that works on both my phone and my desktop.

IACF Finance home page with demo data: this month's income, expense, net and investment income cards, a quick-add box, and a list of recent transactions.
The home page: this month at a glance, quick add at the top, recent entries below. All screenshots use demo data.

It handles the account types I actually have: bank, credit card, cash, Alipay and WeChat Pay, brokerage, retirement, crypto and loans, in multiple currencies, rolled up into net worth. Transactions cover expense, income, transfer, refund, balance adjustment and investment trades.

The feature that makes it usable day to day is quick add. I type “午饭 35 支付宝” or “paid 300 from checking to amex” and it books the entry. If it isn’t sure, the entry lands in a To-review inbox instead of being guessed silently. When I want more control, a detailed form pre-fills from what I typed, highlights its guesses, remembers my last choices, and has a save-and-add-another button for entering a stack of receipts.

New transaction form pre-filled from the typed note 'dinner 68 with friends yesterday #weekend', with the amount, category, date and tag filled in and the account field highlighted for checking.
Type a sentence, get a pre-filled form. Fields it guessed are highlighted, and nothing is saved until I press Save.

It also watches a mailbox I configure over IMAP and turns bank alert emails into entries, using parsing rules I can edit. There is an optional Telegram bot. Recurring transactions run from a daily job. Balance adjustments record a transaction with a reason, such as investment gain, interest or fees, so the history stays explainable. Investment accounts get simple, Modified Dietz, annualized and XIRR returns. Backups run daily to local storage, and sync to my own Google Drive is built in as an option.

None of these features is new on its own. What is unusual is that every one of them is there because I asked for it, and nothing is there that I didn’t.

Accounts page with demo data showing assets, liabilities and net worth, and accounts grouped into collapsible Cash, Bank and Credit Card sections with group totals.
Accounts grouped the way I think about them, with group totals in multiple currencies rolling up to net worth.

Fourteen years of history

The real test was my Suishouji export: about 8,000 rows from 2012 to 2026. Goji built the importer, and we ran it against a test copy of the database first. That surfaced bugs, which it fixed. Only then did we import for real.

Suishouji import preview using a small sample file: detected sheets and columns, and a mapping table to match Suishouji accounts to new accounts before anything is written.
The Suishouji importer previews and maps everything before writing a row. Shown here with a small sample file, not my history.

This is where I learned the most about the division of labor. The bot was fast and careful. It backed up the database before every change, tested on copies, and asked before anything risky. But it could not know whether the result was right. I could, because it is my history and I know what it should look like. Checking the import against real data, and deciding when it was good enough, was my job. It should be.

Reconciliation came out of the same thinking. After an import like that, I wanted a way to anchor each account to a real statement and see exactly where the numbers drift.

Reconcile dialog for a demo checking account comparing the statement balance with the app's computed balance, showing the difference and a checklist of transactions since the last checkpoint.
Reconciliation (对账): enter the statement balance, see the difference, tick off transactions, and decide how to record the gap.

Your app, your infrastructure

The other thing I wanted was independence. No subscription, no vendor holding my data, no risk of the service shutting down. Former Mint users know that feeling. Here the whole database is one SQLite file on a machine I control.

Architecture diagram: phone or PC browser, Telegram and email alerts feed IACF Finance (FastAPI plus one SQLite file), which can run on the bot's Linux machine over a private Tailscale network, on a Windows PC, or in Docker, with daily local backups and optional sync to your own Google Drive. No third-party finance SaaS in the data path.
Same code, three ways to run it. The data lives in one SQLite file I own.

Right now it runs on Goji’s own Linux machine, private, reachable only over my Tailscale network. It is also packaged for Windows, with setup.bat, start.bat and an optional start-at-boot task, and there is a Dockerfile for anywhere else. Same code, three ways to deploy it.

Privacy was part of the process, not an afterthought. My personal data never left my machines. The screenshots in this post use demo data. Before anything went public, the bot checked the package and the repository for personal data and keys.

IACF Finance home page on a phone with demo data: monthly summary cards, quick add, recent transactions and a bottom navigation bar.
The same app on a phone, quick add and bottom navigation included.

What still needed me

Here is the honest list. I had to know what I wanted; those requirements came from fourteen years of habits, and no bot can invent them for me. I had to judge results against reality, especially the import. I had to decide what stays private and when a change was risky enough to slow down.

And it is a personal tool built in one day. It is well tested for that, but it is not a product with a support team behind it. If you run it, you own it, backups included.

The bigger idea

For most of my career, getting software has meant a choice: buy a product that mostly fits, or fund a project to build the rest. What I saw on Sunday is a third option. When you need an app, you describe it to an agent, and it builds one that matches your requirements, on infrastructure you choose. You stay the product owner. The agent does the engineering and checks with you before anything you would regret.

I don’t think this replaces professional software teams. Manufacturing systems still need architecture, validation and people who understand the plant floor. But for the long tail of tools that one person or one small team needs, the math has changed.

The code is on GitHub at https://github.com/mdaxf/finance. If you try something similar, I would like to hear what you built.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *