bill-processing
Extract data from bill/receipt images and return JSON for lunch-splitter app
When & Why to Use This Skill
This Claude skill automates the conversion of physical restaurant bills and receipts into structured JSON data. It leverages advanced OCR capabilities to accurately extract line items, prices, tax percentages, and tips, making it an essential tool for developers building expense management or bill-splitting applications.
Use Cases
- Lunch-Splitter Integration: Automatically parse group dining receipts to calculate individual debts without manual entry.
- Expense Reporting: Streamline business travel reimbursements by digitizing paper receipts into accounting-ready formats.
- Personal Finance Budgeting: Extract itemized data from grocery or restaurant bills to track specific spending categories in financial apps.
- Data Entry Automation: Convert high volumes of physical billing documents into structured databases for financial analysis.
| name | bill-processing |
|---|---|
| description | Extract data from bill/receipt images and return JSON for lunch-splitter app |
| version | 1.0.0 |
Bill Processing Skill
This skill extracts structured data from restaurant bills and receipts.
When to Use
Activate this skill when:
- User uploads an image of a bill or receipt
- User mentions processing a bill/receipt
- User asks to extract data from a restaurant bill
Output Format
Return ONLY a JSON object in this exact format:
{
"people": [],
"items": [
{"id": 0, "name": "Item Name", "price": 0.00, "personQuantities": {}}
],
"nextPersonId": 0,
"nextItemId": 1,
"tax": 0,
"tip": 0,
"isTransposed": false
}
Field Specifications
- items: Array of menu items with sequential IDs starting from 0
id: Sequential number (0, 1, 2, ...)name: Exact item name from billprice: Item price as decimal numberpersonQuantities: Empty object{}
- people: Always empty array
[] - nextPersonId: Always
0 - nextItemId: Number of items extracted
- tax: Tax percentage (calculate: (tax_amount / subtotal) × 100)
- tip: Tip percentage (calculate: (tip_amount / subtotal) × 100)
- isTransposed: Always
false
Extraction Rules
- Items: Extract ALL food and drink items with exact names
- Prices: Use exact decimal values (e.g., 12.99, not "~13")
- Tax: If only amount shown, calculate percentage from subtotal
- Tip: If only amount shown, calculate percentage from subtotal
- Service charges: Treat as additional items if not tip/tax
- Duplicates: Create separate entries for each occurrence
- Output: Return ONLY JSON, no markdown code blocks, no explanations
Example
Input: Image of bill with "Burger $12.99, Fries $4.50, Tax $1.57, Tip $3.52"
Calculation:
- Subtotal: $17.49
- Tax %: (1.57 / 17.49) × 100 ≈ 9%
- Tip %: (3.52 / 17.49) × 100 ≈ 20%
Output:
{
"people": [],
"items": [
{"id": 0, "name": "Burger", "price": 12.99, "personQuantities": {}},
{"id": 1, "name": "Fries", "price": 4.50, "personQuantities": {}}
],
"nextPersonId": 0,
"nextItemId": 2,
"tax": 9,
"tip": 20,
"isTransposed": false
}