Receipt Auditor

Other

Extract, categorize, and audit receipts and bills to generate expense reports and spot discrepancies.

Install

openclaw skills 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:

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

Who Is This For?

UserPain PointThis Skill Solves
Office workerMonthly expense report pileupCategorizes everything instantly
FreelancerNo accounting toolsGenerates clean expense reports in seconds
Group dinersSplitting bills is awkwardFair AA split with per-person breakdown
Credit card userSuspicious chargesDetects duplicates and unusual amounts
Family financeTracking monthly spendingSummarizes 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:

  1. Mode set to "report" — input is raw bill lines
  2. Each line is parsed for date, merchant, amount, quantity
  3. Items classified: 高铁→交通, 酒店→住宿, 打车→交通, 晚餐→餐饮, etc.
  4. Duplicate check: no duplicates found
  5. 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:

  1. Separate personal orders from shared items
  2. Note: 大伟 and 老林 brought their own wine — their share of "饮料" should be excluded (or adjusted)
  3. Calculate shared total: 288+56+128+18 = 490元
  4. Adjust: 2 people (自带红酒) don't share 饮料 128元 → shared-饮料 = 362元 ÷ 8 + 128÷6
  5. Or simpler: total shared = 490, divide evenly unless specified
  6. 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:

  1. All 19 items classified by category
  2. Generate category breakdown with percentages
  3. 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\n6/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元\n6/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

IssueResolution
Item missing dateFlag as "missing info" and still process
Amount format unclearFlag as "amount unclear — verify manually"
Negative amountMark as refund/credit, separate from expenses
AA split totals don't matchWarn user: "Total mismatch by X元 — adjust manually"
Unrecognized categoryDefault to "Other" and log for user review
Empty inputReturn: "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.