Fourteen n8n workflows, one Google Sheet, Claude for the writing and reading, Gmail for the mail, and a small Cloudflare Worker in front that serves the static pages and keeps crawlers away from the run budget. Nothing else.
Opening a case, an answer, a decision, a reforecast, a document read, a chat question, and a page that has to be rendered for one person. Static pages, cached pages and the snapshots cost nothing, so a hundred visitors reading the home page cost n8n nothing at all.
Every person gets one link with their own key; there is no login. The key decides what the page shows: the owner sees everything on their case, each stakeholder sees what the owner allowed, a reader with no key sees the case and the verdict. The sheet is the only store, so FP&A can always open it and see every row.
Each canvas below is drawn from the workflow itself: the same nodes, in the same places, with the same connections. Teal marks the trigger, ember the Claude step. Together: 121 nodes and about 1200 lines of JavaScript in the Code nodes, where the rules live. The long ones scroll sideways.
The form a budget owner fills in. The Worker serves a static copy, so a visit costs no run; this workflow is the source of the page.
Checks the form, counts the rows already in the sheet, lets Claude write the case and a plain-English request for each person, saves the rows, emails the requests, saves which emails went out and answers with the links.
Reads the sheet and renders the case page for whoever holds the link: the owner, one of the people asked, or a reader with no key, who sees the case and the verdict only.
Takes an answer from a personal link, checks it, lets Claude write it clearly, and files it under the right case and person.
Records the owner's decision, after checking that the link really is the owner's.
Every Monday: reads every cost line, lists the cancel-by dates in the next three weeks and the money signed before a decision, and emails FP&A.
On the second of each month: opens the reforecast round, makes a personal link for every budget owner and emails FP&A.
The round roll-up for FP&A, or an owner's own form when the link carries their key.
Takes an owner's new forecast and the reason, lets Claude write the reason clearly, and saves it.
Every morning: compares results with forecasts, sets the provisional verdict at 30 days and the final one at 90, and sends the digest to FP&A.
In the first week of each quarter: computes the quarter pack, lets Claude draft the memo, waits for FP&A's approval by email, then files it.
Takes a proposed change to a metric definition, lets Claude write it clearly, files it and tells FP&A.
Reads a supplier quote or an email thread (PDF or text) and fills the cost line: supplier, amount, terms, cancel-by date. The document itself is kept at the edge, not in n8n.
The three views. A budget owner sees their cases, a stakeholder sees what is waiting for them, FP&A sees everything and where the gaps are.
A chat workflow answers questions about the budget from a context file built from the sheet (Ask the budget), and two housekeeping workflows: one loads the invented year into the sheet, one sends an email when any workflow fails.
The money side of a verdict rests on a few values that are set by hand in this demo: the price of each plan, the months a subscriber stays, the share of enterprise pipeline that closes, the years of margin a contract brings, and the 30 and 90 day windows. In production each of them is wired to the actual value and refreshed, not typed in. The rules themselves (the band of plus or minus 15 percent, the provisional and final verdicts, who sees what) are decisions, and they are written down in the Code nodes where anyone can read them. The research behind them is on the studies page.