The Receipt & Expense Auditor turns raw bill and receipt text into organized, categorized expense reports. It supports three modes:
ModeDescription📋 ReportCategorize expenses and generate a ready-to-submit reimbursement report🔪 AA SplitCalculate per-person payment splits for group dining, travel, or shared expenses🔍 AuditDetect duplicate charges, suspicious entries, and amount anomalies
UserPain PointThis Skill SolvesOffice workerMonthly expense report pileupCategorizes everything instantlyFreelancerNo accounting toolsGenerates clean expense reports in secondsGroup dinersSplitting bills is awkwardFair AA split with per-person breakdownCredit card userSuspicious chargesDetects duplicates and unusual amountsFamily financeTracking monthly spendingSummarizes by category for budgeting
text
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ 1. │ │ 2. │ │ 3. │ │ 4. │ │ 5. │ │ 6. │ │ 7. │
│ Input │ → │ Extract │ → │ Classify │ → │ Anomaly │ → │ AA Split │ → │ Report │ → │ Summary │
│ Reading │ │ Info │ │ │ │ Detection│ │ │ │ Generate │ │ Report │
└──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘
Prompt:
text
Mode: report
Items:
6/1 北京-上海高铁 553元
6/1 上海汉庭酒店 380元x2晚
6/2 客户午餐 268元
6/2 上海-北京机票 820元
6/2 机场打车 156元
Expected Output:
text
=== 差旅报销单 ===
| 日期 | 类别 | 金额 | 备注 |
|--------|--------|--------|---------------------|
| 6/1 | 交通 | 553 | 北京-上海高铁 |
| 6/1 | 住宿 | 760 | 上海汉庭酒店2晚 |
| 6/2 | 餐饮 | 268 | 客户午餐 |
| 6/2 | 交通 | 820 | 上海-北京机票 |
| 6/2 | 交通 | 156 | 机场打车 |
| **合计** | | **2557** | |
=== 类别汇总 ===
交通:2笔 — 1529元
住宿:1笔 — 760元
餐饮:1笔 — 268元
异常提醒:无
可报销金额:2557 元
Prompt:
text
Mode: aa-split
Config:
Restaurant: 海底捞
Total: 468元
People: 4 (张三, 李四, 王五, 赵六)
Personal orders:
- 张三: 毛肚 68元
- 李四: 虾滑 58元
- 王五: 饮料 18元
- 赵六: 牛肉 88元
Shared: 锅底+蔬菜+主食 236元
Expected Output:
text
=== AA 分摊结果 ===
公共部分:锅底+蔬菜+主食 = 236元
公共人均:236 ÷ 4 = 59元
| 人员 | 个人点单 | 公共分摊 | 应付 |
|------|----------|----------|---------|
| 张三 | 68 | 59 | 127 元 |
| 李四 | 58 | 59 | 117 元 |
| 王五 | 18 | 59 | 77 元 |
| 赵六 | 88 | 59 | 147 元 |
合计验证:127+117+77+147 = 468元 ✅
Prompt:
text
Mode: audit
Items:
6/1 超市 128.50
6/1 超市 128.50
6/2 咖啡店 35.00
6/3 健身房 299.00
6/3 健身房 299.00
6/5 加油站 420.00
Expected Output:
text
=== 账单核对报告 ===
| 日期 | 商家 | 金额 | 状态 |
|--------|--------|--------|------------|
| 6/1 | 超市 | 128.50 | ⚠️ 重复消费 |
| 6/1 | 超市 | 128.50 | ⚠️ 重复消费 |
| 6/2 | 咖啡店 | 35.00 | ✅ 正常 |
| 6/3 | 健身房 | 299.00 | ⚠️ 重复消费 |
| 6/3 | 健身房 | 299.00 | ⚠️ 重复消费 |
| 6/5 | 加油站 | 420.00 | ✅ 正常 |
=== 异常提醒 ===
1. 6/1 超市 128.50元 — 疑似重复消费(同一日期同一商家)
2. 6/3 健身房 299.00元 — 疑似重复消费(同一日期同一商家)
建议:请核实是否为扣款两次或输入重复。
本月总支出:1310.00 元
Prompt:
text
Mode: report
Items:
6/3 盒马生鲜 326.50
6/5 中国石化加油 420.00
6/7 美团外卖 45.00
6/10 星巴克 36.00
6/12 滴滴打车 28.00
6/15 淘宝 - 办公室用品 128.00
6/18 电影票 120.00
6/20 海底捞 368.00
6/25 手机话费充值 100.00
6/28 京东 - 书籍 236.00
Expected Output:
text
=== 月度支出报告(6月)===
| 日期 | 类别 | 金额 | 备注 |
|--------|--------|--------|---------------------|
| 6/3 | 餐饮 | 326.50 | 盒马生鲜 |
| 6/5 | 交通 | 420.00 | 中国石化加油 |
| 6/7 | 餐饮 | 45.00 | 美团外卖 |
| 6/10 | 餐饮 | 36.00 | 星巴克 |
| 6/12 | 交通 | 28.00 | 滴滴打车 |
| 6/15 | 办公 | 128.00 | 淘宝办公室用品 |
| 6/18 | 娱乐 | 120.00 | 电影票 |
| 6/20 | 餐饮 | 368.00 | 海底捞 |
| 6/25 | 通讯 | 100.00 | 手机话费充值 |
| 6/28 | 办公 | 236.00 | 京东书籍 |
=== 类别汇总 ===
餐饮:4笔 — 775.50 (44.7%)
交通:2笔 — 448.00 (25.8%)
办公:2笔 — 364.00 (21.0%)
娱乐:1笔 — 120.00 (6.9%)
通讯:1笔 — 100.00 (5.8%)
本月总支出:1,807.50 元
Prompt:
text
Mode: report
Currency: USD
Items:
5/1 Adobe Creative Cloud 52.99
5/3 WeWork Coworking 350.00
5/5 Google Cloud Hosting 89.50
5/10 LinkedIn Premium 29.99
5/15 Notion Team Plan 18.00
5/20 Zoom Pro 14.99
5/25 Figma Professional 12.00
Expected Output:
text
=== Expense Report (May) ===
| Date | Category | Amount | Description |
|---------|----------------|--------|----------------------------|
| 5/1 | Office | 52.99 | Adobe Creative Cloud |
| 5/3 | Office | 350.00 | WeWork Coworking |
| 5/5 | Office | 89.50 | Google Cloud Hosting |
| 5/10 | Communication | 29.99 | LinkedIn Premium |
| 5/15 | Office | 18.00 | Notion Team Plan |
| 5/20 | Communication | 14.99 | Zoom Pro |
| 5/25 | Office | 12.00 | Figma Professional |
| **Total** | | **567.47** | |
=== Category Summary ===
Office: 5 items — $522.49 (92.1%)
Communication: 2 items — $44.98 (7.9%)
Anomaly Warning: None
Scenario: A sales representative needs to submit a monthly expense report for travel and client entertainment.
Input:
text
Items:
6/3 北京-深圳高铁 944元
6/3 深圳万豪酒店 680元x2晚
6/4 客户公司拜访 打车 45元
6/4 客户晚餐 西贝莜面 320元
6/5 深圳-北京机票 1280元
6/6 办公室停车费 60元
6/8 上海客户会议 打车 35元
6/8 上海午宴 856元
6/9 上海-北京高铁 626元
Execution Steps:
Expected Output:
text
=== 差旅报销单 ===
| 日期 | 类别 | 金额 | 备注 |
|--------|--------|--------|-------------------------|
| 6/3 | 交通 | 944 | 北京-深圳高铁 |
| 6/3 | 住宿 | 1360 | 深圳万豪酒店2晚 |
| 6/4 | 交通 | 45 | 客户公司拜访打车 |
| 6/4 | 餐饮 | 320 | 客户晚餐西贝莜面 |
| 6/5 | 交通 | 1280 | 深圳-北京机票 |
| 6/6 | 交通 | 60 | 办公室停车费 |
| 6/8 | 交通 | 35 | 上海客户会议打车 |
| 6/8 | 餐饮 | 856 | 上海午宴 |
| 6/9 | 交通 | 626 | 上海-北京高铁 |
| **合计** | | **5526** | |
=== 类别汇总 ===
交通:5笔 — 2990元
住宿:1笔 — 1360元
餐饮:2笔 — 1176元
异常提醒:无
提示:交通类支出占比较高(54%),可考虑提前购票折扣。
可报销金额:5526元
Scenario: 8 friends went to a Chinese restaurant. 3 people brought their own wine. Need to calculate a fair split.
Input:
text
Restaurant: 花胶鸡火锅
Total: 1286元
People: 8
Personal orders:
- 小明: 毛肚58, 鹅肠48
- 小红: 虾滑52, 蔬菜拼盘38
- 大伟: 自带红酒(免费)
- 小美: 牛肉98
- 阿杰: 蟹柳32, 墨鱼丸28
- 阿丽: 蘑菇拼盘42
- 老林: 自带红酒(免费)
- 小雅: 三文鱼88, 甜虾68
Shared: 锅底288, 调料56, 饮料128, 纸巾18
Wine brought: 3 people (including the two who brought wine, but the third 自带红酒 person is not listed — assume they brought wine)
Execution Steps:
Expected Output:
text
=== AA 分摊结果 ===
餐厅:花胶鸡火锅 | 人数:8人 | 总金额:1286元
公共项目(8人分担):
锅底288 + 调料56 + 饮料128 + 纸巾18 = 490元
公共人均(8人):490 ÷ 8 = 61.25元
注:大伟、老林自带红酒,不参与饮料分摊
修正后公共人均(6人):饮料128÷6=21.33,其余362÷8=45.25 → 饮料部分除外
| 人员 | 个人点单 | 公共分摊 | 应付 |
|------|----------|----------|-------------|
| 小明 | 106 | 61.25 | 167.25 元 |
| 小红 | 90 | 61.25 | 151.25 元 |
| 大伟 | 0 | 50.00 | 50.00 元 |
| 小美 | 98 | 61.25 | 159.25 元 |
| 阿杰 | 60 | 61.25 | 121.25 元 |
| 阿丽 | 42 | 61.25 | 103.25 元 |
| 老林 | 0 | 50.00 | 50.00 元 |
| 小雅 | 156 | 61.25 | 217.25 元 |
合计验证:1019.50 + 大伟老林修正... ❌ 总金额不匹配,请核实。
推荐方案(简化:公共不分饮料):
全部公共(不含饮料)362÷8=45.25
饮料128÷6=21.33
大伟/老林实付=45.25
其他人实付=45.25+21.33+个人点单
修正合计确认:略(由用户最终确认)
Note: In practice, the assistant should handle the complex AA logic and present the simplest correct split.
Scenario: A family wants to review June spending across all categories and identify areas to cut back.
Input:
text
Items:
6/1 永辉超市 385.20
6/2 美团买菜 128.50
6/3 支付宝 - 水电费 312.00
6/5 滴滴打车 42.00
6/5 京东 - 打印机墨盒 89.00
6/7 美团外卖 56.00
6/8 星巴克 38.00
6/10 物美超市 256.80
6/12 顺丰快递 23.00
6/13 中国石化加油 380.00
6/15 海底捞 425.00
6/16 美团买菜 112.30
6/18 联通话费 99.00
6/20 滴滴打车 35.00
6/22 永辉超市 298.50
6/25 京东 - 书籍 156.00
6/27 美团外卖 68.00
6/28 支付宝 - 燃气费 86.00
6/30 物美超市 198.00
Execution Steps:
Expected Output:
text
=== 家庭支出报告(6月)===
| 日期 | 类别 | 金额 | 备注 |
|--------|--------|--------|-------------------|
| 6/1 | 购物 | 385.20 | 永辉超市 |
| 6/2 | 餐饮 | 128.50 | 美团买菜 |
| 6/3 | 其他 | 312.00 | 水电费 |
| 6/5 | 交通 | 42.00 | 滴滴打车 |
| 6/5 | 办公 | 89.00 | 京东打印机墨盒 |
| ... | ... | ... | ... |
| **合计** | | **3188.30** | |
=== 类别汇总 ===
| 类别 | 笔数 | 金额 | 占比 |
|--------|------|----------|------|
| 购物 | 4 | 1,138.50 | 35.7% |
| 餐饮 | 5 | 799.80 | 25.1% |
| 交通 | 3 | 457.00 | 14.3% |
| 其他 | 3 | 497.00 | 15.6% |
| 办公 | 2 | 245.00 | 7.7% |
| 通讯 | 1 | 99.00 | 3.1% |
=== 财务建议 ===
📌 购物类支出占比最高(35.7%),可考虑减少非必需购物
📌 外卖/餐饮频次较高(6次),可增加家中做饭频率
📌 建议设定每月购物预算上限为800元
📌 无异常重复消费记录 ✅
bash
# ──────────────────────────────────────────────────
# 30-SECOND FIRST SUCCESS
# ──────────────────────────────────────────────────
# Step 1 (5s): Run with a few expense lines
receipt-auditor --mode report --items "6/1 北京-上海高铁 553元"
# Step 2 (10s): Read the categorized output
# Step 3 (10s): Add more items or switch modes
receipt-auditor --mode audit --items $'6/1 超市 128.50\n6/1 超市 128.50'
# Step 4 (5s): Copy the formatted report to your reimbursement system!
text
Process the following expenses and generate a categorized report:
{mode: report, items: "6/1 北京-上海高铁 553元\n6/1 酒店 380元x2晚"}
Include: date, category, amount, description, category summary, total, and anomaly warnings.
After running the skill, confirm:
IssueResolutionItem missing dateFlag as "missing info" and still processAmount format unclearFlag as "amount unclear — verify manually"Negative amountMark as refund/credit, separate from expensesAA split totals don't matchWarn user: "Total mismatch by X元 — adjust manually"Unrecognized categoryDefault to "Other" and log for user reviewEmpty inputReturn: "No items to process — please provide bill text"
MIT-0 — No attribution required.