Recipes / Claude Code use cases
Claude CodeFull setupEmail & inbox

Slack Approve/Cancel gate for Claude Code back-office bots

A non-developer runs 17 small back-office bots for a mid-sized B2B team with Claude Code and plain Python. Every email, statement or reward hits a Slack card with Approve and Cancel first. Cancel caught three real mistakes, including a statement bot that added a delivery fee once per line instead of once per order.

From u/botsinproduction (r/SideProject) on Reddit · Nov 2026

Setup timeNot stated; he has been building the 17 bots since 2025
Cost$100/month (one Claude Max subscription, zero API spend), on one Mac that isn't allowed to sleep
RunsBefore any outbound email, statement or reward leaves the back office
NeedsClaude Code (he uses one Claude Max subscription), Plain Python for bots that only read a DB and fill templates, Slack with Block Kit approve/cancel cards, One Mac left awake for night jobs, Your support mailbox to cc when needed
Last updated2026-11-06

What the source did

  • He's not a developer. He runs the back office for a mid-sized B2B team.
  • Since 2025 he has built 17 small bots with Claude Code for jobs nobody wanted: logging complaints from support chats, emailing monthly statements, watching other bots for errors, and night jobs.
  • Cost he states: "$100/month (one Claude Max subscription, zero API spend)" on one Mac that isn't allowed to sleep.
  • Fourteen of the 17 never call a model — plain Python reading a database and filling templates.
  • Nothing goes out without a human click. Every email, statement or reward is a Slack card first, showing who it's going to, three numbers to sanity-check, and Approve / Cancel.
  • Cancel caught three real mistakes. The best one: a statement bot added a delivery fee once per line instead of once per order, so a customer with ten lines got ten delivery fees; the total looked wrong, he hit Cancel, and the same bug showed up in a dashboard.
  • Lessons he lists: start on a subscription, not the API; don't buy a server (use a laptop with sleep off); log what humans correct and turn those into rules, not model upgrades; put alerts in a single person's DM (an alerts channel became wallpaper).
  • His blog (Oct 21, 2026, byline OI): Block Kit card with a headline, label/value fields, Approve/Cancel; job id in the button value; recipient on the card; only the numbers humans need, not a full spreadsheet; errors to one person's DM, not the approval channel; a cc to the support mailbox fixed in code.
  • He also posted a Reddit mirror of the same story; we read it via Arctic Shift after live Reddit returned 403.
  • Heads-up: no importable workflow. Our version follows the steps he and the blog describe.
“the most important part is a Cancel button”— u/botsinproduction (r/SideProject), Reddit

Summary written by Agent Cookbook from the original post. See the original for the full context. How we source recipes

Our notes

What it takes
Claude Code (one Claude Max subscription in his setup), plain Python for template bots, Slack Block Kit cards, and one Mac left awake. His blog shows the card shape; there is no importable workflow.
Where it breaks
Shipping without Cancel, alerts in a channel nobody reads, and starting on metered API spend. The $100/mo figure is his Claude Max cost, not a savings claim. Reddit score was ~0 when verified.
Human checkpoint
Nothing emails a customer, sends a statement or issues a reward without an Approve click. Cancel stops the send.
Tools involved
Claude Code (he uses one Claude Max subscription), Plain Python for bots that only read a DB and fill templates, Slack with Block Kit approve/cancel cards, One Mac left awake for night jobs, Your support mailbox to cc when needed

✓ Verified Source link checked and still live. Notes by Thomas, editor. How we verify

Read their guide

Made and published by u/botsinproduction. Start here; it is their original, not ours.

Our adapted version

Ours Our version, based on what u/botsinproduction described and their blog. They shared no importable workflow. Fill in the [BRACKETS].

Set up a Slack Approve/Cancel gate in front of every outbound back-office message. Draft cards only until I click Approve. RULES - Nothing emails a customer, sends a statement or issues a reward without my Approve click on that card. - Cancel is always available and must stop the send. - Prefer plain scripts that read our DB and fill templates. Keep model-calling bots few. - Log every correction I make on a card and turn it into a rule, not a bigger model. - Sending, buying, posting, deleting, paying and cancelling always need my yes. SLACK CARD (before each outbound email / statement / reward) - Headline: what this send is. - Who it's going to (full recipient on the card). - Three numbers I can sanity-check (not a full spreadsheet). - Buttons: Approve and Cancel, with the job id in the button value. - On Cancel: do not send; leave a note I can find later. - On Approve: send only that one job. OPS - Run night jobs on one Mac with sleep turned off. Don't buy a server for this. - Start on one Claude Max (or similar) subscription, not metered API spend, until you know the load. - Send bot errors to my DM, not the approval channel. - If support needs a copy, cc the support mailbox in code — don't ask the model to remember.

Approval rule

🛡
Nothing goes out without a human click on Approve. Cancel is a first-class path. In our version every outbound email, statement or reward is a Slack card first; sending, buying, posting, deleting, paying and cancelling always need a human.

Set it up

  1. List the outbound jobs: statements, complaint logs, rewards, night watches.
  2. Build the Slack Block Kit card from his blog shape: headline, label/value fields, Approve/Cancel, job id in the button value.
  3. Put every outbound email, statement or reward behind that card. Show the recipient and three checkable numbers.
  4. Keep most bots as plain Python over the database; only use Claude Code where the job needs a model.
  5. Leave one Mac awake for night jobs instead of buying a server.
  6. When you Cancel or edit a card, log the correction and turn it into a rule.
  7. Route errors to one person's DM so the approval channel stays readable.

Common failures

⚠
  • Shipping without a Cancel path. He says Cancel caught three real mistakes, including the per-line delivery fee.
  • An alerts channel nobody reads. He moved errors to a single DM.
  • Starting on metered API spend. He runs on one Claude Max subscription with zero API spend.
  • Asking the model to remember to cc support. He fixed the support mailbox cc in code.
  • Putting a full spreadsheet on the card. The blog keeps only the numbers a human needs to check.

Variations

  • Statements only: gate monthly statement emails first, then add rewards and complaint digests.
  • Dashboard twin: the delivery-fee bug also showed in a dashboard; pair the card with a totals check.
  • Rules log: a sheet of every Cancel reason that feeds the next bot change.

Related setups: Bookkeeping agent you approve → · Grok Bot admin team for a one-person print shop → · Two dozen Grok Bots run an HVAC firm's office → · A family firm's ERP run by Claude Code agents → · Done-when lists and a two-try stop rule → · Grok Bot agents run from GitHub job packs → · Inbox routing for a consulting firm →

Get the 10 best agent setups. Free.

Plus new recipes every week. One email, no spam.

Unsubscribe anytime. Privacy

Related recipes

Same job: Email & inbox

Also uses Slack

More Claude Code recipes

In these guides: More Claude Code use cases → · AI agents for small business →

Get their template ↗