# Reviewing Drafts Before Sending

|                      |                                                                                             |
| -------------------- | ------------------------------------------------------------------------------------------- |
| **Time to complete** | 15 minutes                                                                                  |
| **Difficulty**       | Beginner                                                                                    |
| **Prerequisites**    | Email or Slack connection                                                                   |
| **You'll build**     | An assignment that drafts outbound messages and waits for your approval before sending them |

***

### Why Automate This?

**The Problem**: Sending the wrong message to a customer or stakeholder is costly — once it's out, you cannot take it back. Teams either review every draft manually (slow) or skip the review entirely and accept the risk (dangerous).

**The Solution**: A Duvo assignment that drafts each message and pauses for your approval before sending. You see exactly what will go out, approve or revise it, and the assignment handles delivery — all without switching between tools.

**Expected Results**:

* Every outbound message reviewed before it is sent
* Approval decisions reachable from Slack or the Activity Inbox — no need to open the message editor
* Full audit trail of what was approved, denied, and revised

***

### What You'll Build

By the end of this tutorial, you'll have an assignment that:

1. Reads a list of customer cases or emails that need a response
2. Drafts a personalized reply for each one
3. Pauses and shows you the draft — recipient, subject, and full body
4. Sends the message only after you approve it
5. If you deny a draft, asks you what to change and regenerates before re-requesting approval

***

### Before You Start

Make sure you have these ready:

* [ ] **Email connection** — Connect Gmail or Outlook. [Connect a connection](/connections/how-to-add-connection.md)
* [ ] **A source for your messages** — This could be a Gmail inbox, a support queue, a spreadsheet of contacts, or a Slack channel. Connect whichever system holds the inputs.

***

### Step 1: Create Your Assignment

1. Click **"+ Create Assignment"** from your dashboard.
2. Select **"Use Assignment Builder"**.

![Create Assignment Button](/files/oGMkQRXIVPImH6Q6k667)

***

### Step 2: Describe Your Workflow

Paste this prompt into the Assignment Builder and adjust it to match your source system:

```
Check my Gmail inbox for emails labeled "needs-reply" that have not yet been answered.

For each email:
1. Read the full message and any prior thread context.
2. Draft a professional reply that addresses the customer's question directly.
   Keep the tone friendly and concise.
3. Before sending, request approval with:
   - Title: "Send reply to [sender name] — [email subject]"
   - Description: include the full draft body so I can review it
4. If I approve, send the reply and remove the "needs-reply" label.
5. If I deny, ask me what to change. Revise the draft and request approval again.
```

Click **"Generate"** to create the assignment SOP.

***

### Step 3: Review the Generated SOP

Duvo will generate a structured SOP. Check that:

* The source system is correctly identified (Gmail, in this case)
* The approval title format includes enough detail to decide without opening a separate window
* The revision loop is present — the assignment should ask what to change when a draft is denied, not just stop

Edit the SOP directly if anything needs adjusting.

***

### Step 4: Configure Connections

Click **"Connections"** and confirm:

1. **Gmail** (or your email provider) — Connect the account you want to send from.
2. **Human-in-the-Loop** — Already available automatically. No setup needed.

***

### Step 5: Test the Approval Flow

Run the assignment on a single test email before using it in production:

1. Click **"Start Work"**.
2. Watch the session log as the assignment drafts the reply.
3. When the assignment reaches the approval gate, a request will appear in your [Activity Inbox](/assignment-features/activity-inbox.md).

![Assignment Running](/files/vGwCCc7nCeBlBC1U7TpG)

**Try each path:**

* **Approve the draft** — Verify the email is sent and the label is removed.
* **Deny the draft** — Verify the assignment asks you what to change, revises the draft, and requests approval again.

***

### Step 6: Respond Directly from Slack

If you have Slack notifications enabled, you can approve or deny drafts without opening Duvo:

1. Go to **Settings > Notifications** and connect your Slack account.
2. Run the assignment again.
3. When the approval request is created, the Duvo bot sends you a direct message in Slack with the full draft.
4. Tap **Approve** or **Deny** directly in the Slack message.
5. The assignment receives your response and continues — sending the email if approved, or asking for revision if denied.

The Slack message updates to show the outcome after you respond, giving you a record of each decision.

***

### Step 7: Schedule the Assignment

Once testing is successful, set the assignment to run automatically:

1. Go to **Assignment Settings > Schedule**.
2. Choose how often to check for new emails — every hour, or on a custom schedule.
3. Save the schedule.

New drafts will appear in your Activity Inbox (or via Slack) as they are generated, ready for your review.

***

### Expected Results

When your assignment runs successfully, you should see:

**In your Activity Inbox:**

* One pending approval for each draft, with the full message body visible in the detail panel
* Requests resolve automatically once you approve or deny

**In your email sent folder:**

* Only messages you explicitly approved
* Nothing sent that you did not review

**In Duvo:**

* A complete session log showing each draft, your decision, and the final action taken

***

### Troubleshooting

#### The approval request does not show the full draft

* **Check the SOP instruction** — Make sure the description field in the approval request explicitly includes the draft body. Edit the SOP and add: "Include the complete email body in the approval description."
* **Check character limits** — Very long drafts may be trimmed. Break long messages into shorter ones or include a summary in the description.

#### The assignment stops after a denial instead of asking for revisions

* **Check the fallback instruction** — The SOP must tell the assignment what to do when denied. Add: "If approval is denied, ask the user what to change, revise the draft, and request approval again."

#### Slack notifications are not arriving

* **Check notification settings** — Go to **Settings > Notifications** and verify Slack is connected and notifications are enabled.
* **Check the Duvo bot** — Make sure the Duvo app is authorized in your Slack workspace.

#### Emails are sending without approval

* **Check the SOP** — The phrase "only send after I approve" (or equivalent) must appear before the send step. Without it, the assignment may send immediately after drafting.

***

### Take It Further

Once your basic approval workflow is running, consider these enhancements:

**Add a priority flag for urgent emails**

```
If the email is marked as urgent or the subject contains "URGENT", set the approval title to
"[URGENT] Send reply to [sender] — [subject]" so I can prioritize it in my inbox.
```

**Skip approval for routine replies**

```
If the email is a standard acknowledgment with no specific questions (e.g., "Got it, thanks"),
send the reply without requesting approval. Only request approval for substantive messages.
```

**Include a confidence note in the description**

```
In the approval description, briefly note why you drafted the reply this way and flag
any part you are uncertain about.
```

**Apply to other channels**

The same pattern works for Slack messages, social media comments, or any other outbound communication. Replace the Gmail instructions with the appropriate connection and source.

***

### Related Resources

* [Human-in-the-Loop](/assignment-features/human-in-the-loop.md) — Full guide to approval gates and how to write them into your SOP
* [Activity Inbox](/assignment-features/activity-inbox.md) — Where all pending approvals appear
* [Customer Response Emails](/examples/examples/customer-response-emails.md) — A tutorial for drafting and sending personalized responses at scale
* [Expense Report Approval](/examples/examples/expense-report-approval.md) — A tutorial showing threshold-based approval gates in a finance workflow


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.duvo.ai/examples/examples/reviewing-drafts-before-sending.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
