Finance & ops
The monthly numbers, with the workings attached.
#financepublic channel5 tool calls
A monthly routine that pulls the month's invoices and subscriptions, works revenue, new customers and churn in the sandbox, posts the three figures, and attaches the spreadsheet it worked them from so the arithmetic can be checked.
Priya9:00 AM
@attest_tag on the 1st of every month at 9, post last month's revenue, new customers and churn here — and attach the workings
attest_tagApp9:03 AM
- create_routine · 0 9 1 * * Europe/London · as Priya
- http_request · GET api.stripe.com/v1/invoices?status=paid&limit=100 · 68 invoices
- http_request · GET api.stripe.com/v1/subscriptions?limit=100 · 41 active, 3 cancelled
- run_js · revenue, new, churned · 3 figures
- create_artifact · september-2026.xlsx · 3 sheets · pre-approved by routine
September 2026
- Revenue — £128,940 across 68 paid invoices, up 7.4% on August.
- New customers — 6, worth £3,180/mo combined.
- Churn — 3 cancelled, £1,420/mo. Two were failed cards rather than decisions; one gave a reason.
Workings attached: september-2026.xlsx — one sheet per figure, every invoice id listed, so the totals can be checked against the source.
google/gemini-flash34k in1.4k out$0.018Configure
How the turn went
A cron line, arithmetic that runs, and a file that lets anyone disagree with it.
- 01
The month is the window, worked out at run time
On the 1st it takes the previous calendar month in the scope’s timezone. A routine that hardcodes a date range is right once, and quietly wrong every month after.
- 02
Three figures, all worked in the sandbox
Revenue, new customers and churn are computed in code from the fetched records. The alternative — a model reading sixty-eight invoices and reporting a total — is the case where being nearly right is worthless.
- 03
The workings are the point
The spreadsheet lists every invoice id behind every total, so the first person who disagrees with the number can find out why in a minute rather than rebuilding it. Ask for the file and a file is what arrives — it is the same artifact machinery a thread uses.
- 04
A routine's writes run pre-approved
Building the file is a write, and a Confirm card at nine on the 1st is nobody’s to press — so a routine’s writes are pre-approved by default. The person creating it can ask for them held instead, and each run is listed in the console with what it spent.
What it needs
The setup, in the console.
What it will not do
Enforced outside the model.
It cannot change anything in billing to make a figure tie; the key is read-only.
It does not carry a figure forward from last month's run. Every number is fetched again, because a cached total is how a wrong one survives a year.
Try it
Say it in a channel it is in.
The sentence as it was typed. It works in any channel the bot has been invited to that carries the connection above — no command syntax, no form, and follow-ups in the thread need no mention.
@attest_tag on the 1st of every month at 9, post last month's revenue, new customers and churn here — and attach the workings
create_routinehttp_requestrun_jscreate_artifact
More in Finance & ops
The month-end chores, done before the meeting.
- The payout, tied to the invoices in it.#finance · what's in Friday's payout? it's £41,204.18 and I can't make it tie
- The customers about to leave over a card, not a decision.#finance · anyone about to churn on a failed card?
- What is waiting on you, and who is sitting on the rest.#ops · what's waiting on me and what's waiting on someone else?
Bring the channel this would live in.
Sign up, connect the service above in one channel, and type this sentence yourself — or run the same binary on your own infrastructure.