/install receipt-auditor
Receipt & Expense Auditor
Overview
The Receipt & Expense Auditor turns raw bill and receipt text into organized, categorized expense reports. It supports three modes:
| Mode | Description |
|---|---|
| 📋 Report | Categorize expenses and generate a ready-to-submit reimbursement report |
| 🔪 AA Split | Calculate per-person payment splits for group dining, travel, or shared expenses |
| 🔍 Audit | Detect duplicate charges, suspicious entries, and amount anomalies |
Who Is This For?
| User | Pain Point | This Skill Solves |
|---|---|---|
| Office worker | Monthly expense report pileup | Categorizes everything instantly |
| Freelancer | No accounting tools | Generates clean expense reports in seconds |
| Group diners | Splitting bills is awkward | Fair AA split with per-person breakdown |
| Credit card user | Suspicious charges | Detects duplicates and unusual amounts |
| Family finance | Tracking monthly spending | Summarizes by category for budgeting |
Workflow (7 Steps)
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ 1. │ │ 2. │ │ 3. │ │ 4. │ │ 5. │ │ 6. │ │ 7. │
│ Input │ → │ Extract │ → │ Classify │ → │ Anomaly │ → │ AA Split │ → │ Report │ → │ Summary │
│ Reading │ │ Info │ │ │ │ Detection│ │ │ │ Generate │ │ Report │
└──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘
Step 1: Input Reading
- Accept pasted bill text, file path, or JSON config
- Support multiple input formats: plain text lines, structured JSON
Step 2: Information Extraction
- Parse each line to extract: date, merchant name, amount, quantity
- Recognize common patterns: "6/1 北京-上海高铁 553元", "380元x2晚"
Step 3: Intelligent Classification
- Match merchant/description against category keywords
- Categories: Transportation, Accommodation, Food & Beverage, Office, Healthcare, Entertainment, Shopping, Communication, Other
Step 4: Anomaly Detection
- Duplicate detection: Same date + same merchant + same amount
- Amount check: Entries significantly higher than expected range
- Missing info: Lines missing date, amount, or description
Step 5: AA Split Calculation (AA Mode Only)
- Separate shared items from personal items
- Shared amount ÷ people count = per-person share
- Per-person total = personal items + shared share
- Cross-verify total matches original bill
Step 6: Report Generation
- Output formatted expense report table (Markdown)
- Category summary with counts and totals
Step 7: Summary Report
- Monthly/yearly spending overview
- Per-category breakdown with percentages
Sample Prompts (with Expected Output)
Sample 1: Business Trip Reimbursement — Report Mode
Prompt:
Mode: report
Items:
6/1 北京-上海高铁 553元
6/1 上海汉庭酒店 380元x2晚
6/2 客户午餐 268元
6/2 上海-北京机票 820元
6/2 机场打车 156元
Expected Output:
=== 差旅报销单 ===
| 日期 | 类别 | 金额 | 备注 |
|--------|--------|--------|---------------------|
| 6/1 | 交通 | 553 | 北京-上海高铁 |
| 6/1 | 住宿 | 760 | 上海汉庭酒店2晚 |
| 6/2 | 餐饮 | 268 | 客户午餐 |
| 6/2 | 交通 | 820 | 上海-北京机票 |
| 6/2 | 交通 | 156 | 机场打车 |
| **合计** | | **2557** | |
=== 类别汇总 ===
交通:2笔 — 1529元
住宿:1笔 — 760元
餐饮:1笔 — 268元
异常提醒:无
可报销金额:2557 元
Sample 2: Group Dining AA — AA Split Mode
Prompt:
Mode: aa-split
Config:
Restaurant: 海底捞
Total: 468元
People: 4 (张三, 李四, 王五, 赵六)
Personal orders:
- 张三: 毛肚 68元
- 李四: 虾滑 58元
- 王五: 饮料 18元
- 赵六: 牛肉 88元
Shared: 锅底+蔬菜+主食 236元
Expected Output:
=== AA 分摊结果 ===
公共部分:锅底+蔬菜+主食 = 236元
公共人均:236 ÷ 4 = 59元
| 人员 | 个人点单 | 公共分摊 | 应付 |
|------|----------|----------|---------|
| 张三 | 68 | 59 | 127 元 |
| 李四 | 58 | 59 | 117 元 |
| 王五 | 18 | 59 | 77 元 |
| 赵六 | 88 | 59 | 147 元 |
合计验证:127+117+77+147 = 468元 ✅
Sample 3: Credit Card Anomaly Detection — Audit Mode
Prompt:
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:
=== 账单核对报告 ===
| 日期 | 商家 | 金额 | 状态 |
|--------|--------|--------|------------|
| 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 元
Sample 4: Monthly Expense Summary — Report Mode
Prompt:
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:
=== 月度支出报告(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 元
Sample 5: Freelancer Invoice Collection — Report Mode
Prompt:
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:
=== 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
Real-World Task Examples
Task 1: Sales Rep Monthly Reimbursement
Scenario: A sales representative needs to submit a monthly expense report for travel and client entertainment.
Input:
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:
- Mode set to "report" — input is raw bill lines
- Each line is parsed for date, merchant, amount, quantity
- Items classified: 高铁→交通, 酒店→住宿, 打车→交通, 晚餐→餐饮, etc.
- Duplicate check: no duplicates found
- Report generated with category summaries
Expected Output:
=== 差旅报销单 ===
| 日期 | 类别 | 金额 | 备注 |
|--------|--------|--------|-------------------------|
| 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元
Task 2: 8-Person Dinner Party AA
Scenario: 8 friends went to a Chinese restaurant. 3 people brought their own wine. Need to calculate a fair split.
Input:
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:
- Separate personal orders from shared items
- Note: 大伟 and 老林 brought their own wine — their share of "饮料" should be excluded (or adjusted)
- Calculate shared total: 288+56+128+18 = 490元
- Adjust: 2 people (自带红酒) don't share 饮料 128元 → shared-饮料 = 362元 ÷ 8 + 128÷6
- Or simpler: total shared = 490, divide evenly unless specified
- Per-person = personal + shared share
Expected Output:
=== 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.
Task 3: Monthly Family Budget Review
Scenario: A family wants to review June spending across all categories and identify areas to cut back.
Input:
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:
- All 19 items classified by category
- Generate category breakdown with percentages
- Detect spending patterns and provide suggestions
Expected Output:
=== 家庭支出报告(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元
📌 无异常重复消费记录 ✅
First-Success Path (30 Seconds)
# ──────────────────────────────────────────────────
# 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\
6/1 超市 128.50'
# Step 4 (5s): Copy the formatted report to your reimbursement system!
Quick-start for AI Assistants
Process the following expenses and generate a categorized report:
{mode: report, items: "6/1 北京-上海高铁 553元\
6/1 酒店 380元x2晚"}
Include: date, category, amount, description, category summary, total, and anomaly warnings.
Verification Checklist
After running the skill, confirm:
- Mode matches the intended use case
- All line items parsed correctly (date, merchant, amount)
- Categories assigned correctly (verify 2-3 items manually)
- Total calculation is accurate
- Anomalies flagged (if any) are legitimate
- AA split totals verify against original amount
- Output is formatted as a clean Markdown table
Error Handling
| Issue | Resolution |
|---|---|
| Item missing date | Flag as "missing info" and still process |
| Amount format unclear | Flag as "amount unclear — verify manually" |
| Negative amount | Mark as refund/credit, separate from expenses |
| AA split totals don't match | Warn user: "Total mismatch by X元 — adjust manually" |
| Unrecognized category | Default to "Other" and log for user review |
| Empty input | Return: "No items to process — please provide bill text" |
Key Differentiators
- Semantic classification: Understands Chinese merchant names and descriptions, not just keywords
- Three specialized modes: Report (reimbursement), AA Split (social), Audit (security) in one skill
- Smart anomaly detection: Catches duplicates, unusual amounts, and missing info automatically
- Ready-to-submit output: Markdown tables formatted for corporate reimbursement systems
- AA logic: Handles complex scenarios (shared items, personal items, exclusions like "brought own wine")
- Privacy-first: No data storage — process and forget
License
MIT-0 — No attribution required.
Changelog
- v1.0.0 (2026-06-15): Initial release — three-mode expense auditor with intelligent classification, anomaly detection, and AA split calculation.
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install receipt-auditor - 安装完成后,直接呼叫该 Skill 的名称或使用
/receipt-auditor触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Receipt Auditor 是什么?
Extract, categorize, and audit receipts and bills to generate expense reports and spot discrepancies. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 33 次。
如何安装 Receipt Auditor?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install receipt-auditor」即可一键安装,无需额外配置。
Receipt Auditor 是免费的吗?
是的,Receipt Auditor 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Receipt Auditor 支持哪些平台?
Receipt Auditor 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Receipt Auditor?
由 haidong(@harrylabsj)开发并维护,当前版本 v1.0.0。