Human-in-the-loop is the phrase every AI vendor uses and almost none define. In practice, the loop is only as good as what the human sees at decision time. A bare notification — "agent wants to tender load 482, approve?" — forces the reviewer to rebuild the context themselves, which is slower than doing the work directly. The approval packet is the fix: a self-contained, reviewable unit that makes the human decision fast and the record permanent.
What a complete approval packet contains
- The proposed action, named explicitly: prepare_tender to carrier X at rate Y, send this exact customer update, request this document.
- The trigger: what the agent observed that made it propose this — the stale tracking event, the slipping appointment, the document gap.
- The evidence: load state, carrier history and compliance status, customer context, and the agent's reasoning in plain language.
- The policy answer: why this action required approval rather than executing — which rule it tripped and who is allowed to decide.
- An expiry: freight moves, so a packet that sits too long lapses instead of executing against a stale world.
The lifecycle of a packet
- 1Agent proposesThe agent requests an action through the API and receives approval_required as the policy answer.
- 2System assemblesThe packet is built from live load context and the agent's evidence — not from whatever the agent chose to include.
- 3Human decidesAn operator approves, edits, or rejects. The decision takes seconds because the discovery work arrived done.
- 4System executes and recordsApproved actions execute exactly as approved; the packet, decision, decider, and outcome write to the audit history.
Why packets beat pings
A notification asks for trust; a packet earns it. Reviewers approve faster because nothing needs re-checking, managers can audit how decisions were actually made, and the agent's judgment becomes measurable: the share of packets approved unchanged is the single best signal for when to widen an agent's permissions. This is how teams move along the autonomy dial deliberately instead of by vibes.
In Haulbase, approval packets are a core primitive. The Haulbase Agent delivers them to your operators for exceptions and customer-facing drafts, and Headless Haulbase creates them automatically whenever an agent you build requests an approval-gated action like tendering.