Human-in-the-loop is not a slogan. It is a set of interface and workflow choices: what the model may draft, what it may only prepare, when it must show sources, and how a person takes over when confidence is low or the stakes rise.
Draft versus send
Let the model write the email, ticket reply, or change description. Keep send, publish, and merge behind an explicit human action. The UI should make the draft state unmistakable.
If volume is high, batch review beats unsupervised send. Queue items by risk, not by generation time.
Prepare versus execute
For operations—refunds, access grants, deploys, CRM updates—have the system assemble the payload and show the diff. Execution stays a separate step with an authenticated person.
This also improves auditability: you can store who approved what, not only what the model proposed.
Confidence and sources
Show citations or retrieved snippets next to the answer. When retrieval is thin or scores are low, default to “I don’t know—escalate” instead of a fluent guess.
Confidence without sources is theater. Sources without a way to open them are decoration.
Escalation paths
Name the queue, channel, or role that owns exceptions. Time-box how long an item can sit as a draft. Log handoffs so you can see where the loop fails.
HITL collapses when escalation is a vague “contact support” link with no owner on the other side.