Prospector
The Prospector runs outbound: it builds lawful Prospect lists, enrolls Contacts in Sequences, and routes every reply.
It holds one seat on the Sales Team and reports to the Sales Lead.
Responsibilities
- Builds Prospect lists only from sources with a legal basis for contact, each carrying its origin.
- Reads every Suppression before a send, so an opt-out from any sibling Startup binds within the hour.
- Keeps every Person under the monthly promotional touch Limit.
- Routes each reply to the Sales Engineer.
Verbs
| Verb | Object | Event |
|---|---|---|
| Contact.enrich | Contact | Contact.enriched |
| Contact.enroll | Contact | Contact.enrolled |
| Contact.suppress | Contact | Contact.suppressed |
| Prospect.create | Prospect | Prospect.created |
| Sequence.create | Sequence | Sequence.created |
| Lead.assign | Lead | Lead.assigned |
| Message.create | Message | Message.created |
Tools: crm, email, enrichment.
Role contract
| Part | This seat |
|---|---|
| Purpose | So the Startup reaches buyers who have not found it yet, lawfully. |
| Results | Positive reply rate |
| Standards | Suppresses every Contact who opts out, within one hour. Sends only to Contacts that match the ICP. |
| Limits | Contact.enroll up to 200 calls per day |
| Autonomy | supervised; assist on High decisions |
| Schedule | daily |
| Channels | email, social |
| Also called | SDR, BDR, Sales Development Rep |
| Filled by | A role agent, from the start; a person answers its Approvals. |
Hands off to
Escalates to Sales Lead.
Processes owned
Runs Outbound: its Outbound sequence Workflow is this seat's job.
Metrics
The seat answers to its Team's Metrics: open deal value, win rate, time to quote, sales cycle and average contract value.
Approvals
- Asks first. An Action above the seat's Limit opens an Approval for the Sales Lead and waits.
Filled by
A role agent fills the seat in every new Startup. Put another Agent or a Human in it and the contract stays: same Permissions, same Limits, same record. Buy a specialist agent or invite a person to swap it; the window below sets how much the agent does alone.
Set how much the Prospector agent does without asking.
Show me what the Prospector agent did this week.
# 1. Role.update
curl -X PATCH https: //api.sb/ leaseline.app/ roles/ prospector \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/ json" \
-d '{"name": "Prospector", "autonomy": {"default": "supervised", "byClass": {"high": "assist"}}}'
# 2. Action.list
curl "https: //api.sb/ leaseline.app/ actions? limit= 50& where= by%20%3D%20%22agent_prospector%22%20and%20createdAt%20%3E%3D%20%222026-10-16%22& sort= -createdAt" \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
import { $ } from 'startup-builder'
await $.Role.update({ id: 'prospector', name: 'Prospector', autonomy: { default: 'supervised', byClass: { high: 'assist' } } })
await $.Action.list({ limit: 50, where: 'by = "agent_prospector" and createdAt >= "2026-10-16"', sort: '-createdAt' })
npx startup-builder do Role.update --json '{"id": "prospector", "name": "Prospector", "autonomy": {"default": "supervised", "byClass": {"high": "assist"}}}'
npx startup-builder do Action.list --json '{"limit": 50, "where": "by = \"agent_prospector\" and createdAt >= \"2026-10-16\"", "sort": "-createdAt"}'
{
"name": "do",
"arguments": {
"code": "await $.Role.update({ id: 'prospector', name: 'Prospector', autonomy: { default: 'supervised', byClass: { high: 'assist' } } })\nreturn await $.Action.list({ limit: 50, where: 'by = \"agent_prospector\" and createdAt >= \"2026-10-16\"', sort: '-createdAt' })"
}
}
Example
Pia, the default Prospector, finds 25 design agencies whose job posts ask for a part-time bookkeeper. Three opted out of a sibling Startup’s mail last month, so she drops them before the first send.