bill-processing

majiayu000's avatarfrom majiayu000

Extract data from bill/receipt images and return JSON for lunch-splitter app

0stars🔀0forks📁View on GitHub🕐Updated Jan 5, 2026

When & Why to Use This Skill

This Claude skill automates the extraction of structured data from restaurant bills and receipts using advanced OCR and vision processing. It converts unstructured images into a precise JSON format, capturing itemized names, individual prices, and automatically calculating tax and tip percentages to streamline financial data entry and expense management.

Use Cases

  • Bill Splitting Applications: Automatically parsing group dining receipts to calculate individual shares and totals for lunch-splitter apps.
  • Expense Reporting: Digitizing physical restaurant receipts for corporate reimbursement workflows and accounting software integration.
  • Personal Finance Management: Converting paper receipts into structured data for budget tracking and spending analysis.
  • Tax Preparation: Extracting and categorizing tax and tip information from dining invoices for financial record-keeping.
namebill-processing
descriptionExtract data from bill/receipt images and return JSON for lunch-splitter app
version1.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 bill
    • price: Item price as decimal number
    • personQuantities: 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

  1. Items: Extract ALL food and drink items with exact names
  2. Prices: Use exact decimal values (e.g., 12.99, not "~13")
  3. Tax: If only amount shown, calculate percentage from subtotal
  4. Tip: If only amount shown, calculate percentage from subtotal
  5. Service charges: Treat as additional items if not tip/tax
  6. Duplicates: Create separate entries for each occurrence
  7. 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
}
bill-processing – AI Agent Skills | Claude Skills