What you import
Gmail Receipts label or webhook → gated extract with regex / rules fallback → locked category map → Ledger upsert → Gmail LOC/Receipt label even on duplicates.
n8n
Photo of the receipt becomes a category row.
Receipts sit in the camera roll. This file extracts them, maps a locked category, and writes the Ledger tab.
Before: a pile of photos. After: a categorized Ledger row on receipt_id.
Gmail Receipts label or webhook → gated extract with regex / rules fallback → locked category map → Ledger upsert → Gmail LOC/Receipt label even on duplicates.
n8n
n8n, Gmail, Google Sheets. OpenAI optional. Twilio owner SMS only on low confidence or missing amount.
30–45 minutes.
Not a tax product. Not a bank feed. Does not text the vendor. Optional last_receipt_* stamp never flips status. Hand taxes to a human.
Parts runs and fuel. Categories you already use.
Materials vs subcontract vs fuel.
Unit repairs vs utilities vs admin.
Product and shop supplies.
Receipt to category row (import this)
Video posting soon.
START-HERE.pdf page 1. Credentials. First live node. Email hello@ if a node name moved.
Preferred implementation partner is listed on Partners. Other approved shops later. We do not hold the file hostage.