See llms.txt for all machine-readable content.
This workflow logs Gmail receipt attachments to Google Sheets by extracting structured fields with OpenAI (including category selection from your list), prevents duplicates by checking the ledger, and sends a monthly spending summary email via Gmail based on last month’s rows.
has:attachment subject:receipt arrives or when a schedule runs on the 1st of the month at 8am.receipt_date, merchant, amount, currency, and a category chosen only from your predefined category list.gpt-4o-mini).processed_at, gmail_message_id, receipt_date, merchant, amount, currency, category, source_subject so the lookup and append operations map correctly.⚠️ Known issues in this version (honest notes — fixes in preparation)
After selecting your own spreadsheet in the three Google Sheets nodes (as the setup note asks), n8n can silently clear those nodes' column mappings. Receipts then land as empty rows or the append fails — and because the Gmail trigger doesn't re-deliver, that receipt will never be recorded (AI extraction still runs and is billed). After selecting your sheet, re-open each Sheets node, confirm the column mapping is intact, and send yourself one test receipt before trusting it.
In timezones west of UTC (the Americas), receipts dated the 1st of a month can drop out of that month's summary, and the 1st of the following month can be included by mistake.
Only PDF and image attachments are processed — other formats (e.g., iPhone HEIC) are silently ignored. Convert to JPEG/PDF first.
The summary email retries on failure and can, rarely, arrive twice (it only goes to you).