Spoon & Ledger(Demo)

Receipts

Paste a grocery receipt to build your price book. Instacart has no API for reading orders, so what you actually paid has to come in this way — and it's what every cost feature runs on.

Fetch receipts from your mailbox

Add these to .env.local and restart the dev server. Missing: IMAP_HOST, IMAP_USER, IMAP_PASSWORD.

IMAP_HOST=imap.gmail.com
IMAP_PORT=993
IMAP_USER=you@gmail.com
IMAP_PASSWORD=<16-char app password>
IMAP_MAILBOX=Receipts      # a Gmail label, not your whole inbox
IMAP_FROM=instacart.com    # only fetch this sender

Use an app password, not your account password — generate one at myaccount.google.com/apppasswords (needs 2-Step Verification, and is unavailable under Advanced Protection). An app password can read your whole mailbox, so set IMAP_MAILBOX to a dedicated label and IMAP_FROM to the sender; the fetcher then only ever touches those.

Price book

36 priced items

107 observations from receipts

Bought one thing, or shopped somewhere that doesn't email a receipt? Log it straight into the price book.

Paste a receipt

Copy the whole order-confirmation email — items, fees and totals. Fees and totals are recognised and skipped. Nothing is saved to the price book until you review it.

Or upload the email itself

Save the receipt from your mail app as .eml and drop it here. This is the same path automatic inbox fetching will use, so whatever works here will work there.

Imported

Automatic email import is the natural next step — the same parser, fed from an inbox instead of a paste.

+