The bench for local operators · Import the week back How checkout works
All packsLeadOnboardingBookingCommsBillingReviewsContentOpsLandlordServiceFull system
Shop Floor Bench · billing / ops

Receipt Categorizer

Photo of the receipt becomes a category row.

The job it closes

The job it closes

Receipts sit in the camera roll. This file extracts them, maps a locked category, and writes the Ledger tab.

Before / after

Before / after

Before: a pile of photos. After: a categorized Ledger row on receipt_id.

01

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

02

What you need

n8n, Gmail, Google Sheets. OpenAI optional. Twilio owner SMS only on low confidence or missing amount.

03

Setup time

30–45 minutes.

Limits — trust before ticket

Limits — trust before ticket

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.

Breakdown

How this pack runs

Receipt to category row (import this)

Video posting soon.

Two paths if you stall

Self-serve

START-HERE.pdf page 1. Credentials. First live node. Email hello@ if a node name moved.

Named install

Preferred implementation partner is listed on Partners. Other approved shops later. We do not hold the file hostage.

Next on this bench