Skip to content
Agents at work · one seeded shift, 24 boxes

Agents at work

4 of 10 specialist roles called a model on the filmed clips; the 24 per-box inspectors are one code path.

The roles that called a model: customer-message-drafter, damage-reader, label-reader, policy-agent. The rest ran as app code (7 of the 10 are written to call a model when one is available). None of them can approve money: a refund needs a person's single-use token.

Loss RMA-20418 · customer-message-drafter: one recorded answer withheld, its customer message called the real camera a toy and said the camera body wasn't seen: false, so it is never shown or sent (a loss).

Loss RMA-20419 · customer-message-drafter: one recorded answer withheld, its customer message said the camera body couldn't be confirmed, from the label reader's BM-CB-55120 misread on a complete kit, so it is never shown or sent (a loss).

[Seeded shift fixture · synthetic]

The shift, replayed: Bench 2

[Seeded shift fixture · synthetic] · replay of the seeded shift, not a live bench · selective dispatch
recorded live Meta output · 2 boxesDETERMINISTIC · app code, no model
Box 1 of 24 · RMA-20418 · step 0 of 7
RMA-20418 · Darius OkoroZoom lens missing (demo return)
7 of 11 roles ran (3 model calls) · 4 skipped · 1 live answer unavailable
  • policy-agent unavailable: live answer unavailable (timeout after 90000 ms); app code stands in
  • label-reader skipped: every serial read is at 0.90 or above and in the kit's format (bar 0.80): the serial matcher checks it as code
  • voice-note-reader skipped: no voice note on this box
  • carrier-claim-agent skipped: no damaged item and no transit evidence (no exception scan, carton not crushed, nothing said)
  • restock-grader skipped: held for a person: grading waits for the decision (no item needs diverting now)
  • ran: inspector-rma-20418, damage-reader, serial-matcher, customer-message-drafter, cost-agent, coordinator
  1. 1 · inspector-rma-20418
    …
  2. 1 · damage-reader
    …
  3. 2 · serial-matcher
    …
  4. 3 · policy-agent
    …
  5. 4 · customer-message-drafter
    …
  6. 4 · cost-agent
    …
  7. 5 · coordinator
    …

The coordinator merges the findings and routes the box once every agent has reported.

AgentKindDoing now (RMA-20418)
label-reader
decides whether each serial label is legible enough to match (≥ 0.80 and in the kit's serial format)
Shift ablation: removing it changes a decision on 1 of 24 seeded boxes
model role, not called on this box (live: muse-spark-1.3)skipped: every serial read is at 0.90 or above and in the kit's format (bar 0.80): the serial matcher checks it as code
damage-reader
reads each item crop for dents, scuffs or an opened sleeve, and the outer carton
Shift ablation: removing it changes a decision on 1 of 24 seeded boxes
recorded live Meta outputmuse-spark-1.3 · 11.0 s · request chatcmpl-01a1a269-0d81-7787-9e4c-87058dd94c8b
queued
voice-note-reader
turns the lead's transcribed note into claims: a claim can raise a hold, never clear one
Shift ablation: removing it changes a decision on 1 of 24 seeded boxes
model role, not called on this box (live: muse-spark-1.3)skipped: no voice note on this box
serial-matcher
matches each serial read against the order record and names the order a stray serial belongs to
Shift ablation: removing it changes a decision on 1 of 24 seeded boxes
codequeued
carrier-claim-agent
drafts a claim against the return carrier when damage and transit evidence meet
Shift ablation: removing it changes a decision on 1 of 24 seeded boxes
model role, not called on this box (live: muse-wonder-1.0)skipped: no damaged item and no transit evidence (no exception scan, carton not crushed, nothing said)
policy-agent
applies the return window and condition clauses and names the governing clauses
Shift ablation: removing it changes a decision on 1 of 24 seeded boxes
live answer unavailableDETERMINISTIC · app code, no modeltimeout after 90000 ms; app code stands in, holds kept
queued
restock-grader
grades each returned item A / B / C and picks its resale channel
Shift ablation: removing it changes no decision, only work a person uses
model role, not called on this box (live: muse-spark-1.3)skipped: held for a person: grading waits for the decision (no item needs diverting now)
customer-message-drafter
drafts the customer's note: what was seen, what wasn't, the clause, and that a hold isn't a denial
Shift ablation: removing it changes no decision, only work a person uses
DETERMINISTIC · app code, no modellive: muse-wonder-1.0
queued
cost-agent
prices the inspection (estimated live model cost) and the fees a return costs the merchant
Shift ablation: removing it changes no decision, only the fees line
codequeued
coordinator
fans each return out to the fleet, merges most-restrictive-first, prices the settlement and routes it to a person
Shift ablation: removing it changes a decision on 24 of 24 seeded boxes
codequeued
Inspector · one code path, run once per box (24 runs in the shift)
inspector-rma-20418
counts what settles in the tray for RMA-20418 and reconciles it with the packing slip
Shift ablation: removing it changes a decision on 24 of 24 seeded boxes
codequeued
The other 23 inspector names are the same code path on the other boxes, not separate agents.
27 code · 7 model roles · 34 names in the shift (the per-box inspectors are one code path) (recorded live Meta output on 2 boxes, app code elsewhere)
Role cost at Meta list price (an estimate; this replay called no model and spent $0)
RolePer runRuns in the shiftShift (est. live)
label-reader$0.00501$0.0050
damage-reader$0.009624$0.2310
voice-note-reader$0.00283$0.0083
serial-matcherapp code24$0
carrier-claim-agent$0.02402$0.0480
policy-agent$0.02406$0.1440
restock-grader$0.007319$0.1392
customer-message-drafter$0.02206$0.1320
cost-agentapp code24$0
coordinatorapp code24$0
inspector (one code path)app code24$0
Whole shift, if every dispatched model role ran live$0.7075
Costs are what a live run would cost at Meta list price (token budgets in lib/fleet/agents). This replay called no model and spent $0.

Over the seeded shift

[Seeded shift fixture · synthetic] · counts computed by the tray counter; a person decides every refund
6/24
boxes held for a person
$6,351
proposed of $8,160 requested (a proposal; a person decides)
1
carrier claims drafted ($199), a person files them
18
boxes not held; each still waits for a person's approval
Selective dispatch vs running every agent on every box (estimates on the seeded shift)

Selective dispatch vs running every agent on every box

[Seeded shift fixture · synthetic] · cost and latency are estimates

An optional specialist runs on a box only when that box's evidence calls for it: the voice-note reader when there is a note, the carrier-claim agent when there is damage or transit evidence, the label reader when a serial read is close to the bar, the policy agent near the window or on a hold, the restock grader on a complete box or an item to divert now, the drafter when there is a hold to explain. Counting, serial matching, the damage read, the arithmetic and the merge run on every box. Always-run is the reference.

Over the shiftSelectiveAlways
Model calls a live run would make61168
Role runs skipped (all were model calls)1070
Estimated live model cost, whole shift$0.705$2.271
Model time, every call added up1111 s3529 s
Latency per box (critical path)43.4 s106.5 s
Boxes held for a person6 of 247 of 24
Proposed refunds (a person decides)$6,351$6,011
Carrier claims drafted1 ($199)1 ($199)
  • Findings always-run made that selective missed: 1 holds · 0 claims · 17 drafts
  • Holds selective added that always-run doesn't have: 0
What selective missed: 1 hold(s), 17 draft(s), incl. restock grades on 5 held boxes
  • RMA-20419: camera_body · label_unreadable; customer note differs (always-run: customer-message-drafter; selective: app-code note for a complete box (no drafter run)); Re-scan the camera body label under the bench light; policy-agent: live answer unavailable (timeout after 90000 ms); the app-code result stands in, check it before acting
  • RMA-20418: camera body B → Open-box listing; battery B → Open-box listing
  • RMA-30107: camera body C → Refurbish or parts; lens B → Open-box listing; battery B → Open-box listing
  • RMA-30110: camera body B → Open-box listing; lens B → Open-box listing; battery B → Open-box listing
  • RMA-30113: camera body B → Open-box listing; lens B → Open-box listing; battery B → Open-box listing
  • RMA-30116: camera body B → Open-box listing; lens B → Open-box listing; battery B → Open-box listing

The restock grader waits on a held box until a person decides; these grades are drafts that come later, not holds or money. They are still counted as missed.

  • label-reader ran on 1 of 24 boxes; e.g. skipped: every serial read is at 0.90 or above and in the kit's format (bar 0.80): the serial matcher checks it as code
  • voice-note-reader ran on 3 of 24 boxes; e.g. skipped: no voice note on this box
  • carrier-claim-agent ran on 2 of 24 boxes; e.g. skipped: no damaged item and no transit evidence (no exception scan, carton not crushed, nothing said)
  • policy-agent ran on 6 of 24 boxes; e.g. skipped: 20 of 30 days, no wear, every line OK: clause 4.2 governs (the window arithmetic ran as code)
  • restock-grader ran on 19 of 24 boxes; e.g. skipped: held for a person: grading waits for the decision (no item needs diverting now)
  • customer-message-drafter ran on 6 of 24 boxes; e.g. skipped: complete box: the fixed app-code note says everything came back (no model call)
Latency: p50 of the preflight's measured Meta calls (meta-preflight (scripts/meta-preflight.ts)): Muse Spark 13.8 s, Muse Wonder 29.2 s per call; different prompts from the fleet roles, so an estimate; a replayed live call uses its recorded latency. Cost: token-budget estimates at Meta list price. Nothing on this page called a model.
Prompt caching on the model roles (from 4 recorded live calls)

Prompt caching on the model roles

From 4 recorded live calls

Every model role sends its fixed instructions first and the box's evidence last, with one stable cache key per role, so Meta can serve the repeated prefix from its cache. Cached input costs $0.15 instead of $1.25 per million tokens on Muse Spark ($0.20 instead of $4.00 on Muse Wonder).

113
input tokens served from cache (cached_tokens)
2%
of 5,847 input tokens
$0.0001
saved against the full input rate
4
recorded live calls counted
Planning projection: 500 returns a day (not a measurement)

Planning projection: 500 returns a day

Projection from the seeded shift, not a measurement

The seeded shift averages 6.54 agent runs per box (2.54 of them model roles) with selective dispatch, and an estimated $0.125 per box if the model roles dispatched on each box ran live (segmentation plus model agents, at list price). Scaled to 500 boxes (the core pipeline's projection is on How it works):

3,271
agent runs a day, projected
500
inspector runs a day, one per box (one code path)
$62.37
estimated live model + segmentation cost a day
61%
of agent runs are app code (no model cost)

Why these roles exist

01 · The problem

A returns bench sees 24 boxes a shift. A missing lens cap, a swapped serial, a dent from transit, a smudged label, a late return: each needs a different check, and a tired person misses some.

02 · The solution

One inspector code path run per box (the tray counter) and 10 specialist roles: label, serial, damage, the lead's voice note, policy, carrier claims, restock, the customer note and cost. The coordinator merges them most-restrictive-first.

03 · Why it matters

A specialist runs on a box only when the box's evidence calls for it (61 model calls instead of 168 on the seeded shift), and a role stays only if removing it changes something (a decision, or work a person uses): the ablation on Evals freezes every output and removes one role at a time. Roles can raise holds and draft work; the refund still needs a person's single-use token.

04 · How it's used

The returns lead works the queues the coordinator builds: approve a clean refund, review a hold with its reasons, file the drafted carrier claim, quarantine a stray unit, send the drafted note.