A twenty-node n8n workflow for logging personal spending. Photograph a receipt and a vision model extracts the store, total, items and date; type a sentence and an agent files it as an expense; send the report command and a second agent queries the sheet and answers in prose. Everything lands in Google Sheets — there is no application server and no database.
The friction in tracking spending is not the arithmetic, it is the typing. This removes it: the input is a photo taken at the till, and the interface is a chat app that is already open.
A switch at the front of the workflow reads the incoming message and picks one of three paths — a photo, the report command, or free text. Each ends in the same spreadsheet, so there is one place the data lives regardless of how it arrived.
Receipt images are sent to the vision model with a prompt that specifies the exact four-line output format, gives a filled-in example, and defines a single error line for an unreadable receipt. The response is then read positionally.
That is the trade being made deliberately: a rigid prompt and a dumb parser, rather than a loose prompt and a parser that has to interpret prose. When the model cannot read a receipt it says so in the one shape the workflow expects, which is a far better failure than a confident wrong total appearing in the spreadsheet.
The two conversational paths work the other way round — they get an agent with the spreadsheet attached as a tool, because "how much did I spend on groceries last week" is a question, not a form.