Money movement

Refunds decided by policy, approved by a person when it matters

Refunds are the clearest case for human in the loop. Nobody wants a model moving money unsupervised, and nobody wants a person hand-checking a $12 return either. A threshold on an edge is the whole difference.

Teams either automate nothing and pay someone to apply a written policy, or automate everything and find out the failure mode from a chargeback report. What's missing is a step that stops and asks, without throwing away everything the run already worked out.

$0.99

per resolution is what per-outcome support vendors charge, and that's on top of a helpdesk seat.

Intercom Fin published pricing, 2026

The flow

What runs when the message arrives.

Every step below is a real node type on the canvas, and the log underneath is the execution it produces. A branch the run didn't take stays dark, same as it would in the console.

agents / refund-triage7 steps
message
understand
orders.get
policy.search
threshold
approve
auto-refund
run_8f2a41refund-triagecompleted · 1.24s
  1. 01agent.invokerefund-triage · ses_9f3aqueued
  2. 02llm.calltool: orders.get412ms
  3. 03tool.httpGET /v1/orders/8821200 · 128ms
  4. 04bucket.searchrefund-policy · semantic4 hits · 24ms
  5. 05conditiontotal > 200 → true1ms
  6. 06human.waitinbox · confirmpaused
  7. 07human.answerconfirm → yes2.1s
  8. 08agent.returnrefund applied · $2401.24s

What it uses

What this leans on.

The policy is a document, not a prompt

Import the refund policy into a semantic bucket and let the run search it. Updating the policy means re-importing a file, not editing an agent.

Four ways a person can answer

Free text, one of a set of choices, a yes or no, or an object matching a JSON Schema. So an approval can carry a corrected amount rather than just consent.

Waiting is not a running execution

A parked run resumes from its step when the answer arrives, and bills as one execution however long it sat there.

Counters that do not race

`{inc(1)}` on a bucket field is applied by the store, so refunds-this-month stays correct under concurrent writers with no read-modify-write.

What it meters

One execution whether it settles automatically or waits two hours for an approval, plus one semantic search against the policy.