可导入银行流水的 AI 记账应用
过去每隔几天,我就要花 30 到 60 分钟手动记账。于是我开发了一款应用:它读取银行流水,让 AI 为每笔付款选择类别,再请我逐行检查。它还会告诉我的女朋友她欠我多少钱。
- 我的角色
- 我设计了这款应用,并决定它如何使用 AI。代码由编程智能体 Claude Code 和 Codex 编写,受我设定的规则和检查约束。
- 状态
- 我从 2026 年 4 月起每天使用它。代码不公开,所以由一段使用示例数据的演示视频来展示它的实际运行。
- 技术栈
- Android、经由我的私有 AI 网关调用的 Claude、Telegram Bot API、用于备份和更新的 GitHub
- 规模
- 两年间约 1000 笔交易,包括我从旧应用迁移过来的历史记录
问题
我的开户银行 Toss Bank 以设有密码的 Excel 文件提供流水。每一行都有日期、金额和简短的商户名称。
我想知道钱都花在了哪里,而且我和女朋友有很多共同开销。所以每隔几天,我都要把这些行复制到一款预算应用里,为每一行选择类别,再算出她应付的那一份。
发展历程
我从小处做起。2026 年 4 月,我用两天时间做了一个 Telegram 机器人。后来,它变成了一个 Telegram Mini App,也就是运行在 Telegram 里的小型网页应用,并加入了 AI 导入功能。2026 年 6 月,它变成了我现在使用的 Android 应用。
一次导入的流程
- 打开流水 应用在手机上用已保存的密码打开银行的 Excel 文件。
- 读取数字 代码读取每一行的日期、金额和商户名称。AI 从不设定金额。
- 匹配收据 对于 Coupang(一家韩国网上商城)的订单,应用会找到订单邮件,并补上商品名称。
- AI 选择类别 Claude 从一份固定的类别列表中选择。我为熟悉的商户设定的规则优先。
- 我逐行检查 我标记由谁付款:I Pay Full(我付全款)、Half(各付一半)或 She Pays(她付)。我可以修改任何字段,也可以跳过某一行。
- 保存并通知 这些行保存在手机上,我的女朋友会收到一条 Telegram 消息,里面写着她应付的总额。
- AI 出错时由本地规则为各行分类,并有提醒说明原因
- 备份一个私有 GitHub 仓库,每次更改后都会更新
- 更新来自 GitHub Releases 的已签名应用更新
示例:一行流水的处理过程
-
银行文件中的这一行
2026-09-23 11:52 · 쿠팡(쿠페이)_KCP · −12,800 KRW -
匹配收据之后
쿠팡(쿠페이)_KCP — A4 복사용지 500매订单邮件写明了商品:一包 A4 复印纸。 -
代码读取的内容,以及 AI 补充的内容
date: 2026-09-23amount: −12,800 KRWtype: expensecategory: Paperwork › Printing & scanning
-
我点了 Half,Telegram 消息随即发出
2026-09-23 11:52 - 쿠팡(쿠페이)_KCP — A4 복사용지 500매 [Printing & scanning] - 6,400 KRW (total: 12,800 KRW)
设计决策
- 数字交给代码处理。有一次,AI 把我的账户余额当成了收入。现在,每一笔金额和日期都由代码读取,金额的正负号决定这一行是收入还是支出。AI 只选择类别,所以它改变不了任何总额。
- 更好的输入胜过更好的提示词。Coupang 的扣款在流水上看起来几乎一模一样,所以任何提示词都没法把它们分好类。把每笔扣款与对应的订单邮件匹配之后,AI 就拿到了真实的商品名称。只有当收据的总额与扣款金额相等,并且邮件与扣款的时间相差不超过两小时,这张收据才算数。
- 我的规则优先。我为熟悉的商户设定的规则,总是优先于 AI 的选择。
- 绝不静默失败。如果 AI 调用失败,或者它给出的类别不在列表里,就由本地规则为这些行分类,并有提醒说明原因。如果某一行怎么也分不了类,它会保持为“Unknown”(未知),等我来修正。
- 决策来自真实数据。退款过去会被算作收入。在我自己的流水中,17 笔 Coupang 退款里有 10 笔恰好只对应一笔之前的扣款。所以现在,应用会自动把这些退款从对应的那笔购买中扣除,其余的留给我手动匹配。
- 默认保护隐私。数据保存在手机上。导入时,只有流水的文本会经由我自己的网关发送给 AI。备份存放在一个私有 GitHub 仓库中,从不包含密码或令牌。
实际演示
在 YouTube 上观看 12 分钟的演示视频 视频展示的是应用的演示模式,只使用示例数据。截图来自应用的演示模式,其中只有示例数据。
-
核对记录:AI 把这笔 Coupang 订单归入 Groceries,谁付款由我来选
-
点击 Finish 之后:我女朋友会收到的 Telegram 消息,列出每个类别和她需要付的总额
-
图表:某个月按类别划分的支出
结果
- 40–100 小时每年节省的时间,据我自己估算
- 约 1000 笔已记录的交易,涵盖两年的历史
- 每日自 2026 年 4 月起一直在用
过去,每次更新要花 30 到 60 分钟。现在,一次导入只要 5 到 10 分钟。
按类别看清自己的支出,也帮我省下了钱。
这款应用的代码不公开。视频和截图展示的都是演示模式,它使用示例数据运行。