| 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
}