> ## Documentation Index
> Fetch the complete documentation index at: https://docs.anyreach.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Demo-builder addresses

> Let an email address build a demo agent from any company URL and reply with the live demo.

An email address normally routes to an agent. Set its `handler` to `demo` and it does something else instead: mail containing a company website builds a demo AI voice agent for that company **in your organization**, and the requester — plus everyone CC'd — is emailed twice, once on receipt and once when the demo is live.

No agent, no conversation, no reply drafting. A demo-builder address is a build request inbox.

## How it flows

```
Inbound email ─▶ extract the company URL ─▶ acknowledgment email
                                                    │
                                                    ▼
                                          demo agent is built
                                                    │
                                                    ▼
                                   "your demo is live" reply, in thread
```

<Steps>
  <Step title="Create the address">
    Create an email address as usual, with `handler` set to `demo`. Any agent you pass alongside it is ignored — a demo address has no agent to pin.
  </Step>

  <Step title="Someone emails it a company URL">
    The subject line is the documented way to ask (`Demo https://acme.com`), but the body is checked too. Bare domains work — `acme.com` is normalized to `https://acme.com`.
  </Step>

  <Step title="They get an acknowledgment">
    Sent as a threaded reply the moment the request is accepted, with everyone from the original thread CC'd.
  </Step>

  <Step title="They get the demo">
    When the build finishes, a second reply lands in the same thread with the company name, the demo link, and a phone number if you enabled one.
  </Step>
</Steps>

## Configuration

Demo options live in `handler_config` on the address:

| Field                  | Type      | Default | Description                                                                                                                                                                                                          |
| ---------------------- | --------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `include_phone_number` | boolean   | `false` | Purchase a phone number for each demo and include it in the completion email. Off by default because every request would otherwise buy a number; when off, the phone row is omitted entirely rather than left blank. |
| `instructions`         | string    | none    | Extra steering for how the demo agent is researched and written.                                                                                                                                                     |
| `from_display_name`    | string    | none    | Display name on outbound demo mail.                                                                                                                                                                                  |
| `signature`            | string    | none    | Plain-text signature appended to demo mail.                                                                                                                                                                          |
| `reply_to_all`         | boolean   | `true`  | CC everyone else on the inbound thread. Turn off to reply only to the sender.                                                                                                                                        |
| `ignore_senders`       | string\[] | `[]`    | Addresses or bare domains that may never trigger a build from this address. See the warning below.                                                                                                                   |

## What is and isn't answered

A demo address applies the same guards as an agent address:

* **Auto-generated mail** — anything carrying `List-Id`, `List-Unsubscribe`, or `X-Auto-Response-Suppress` — never builds anything.
* **Another platform agent** as the sender is ignored, so two Anyreach addresses can't build demos at each other.
* **Opted-out senders** are skipped. `STOP` / `START` still manage the org-wide unsubscribe ledger; they never trigger a build.
* **No company URL** gets a short "how to request a demo" reply instead of a build. Addresses in signatures don't count as the company — a message whose only domain is `jo@gmail.com` is treated as having no URL.

<Warning>
  The auto-generated guard only stops well-behaved senders. If another automated mailer can end up on the same thread — a second demo bot, a helpdesk autoresponder — add it to `ignore_senders`. A bot that doesn't stamp `Auto-Submitted` will otherwise read the company URL out of the acknowledgment email, build its own demo, and reply, which this address would then build from again. The loop is unbounded and each cycle costs a full demo build.
</Warning>

## Duplicate protection

Each request is keyed on the provider's message id, which is unique. A redelivered webhook loses that key and is acked without starting a second build, so the same email can never produce two demos.

## Tracking requests

Every request is recorded with its requester, CC list, company URL, status, and resulting demo link. Read them from `GET /core/demo-email-requests` (scopes `email_addresses:read` or `email_addresses:manage`), or in the dashboard under **Email → Demo Requests**.

| Status      | Meaning                                                  |
| ----------- | -------------------------------------------------------- |
| `received`  | Accepted and persisted; the build hasn't started.        |
| `building`  | Acknowledged and the demo is being built.                |
| `completed` | Demo is live and the requester has been emailed.         |
| `failed`    | The build genuinely failed; the requester has been told. |

A request is only finished once the requester has actually been told the outcome. If email delivery fails, it is retried with backoff rather than abandoned — and a failed *delivery* is never reported to the requester as a failed *build*.
