URL: /capabilities/agents/sdr · Id: `page:/capabilities/agents/sdr`

# SDR

> Builds the verified list, writes each first email, sends from your warmed second domain at 25 a day per inbox, and routes replies to you.

Builds the verified list, writes each first email, sends from your warmed second domain at 25 a day per inbox, and routes replies to you.

- **File convention:** `agents/sales/prospector.mdx`
- **Noun:** [`noun:role`](https://startupbuilder.dev/business/nouns/role)
- **Role:** [`role:prospector`](https://startupbuilder.dev/agents/sales/prospector)

```text title="Run it · Ask"
Put Dana Whitfield at Harborview on my three-email first touch from the warmed inboxes on tryleaseline.app, and show me email 1 before it sends.
```

```ts title="Run it · SDK"
import { $ } from 'startup-builder'

const result = await $.try.Contact.enroll({ contact: 'contacts/dana-whitfield', sequence: 'sequences/first-touch' })
```

```json title="Run it · Response"
{
  "mode": "try",
  "stored": false,
  "contact": {
    "$id": "contacts/dana-whitfield",
    "name": "Dana Whitfield",
    "email": "dana@harborview-pm.com"
  },
  "enrollment": {
    "sequence": "sequences/first-touch",
    "status": "active",
    "step": "email-1",
    "nextAt": "2026-10-28T15:00:00Z",
    "exitReason": null
  },
  "firstStep": {
    "from": "dana@tryleaseline.app",
    "mailbox": "mailboxes/warm-1",
    "pace": {
      "perDay": 25,
      "sentToday": 11
    },
    "subject": "Rent ledgers at Harborview",
    "body": "Dana, Harborview posted for a leasing coordinator this month. Is rent still reconciled by hand there? Leaseline matches each payment to its ledger the day it lands. Worth a 15-minute look?"
  }
}
```

## Responsibilities
- Builds each list from one ICP sentence, and keeps only people at companies that fit with quoted evidence.
- Checks every address before the first send, and stops a batch when bounces pass 2%.
- Sends cold first touches only from the 2 warmed inboxes on your second domain, 25 a day each after a 14-day ramp; warm intros and replies go from your own inbox.
- Reads every Suppression before each send, so an opt-out binds within the hour.
- Routes each reply within the hour: interested to a booked call, technical to the SE seat, stop to `Contact.suppress`.

## Verbs
| Verb | Object | Event |
| --- | --- | --- |
| [`Audience.build`](/capabilities/find-customers/build-a-verified-list) | `Audience` | None. |
| [`Prospect.find`](/code/data/people/find) | `Prospect` | None: a read |
| [`Prospect.verify`](/code/data/people/verify) | `Prospect` | None: a read |
| [`ContactPoint.verifyEmail`](/code/data/people/verify-email) | `ContactPoint` | None: a read |
| [`Contact.enroll`](/code/apps/sequences/enroll) | [`noun:contact`](https://startupbuilder.dev/business/nouns/contact) | `Contact.enrolled` |
| [`Message.schedule`](/code/apps/mailboxes/schedule) | [`noun:message`](https://startupbuilder.dev/business/nouns/message) | `Message.scheduled` |
| `Prospect.engage` | [`noun:prospect`](https://startupbuilder.dev/business/nouns/prospect) | `Prospect.engaged` |
| `Lead.assign` | [`noun:lead`](https://startupbuilder.dev/business/nouns/lead) | `Lead.assigned` |
| `Contact.suppress` | [`noun:contact`](https://startupbuilder.dev/business/nouns/contact) | `Contact.suppressed` |
| [`Meeting.book`](/code/apps/scheduling/book) | [`noun:meeting`](https://startupbuilder.dev/business/nouns/meeting) | `Meeting.booked` |

## Role contract
| Part | This seat |
| --- | --- |
| Purpose | Reach buyers who have not found the startup yet, one person at a time. |
| Results | Positive replies per 100 contacts, and calls booked from replies |
| Target | At least 2 positive replies per 100 contacts, read at 300 contacts, and at least 40% of positive replies booked as calls, read at 20 positive replies ([Planning estimate](/strategy/numbers#assumptions)). |
| Standards | Suppresses every contact who opts out within one hour. Sends only to checked addresses at companies that match the ICP, each with its evidence. |
| Limits | `Contact.enroll` up to 200 a day ([the hub Prospector’s limit](https://startupbuilder.dev/agents/sales/prospector)), and never above the pace you set per Mailbox: 25 a day on each warmed inbox |
| Schedule | Daily, inside each recipient’s working hours |
| Channels | `email`, `social` |
| Also called | BDR, Sales Development Rep |
| Filled by | A role agent, from the start. You answer what it asks and take the calls it books. |

## Hands off to
- [AE](/capabilities/agents/ae): A reply says yes to a call: the meeting is booked within 60 minutes, with the account brief attached.
- [SE](/capabilities/agents/se): A reply asks a technical question the records cannot answer.

## Processes owned
[`process:outbound`](https://startupbuilder.dev/workflows/processes/outbound) · [`workflow:outbound-sequence`](https://startupbuilder.dev/workflows/processes/outbound/outbound-sequence)

## Metrics
[`metric:positive-reply-rate`](https://startupbuilder.dev/agents/sales#positive-reply-rate) · [`metric:spam-rate`](https://startupbuilder.dev/agents/marketing#spam-rate)

## Approvals
You see the plan and its price before anything runs. Sends and posts go out within the limits you set; one approval rule on a class such as `send` makes every action in it wait for you, and going over a limit always asks.

| It asks you | When | Answered by |
| --- | --- | --- |
| Enroll more people than the day allows | A batch would pass the daily pace you set for that Mailbox | You |
| Send from a new Mailbox | Before the first send from an address you have not authorized yet | You |

Each class and its default amount: the hub’s [approvals](https://startupbuilder.dev/agents/approvals) page.

## Works with
- [Booked first calls](/capabilities/reach-out/booked-first-calls) (Service): Held first calls with buyers who fit, a budget owner confirmed on each, billed per held meeting against a monthly target you set.
- [Build a verified list](/capabilities/find-customers/build-a-verified-list) (Workflow): One sentence in, 100 checked work emails out, each at the right company, with the quote that shows the fit.
- [Demand generation](/capabilities/find-customers/demand-generation) (Service): Your strategy’s Plays run for the month, billed per qualified lead, and every lead and dollar of revenue traced to the Play that sourced it.
- [List refresh](/capabilities/find-customers/list-refresh) (Workflow): Every month, each row on your list re-read: who moved jobs, which companies changed, and which addresses bounced, as a new version of the list.
- [Personal first touch](/capabilities/reach-out/personal-first-touch) (agent task): Your verified list in, a first email to each person whose opening line quotes their own company, then two follow-ups that each add something new.
- [Pick who to sell to first](/capabilities/find-customers/pick-who-to-sell-to) (Workflow): Two to four customer sentences in, each scored on pain, deal size, reach, warm paths and proof, and five discovery calls set on the winner.
- [Verified list with a bounce warranty](/capabilities/find-customers/verified-list) (Service): A list of checked work emails at the right companies, billed per contact; every bounce over 2% at first send is credited and replaced.

It trades hand-offs with [AE](/capabilities/agents/ae), [SE](/capabilities/agents/se) and [Marketing lead](/capabilities/agents/marketing-lead).

## Example
On Monday the agent enrolls the 50 verified heads of operations and sends email 1 from dana@tryleaseline.app and dana.okafor@tryleaseline.app, 25 from each. Dana Whitfield at Harborview Property Management replies on day 3 about rent ledgers, so her sequence stops, the answer goes from dana@leaseline.app, and a call lands on the founder’s calendar that afternoon.