Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.duvo.ai/llms.txt

Use this file to discover all available pages before exploring further.

Human-in-the-Loop lets your assignments pause at specific points and wait for your input before continuing. Use it to keep a human decision in the loop wherever your workflow requires review — approving a risky action, answering a follow-up question, or checking a draft before it goes out. Human-in-the-Loop is a built-in connection. No setup is required — it is available for every assignment automatically.

When to Use It

Human-in-the-Loop is the right tool when:
  • The action is irreversible — sending an email, deleting records, submitting a form, making a payment
  • The decision requires judgment — exception handling, ambiguous requests, policy edge cases
  • Compliance requires sign-off — expenses over a threshold, contract changes, PII-related actions
  • You want to review a draft first — see what the assignment will send or publish before it does
If a step is routine and low-risk, let the assignment handle it on its own. Reserve Human-in-the-Loop for steps where a wrong decision would be costly or embarrassing.

Request Types

Assignments can send three types of requests:

Approval

The assignment presents a proposed action and waits for you to confirm or reject before proceeding. What you see: A request with a title summarizing the action and a description providing the context you need to decide.
  • Approve — The assignment continues with the proposed action.
  • Deny — The assignment receives your rejection and follows whatever fallback you defined in the SOP (for example: skip this step, try an alternative, or stop).
Example SOP instruction:
Before sending any email to a customer, request approval. In the title, include the recipient
and subject line. In the description, include the full email body. Only send after receiving approval.

Question

The assignment asks you to choose from a set of options before it decides how to proceed. Use this when the right next step depends on context only you have. What you see: A question with selectable options. Pick one and submit — the assignment receives your answer and continues down the correct path. Example SOP instruction:
If the customer's request cannot be resolved automatically, ask the user:
(a) Reply asking for clarification, (b) Escalate to the account manager, or (c) Close the ticket.

Login Request

The assignment needs a login to access a system it has not been authorized for. It pauses and directs you to add the login in Resources > Logins and Secrets. Once the login is saved, the assignment continues.

Adding Approval Gates to Your SOP

You control exactly where approvals happen by writing them into your SOP. You do not configure Human-in-the-Loop separately — just describe the checkpoint in plain language and the assignment will pause there. Review before sending:
Draft the reply but do not send it. In the approval title, include the recipient and subject.
In the description, include the full draft body. Only send after I approve.
Threshold-based gate:
Auto-approve refunds under $200. For refunds between $200 and $1,000, request approval with
the customer name, order ID, and reason. For anything over $1,000, ask whether to approve,
deny, or escalate to the finance team.
Content review before publishing:
Generate the post and request approval before publishing. If I deny, ask what to change
and regenerate the content.
Exception routing:
If the issue cannot be categorized automatically, ask whether to route it to tier-1 support,
tier-2 support, or the customer success team.
Batch summary gate:
After processing all line items, show me a summary of the changes and request approval
before committing any updates to the system.

Writing good approval request titles

The title is the first thing you see when a request arrives. Write your SOP so the title includes the specific details — not just “Requesting approval.” For example:
  • “Send invoice to Acme Corp — $4,200 due 2026-06-01”
  • “Delete 47 archived records from the leads table”
  • “Publish blog post: 5 Ways to Cut Procurement Costs”
You can instruct the assignment explicitly:
When requesting approval, set the title to "[action] — [key detail]".

Responding to Requests

Activity Inbox

The Activity Inbox is your central queue for all pending requests. A badge in the left sidebar shows the count of pending items. Requests appear the moment an assignment pauses. To respond:
  1. Open the Activity Inbox from the left sidebar.
  2. Click the request to open the detail panel.
  3. For approvals: click Approve or Deny.
  4. For questions: select your answer and submit.
The assignment resumes immediately after you respond.

During a live job

When you are watching an assignment run in real time, approval requests appear directly in the session window. You can approve or answer without leaving the job view — the assignment is waiting and will continue as soon as you respond.

Via Slack

If you have connected Slack and enabled notifications, pending requests are delivered as direct messages from the Duvo bot. Each message includes the request title, description, and interactive buttons.
  • Tap Approve or Deny directly in Slack — no need to open Duvo.
  • For questions, select your answer from the options in the message.
  • Once you respond, the message updates to confirm the outcome and the assignment resumes.
To enable Slack notifications, go to Settings > Notifications and connect your Slack account.

Via Microsoft Teams

Pending requests arrive as Adaptive Cards in Microsoft Teams. Select your response directly from the card. To enable Teams notifications, connect Teams at the team level, link your personal Teams account, then enable Activity Inbox in Microsoft Teams under Settings > Notifications.

Managing High Volumes

When an assignment generates many requests — for example, a batch job that reviews dozens of items — use the bulk actions in the Activity Inbox to keep up:
  • Mark all as responded — Dismisses all pending requests at once. Use this when a backlog of requests no longer needs individual review.
  • Delete all responded — Removes answered requests to keep the inbox clean.
  • Delete all — Clears everything, both pending and answered.
You can also filter by status (Pending / Answered) and type (Approval / Question) to focus on what matters most before taking a bulk action.

Practical Examples

Reviewing outbound communications

Add this to any assignment that sends messages on your behalf:
Draft the message but do not send it. In the approval title, include the recipient and subject.
In the description, include the full body. Only send after I approve. If I deny, ask what to change and revise.

Expense threshold enforcement

Add this to an expense-processing SOP:
Auto-approve expenses under $200. For $200–$1,000, request approval with the employee name,
amount, and justification. For over $1,000, ask: approve, deny, or escalate to the finance director?

Data modification gate

Add this before writing to a live system:
Before updating any records, summarize the changes you are about to make and the number of
rows affected. Request approval before committing. If denied, stop and report what was skipped.

Exception routing

Add this to a support or operations assignment:
If the case does not match any standard category, ask: should I route this to tier-1 support,
tier-2 support, or the customer success team?

Tips

  • Define the rejection behavior — Tell the assignment what to do if denied. Without a fallback, it may stop entirely or retry the same action.
  • Use questions for branching — When the right path depends on context you have but the assignment does not, use a question rather than a yes/no approval.
  • Do not overuse approvals — Every approval gate adds wait time. Use them only for decisions that genuinely require human judgment and let the assignment handle routine steps on its own.
  • Test the pause behavior — Run the assignment once and verify it pauses where you expect. Check that the approval title and description give you enough context to decide without opening other systems.