Personal finance through your AI agent. Export a statement from your bank, drop it into the chat, and ask:
- Where did the money go this month?
- Am I eating out more than a year ago?
- What did the Balkans trip cost, per day?
- If rent goes up 200, what is left each month?
- How many months could I live off what I have?
There is no app, no dashboard and no bank link: the agent is the interface, over MCP, and SKILL.md is its manual. The numbers are as fresh as the last statement you dropped in.
Paste this to an agent with MCP and skills:
Install rappen from https://github.com/vovacha/rappen:
1. Clone it and run `uv sync` in the clone.
2. Register its MCP server for all projects:
name: rappen
command: uv run --directory <absolute path of the clone> python -m rappen.mcp_server
3. Symlink its SKILL.md as a skill named `rappen`.
4. Reload the MCP servers yourself if you can; if only I can, tell me how and wait.
5. Set up my ledger as SKILL.md says.
If the agent stops to ask for a reload, reload and say Set up rappen.
Setup is a short conversation: the agent asks which currencies you use, proposes a category
tree, and writes config.yaml once you agree. Then drop in your first statement.
To update, git pull the clone, or ask the agent to. If an update changes the config.yaml
format, your old file is refused with a message saying what to change.
- Transactions. Every bank line becomes one row, with a category and, once you tag one, a
trip. Every spending figure is a sum over those rows.
- Categories. Rules in
config.yamlfill in what they match; the rest you set by hand, and a category set by hand is never overwritten (CONFIG.md, example). - Transfers. Money moved between your own accounts is neither income nor spending and stays out of the sums.
- Trips. Name a trip and its dates; the food, transport and hotels in that window are the trip's cost. Flights paid earlier you attach by hand.
- Currencies. Rows stay in the currency they were paid in; sums are in the currency you chose at setup.
- Categories. Rules in
- Holdings. What you own and owe, typed in: a bank balance, cash, a pension, a loan. Their sum is your net worth.
- Subscriptions. What renews, typed in if you want to track it.
All of it is two files in ~/.rappen; copy them to back up or move:
| File | Table | Fields |
|---|---|---|
rappen.db |
transactions | date, description, amount, currency, account, category, trip |
| holdings | name, value, description | |
| subscriptions | name, amount, currency, monthly or yearly, active | |
config.yaml |
currency, rates, categories, each with its rules and its transfer and trip flags |
| Bank | Country | File | Notes |
|---|---|---|---|
| PostFinance | Switzerland | ||
| UBS | Switzerland | CSV | |
| Yuh | Switzerland | CSV | exchanges become two rows; stock and crypto orders are dropped |
| Revolut | Lithuania | CSV | only settled rows are taken: let exports overlap by a few days |
| Monobank | Ukraine | CSV | export with English column names |
Any bank that exports transactions can be added: one folder in rappen/parsers/, see
DEVELOPMENT.md.