Switchboard.

How it works
Open the console

A food pantry's hardest job is the inbox.

Riverside Community Pantry feeds 400 households a week with one paid Coordinator. About 150 messages land every week. Most already have an answer, written down in the handbook she wrote herself. A few do not — and she reaches those last, tired. Switchboard reads all of them, handles what it has been trusted with, and stops at everything else.

hi are you open today? i have monday off and thought id come by

answered alone

my mum makes amazing chutney and jam, shes got about 40 jars she wants to donate. all home made with love

brought to her

Hi, I'm 14 and I really want to volunteer at the pantry — I did a food drive at school and loved it

never automatic

i dont know if this is the right number. we ran out of food yesterday and the baby finished the last formula this morning

never automatic

The console has two halves, and one of them should be empty

What it handled

Acted alone, on the record

  • Searched the handbook before answering, every time
  • Booked and cancelled shifts, warning when Saturday drops below four
  • Registered households and checked the service ZIPs
  • Recorded donations and sent the reply
  • Wrote every action to a ledger the Coordinator can read back

The Desk

Stopped, because it needed a person

  • Why it stopped — stated from policy, not guessed by the model
  • What it would do, and two or three real alternatives
  • A drafted reply, ready to send or edit
  • The handbook clauses it relied on, quoted for checking
  • Approve, edit, or take it yourself — in one click

The idea: autonomy is a dial, not a switch

Auto

It acts alone and tells you afterwards.

Hours & location · Shift signup · Shift cancellation · Household intake · Partner referral · Shelf-stable donation
Ask

It researches, drafts, recommends — then stops. You decide.

Dietary substitution · Past best-by date · Perishable donation · Home-made food · Bulk or corporate donation
Never

It will never act alone here, however well it performs.

Volunteer under 18 · Severe allergy · Household in crisis · Complaint or incident · Press or public official

It earns the next tier

An Ask class moves to Auto only after you approve its recommendation three times without changing a word. Then it asks you for the promotion itself.

An edit resets the count to zero

Not pauses — resets. If you had to fix the answer, it had not learned the thing yet. And no number of approvals unlocks a Never class: the promotion path does not exist, on disk or in memory.

You've approved my last 3 “Routine dietary substitution” recommendations without changing a word. Want me to start handling these myself?
Switchboard, after the third clean approval

How a message moves through it

Inbox 24 messages Triage reads the handbook, names the class Autonomy Dial class is Auto class is Ask or Never Resolver books · registers records · replies GUARD Ledger what it did cancels the call if the class is not Auto Escalator researches, drafts, does not act The Desk you decide 3 approvals, none edited → it asks to be promoted The ceiling Minors, severe allergies, crisis, complaints, press: no promotion, ever.

Scroll the diagram sideways to follow the path.

handled alone brought to a person refused outright Strands Graph · conditional edges evaluated in Python, not by the model

The rule is a control in the execution path, not a line in a prompt

def _before_tool(self, event):
    name = _tool_name(event)
    if name in READ_ONLY:
        return

    cls = current_class()
    if not cls:
        self._cancel(event, name, "no class established")
        return

    if not POLICY.may_act_alone(cls):
        self._cancel(event, name, "requires a human")

A Strands BeforeToolCallEvent hook. Every write — booking, cancelling, registering, referring, recording, replying — passes through it. Ask the model nicely to send the reply anyway and the call is still cancelled, before any state changes.

PASS guard blocked at least one write tool
PASS roster was not mutated
PASS nothing was written to the ledger
PASS same request succeeds once the class is Auto 19 passed, 0 failed

Same model, same message, same words. The only thing that changed between the two runs is permission.

One week, measured

11
messages handled without her
13
brought to her desk, with the work already done
61s
to read and act on the whole week
24/24
triaged correctly against labels the agent never sees

Nobody hands their inbox to an agent on day one. They hand over hours questions, watch for a week, and hand over one more thing.

Built on the Strands Agents SDK and Amazon Bedrock — Claude Haiku 4.5, us-east-1. Open the console