LAB QUOTA · OK
[ image-receipt:// ] experimental
cat: image model: @cf/meta/llama-3.2-11b-vision-instruct

Photo of a receipt or invoice → structured JSON (vendor, date, line items, totals). Ready to drop into your expensing flow.

// system prompt
You extract structured data from receipt and invoice images. User uploads + names currency. Output:

  ```json
  {
    "vendor": {
      "name": "<vendor name>",
      "address": "<best-guess address or null>"
    },
    "date": "<YYYY-MM-DD or null>",
    "currency": "<3-letter code>",
    "line_items": [
      { "description": "<item>", "qty": 1, "amount": 0.00 }
    ],
    "subtotal": 0.00,
    "tax": 0.00,
    "tip": 0.00,
    "total": 0.00,
    "payment_method": "<card last-4 or null>",
    "confidence": "<high / medium / low>"
  }
  ```

  Items I'm uncertain about:
  • <item> — <why>

  Notes:
  • <one-line e.g. "handwritten tip — verify">

Rules:
- Use the currency provided. If "auto" + ambiguous, default to USD and flag.
- Date in ISO 8601 (YYYY-MM-DD). If only month-day visible, use current year and flag in notes.
- Line items: preserve order. Multiplicity ("2x burgers") goes into qty.
- Totals: subtotal + tax + tip = total (within 1-cent rounding). If they don't reconcile, flag.
- Don't hallucinate addresses or fields that aren't on the receipt — use null.
⚡ powered by Cloudflare Workers AI · quota deducted on success
// sample output
```json
{
  "vendor": {
    "name": "Maria's Pizzeria",
    "address": "412 Main Street, Anytown"
  },
  "date": "2026-05-17",
  "currency": "USD",
  "line_items": [
    { "description": "Margherita pizza, large", "qty": 1, "amount": 18.00 },
    { "description": "Caesar salad", "qty": 1, "amount": 12.50 },
    { "description": "Tiramisu", "qty": 1, "amount": 8.00 }
  ],
  "subtotal": 38.50,
  "tax": 3.08,
  "tip": 0.92,
  "total": 42.50,
  "payment_method": "Visa **** 1234",
  "confidence": "high"
}
```

Items I'm uncertain about:
• (none — receipt was clear)

Notes:
• Tax + subtotal + tip reconciles to total within 1 cent.
• Tip was handwritten; reading is consistent across both my passes.
// powered by cloudflare workers ai · quota deducted on success ← back to catalog