Designing Human-in-the-Loop AI Workflows
A practical framework for placing people inside AI workflows: where to require approval, how to escalate, and why reversibility should drive oversight decisions.

Putting a person "in the loop" sounds like an obvious safeguard for AI systems, but a poorly designed review step can be worse than none. Reviewers get flooded with trivial approvals, click through without reading, and the organization believes it has oversight when it doesn't.
Good human-in-the-loop design is about placing human judgment exactly where it changes outcomes. This guide covers how to decide which actions need review, how to design approval and escalation, and how to keep reviewers genuinely engaged over time.
What human-in-the-loop means
A human-in-the-loop (HITL) workflow is one where an AI system does part of the work and a person participates at defined points: approving an action, correcting an output, answering a question, or taking over entirely. The AI might be a single model call that drafts text or an agent that works through a multi-step task.
It helps to distinguish three levels of involvement:
- Human in the loop. The system cannot proceed past certain points without a person's decision.
- Human on the loop. The system proceeds on its own, and a person monitors and can intervene or undo.
- Human out of the loop. The system operates independently, with periodic audits at most.
These aren't settings for a whole system. A well-designed workflow often uses all three for different actions within the same process.
Start with the actions, not the AI
The most common mistake is deciding oversight at the level of "the AI" as a whole. Instead, list every action the system can take and assess each one separately. For each action, ask:
- Can it be undone? How easily, how completely, and by whom?
- What does a mistake cost? Money, customer trust, legal exposure, safety, or just a few minutes of cleanup.
- Who is affected? Internal staff only, a single customer, many customers, or the public.
- How often does the system get it wrong? Use evaluation data, not intuition.
- Would a mistake be noticed? Some errors surface immediately; others sit quietly for weeks.
The answers point toward the right oversight level for that specific action.
Reversible vs. irreversible actions
Reversibility is the single most useful lens for HITL design. It determines whether you can let the system act and fix mistakes afterward, or whether you must catch mistakes before they happen.
Reversible actions
These can be undone cleanly with little lasting effect: drafting a document, tagging a ticket, adding an internal note, moving an item into a queue, creating a calendar hold. For these, review after the fact is usually enough. Let the system act, log what it did, and make undo easy.
Partially reversible actions
These can be undone, but not without cost or a trace: changing a customer's plan (they may have seen the change), updating a record other systems have already synced, issuing a coupon. Consider acting automatically below a threshold and requiring approval above it.
Irreversible actions
These can't be taken back: sending an email to a customer, moving money, deleting data without backup, publishing content, submitting a filing, communicating a medical or legal decision. These are the natural home for pre-approval.
Making actions more reversible
Often the best design move is to change the action itself so that it becomes reversible:
- Replace "delete" with "archive" or soft-delete with a retention window.
- Replace "send" with "schedule to send in 30 minutes," giving time to cancel.
- Replace "publish" with "publish to staging" pending sign-off.
- Stage batch changes so they can be rolled back together.
Every action you convert from irreversible to reversible is one fewer approval queue a person has to watch.
A simple oversight matrix
Combining reversibility with the cost of mistakes gives a practical starting point.
| Low cost of error | High cost of error | |
|---|---|---|
| Easily reversible | Automate; audit a sample periodically | Automate with monitoring and fast undo; alert on anomalies |
| Hard or impossible to reverse | Automate with confidence thresholds; escalate edge cases | Require explicit human approval before acting |
Treat this as a default, not a law. Regulatory requirements, customer expectations, or the system's measured error rate may push individual actions into a stricter cell.
Designing approval points
When an action does need approval, the design of the approval step matters as much as its placement.
Show the reviewer what matters
A reviewer should be able to make a sound decision in seconds to a few minutes. Present:
- The proposed action, in concrete terms: the exact email text, the exact refund amount and recipient.
- The relevant context: the customer's request, the policy that applies, the data the system relied on.
- The system's rationale, briefly, so the reviewer can check the reasoning, not just the result.
- What is unusual: flags for anything outside normal patterns, such as an amount above typical range or a conflict between sources.
Avoid making reviewers reconstruct context from logs. If they have to open three other tools, they'll either take too long or stop checking.
Offer more than approve and reject
Binary choices force bad outcomes. Useful options include:
- Approve as proposed.
- Edit and approve, correcting a detail without restarting.
- Reject with reason, which the system can use to revise or log.
- Escalate to someone with more authority or expertise.
- Take over, where the person completes the task manually.
Capturing edits and rejection reasons also produces valuable data for improving the system.
Batch where it helps, never where it hides
Grouping similar low-risk approvals into one screen saves time. But batching high-stakes actions invites "approve all" behavior. Keep consequential items individually reviewable.
Handle waiting gracefully
An agent that needs approval should pause cleanly, preserve its state, and resume when the decision arrives, possibly hours later. Decide what happens if nobody responds: remind, escalate to a backup reviewer, or cancel safely. Never default to "proceed" on timeout for an action that required approval in the first place.
Designing escalation
Escalation is the path by which the system hands a situation to a person because it shouldn't or can't proceed alone. Unlike approval points, which are planned for specific actions, escalation triggers on circumstances.
Common escalation triggers
- Low confidence or conflicting information the system can't resolve.
- Policy boundaries: requests that fall outside what the system is authorized to handle.
- Sensitive signals: mentions of legal action, safety concerns, distress, or vulnerable users.
- Repeated failure: several unsuccessful attempts at the same step.
- Explicit request: the user asks for a person.
- Anomalies: unusual volumes, amounts, or patterns compared with normal activity.
Make escalations useful to the receiver
An escalation should arrive with a summary of the situation, what the system already tried, why it escalated, and what decision is needed. The person picking it up shouldn't have to start from zero, and the end user shouldn't have to repeat themselves.
Route to the right person
Different triggers belong with different people. A billing dispute, a safety concern, and a technical bug need different expertise. Routing everything to one general queue creates delays and encourages superficial handling.
Avoid escalation as a dumping ground
If the system escalates a large share of cases, reviewers are effectively doing the work while also reading AI summaries. Track escalation reasons and fix the common causes, whether that means clearer policy, better tools, or narrowing what the system attempts.
Keeping humans genuinely engaged
Oversight fails quietly when people stop paying attention. This is sometimes called automation bias: the tendency to trust a system that is usually right, even when it isn't.
Ways to counter it:
- Keep volume reasonable. If reviewers approve a long stream of routine items, raise the automation threshold so they see fewer, more meaningful decisions.
- Measure reviewer behavior. Very fast approvals and near-perfect approval rates may signal rubber-stamping rather than a flawless system.
- Use periodic calibration checks. Occasionally insert known-flawed examples, clearly handled within your review process, to confirm reviewers catch them.
- Rotate and train. Explain what kinds of errors the system tends to make so reviewers know where to look.
- Give reviewers authority. People who can edit, reject, and flag without friction engage more than those who can only click approve.
- Close the loop. Show reviewers how their corrections changed the system. Feedback that disappears discourages careful review.
Using human decisions to improve the system
Every approval, edit, rejection, and escalation is a labeled example of what the right behavior looks like. Store them with the context that produced them. Over time, this data helps you:
- Identify action types where the system is reliably correct and oversight can be relaxed.
- Find recurring errors that need better instructions, tools, or data.
- Build evaluation cases from real situations rather than invented ones.
- Justify, with evidence, any change to where humans sit in the workflow.
Moving an action from pre-approval to after-the-fact review should be a deliberate decision backed by that record, not a gradual drift because reviewers got busy.
A worked example
Imagine a hypothetical accounts-payable workflow where an AI agent processes incoming vendor invoices.
- Extracting fields and matching to purchase orders: reversible and internal. Automated, with a weekly sample audit.
- Flagging mismatches: reversible. Automated; mismatches go into a review queue with side-by-side comparison.
- Scheduling payment for matched invoices under a set amount: partially reversible if payment runs later. Automated, but payments are scheduled with a delay window during which finance staff can cancel.
- Scheduling payment above that amount or to a new vendor: high cost, hard to reverse once sent. Requires explicit approval showing the invoice, PO, vendor history, and any anomalies.
- Changing vendor bank details: a classic fraud target and irreversible in effect. Always escalated to a designated person with a verification procedure outside the AI system.
The agent does most of the work, but people sit precisely where their judgment prevents costly mistakes.
Key takeaways
- Decide oversight per action, not for the AI system as a whole, based on reversibility, cost of error, who is affected, and measured error rates.
- Reversibility is the most useful lens: review reversible actions after the fact, and require approval before irreversible, high-cost ones.
- Redesigning actions to be reversible, through delays, soft deletes, or staging, reduces the need for approval queues.
- Approval screens should show the concrete action, context, rationale, and anomalies, and offer edit, reject, escalate, and take-over options.
- Escalations need clear triggers, useful summaries, and routing to the right expertise, and a high escalation rate is a problem to fix.
- Guard against rubber-stamping by keeping review volume meaningful, measuring reviewer behavior, and feeding human decisions back into improvements.
Keep reading
More in AI Agents →AWS Puts Agent Plumbing Ahead of Model Hype in Its September Recap
AWS's monthly roundup adds OpenAI-powered Managed Agents in preview, a leaner AgentCore runtime, an open source Strands harness and a wave of new frontier models on Bedrock.
5 min read
Postman says tool sprawl, not model quality, was the hard part of shipping Agent Mode
Postman and AWS detail the architecture behind Agent Mode, including dynamic tool selection past a 40-tool accuracy cliff, schema-aware reads and tiered prompt caching on Amazon Bedrock.
6 min read

Asana says a caching fix, not a model swap, drove most of its 76x browser-agent savings
OpenAI's customer story credits GPT-6.1 Sol and Codex for a 76x cost drop in Asana's browser agent. The underlying numbers suggest prompt caching and history management did most of the work.
6 min read