Prospect List Builder
🟡 GrowthSources persona-mapped contacts for target accounts with validation, dedupe, suppression, and relevance scoring
Adam's take
Nobody demos list building at a conference, but bounced emails and missing personas tax every sequence you run.
Required tools
Optional tools
Expected value
Review-ready prospect lists in minutes instead of hours; fewer bounces
Deployable workflow pack
The full pack includes the agent spec, deployment guide, architecture diagrams, n8n workflow skeleton, Clay template, HubSpot properties, JSON schemas, OpenAPI spec, cost and ROI calculators, demo data, QA checklist, and governance notes.
View pack on GitHubHow to deploy this agent
"Find me a VP of RevOps at these 40 accounts" is an hour of manual sourcing, then another hour catching duplicates and bounced emails afterward. This agent wires the actual gap — the specific persona a target account is missing — to a sourced, validated, review-ready contact list, instead of a generic name export.
Core signals
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://deploytheagent.com/schemas/agent-005-input.schema.json",
"title": "Agent #005 Prospect List Builder Input",
"type": "object",
"required": [
"record_id"
],
"properties": {
"record_id": {
"type": "string",
"description": "CRM record ID (company/contact/deal depending on agent)."
},
"domain": {
"type": "string"
},
"config_version": {
"type": "string",
"description": "Versioned config used for this run."
}
},
"additionalProperties": true
}Output schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://deploytheagent.com/schemas/agent-005-output.schema.json",
"title": "Agent #005 Prospect List Builder Output",
"type": "object",
"required": [
"record_id",
"prospect_relevance_score",
"prospect_source",
"prospect_duplicate_flag",
"prospect_approval_status"
],
"properties": {
"record_id": {
"type": "string"
},
"prospect_relevance_score": {
"type": "string",
"description": "Agent #005 output field."
},
"prospect_source": {
"type": "string",
"description": "Agent #005 output field."
},
"prospect_duplicate_flag": {
"type": "string",
"description": "Agent #005 output field."
},
"prospect_approval_status": {
"type": "string",
"description": "Agent #005 output field."
}
},
"additionalProperties": false
}Scoring / classification logic
Relevance score is the product of persona-match weight and deliverability weight, capped 0–100. Candidates below a configured relevance floor (default 40) aren’t surfaced at all — the review list stays high-signal instead of exhaustive, so SDRs aren’t wading through weak matches.
HubSpot CRM properties
n8n workflow skeleton
The Prospect List Builder sources persona-specific contacts for the buying-committee gaps Agent #002 finds, validates and dedupes them, and hands SDRs a review-ready list instead of a raw export from a sourcing tool. Configure every node marked CONFIGURE before enabling the trigger.
- TriggerCONFIGURE: set cadence per agent-spec.md's What It Does section. Leave disabled until Step 6 of deployment-guide.md.
- Load versioned configCONFIGURE: replace with your versioned config built from real data (see deployment-guide.md Step 1).
- Fetch source dataCONFIGURE: {{HUBSPOT_CREDENTIAL}}. Pull the fields listed in agent-spec.md's Inputs table.
- Validate + gate recordsDrops records missing required inputs or failing suppression/gate checks defined in agent-spec.md. Logs every drop.
- Apply workflow logicImplements the Workflow Logic table from agent-spec.md. Writes model/config version alongside every derived value for auditability.
- Write agent-owned CRM fieldsCONFIGURE: {{HUBSPOT_CREDENTIAL}}. Writes only: prospect_relevance_score, prospect_source, prospect_duplicate_flag, prospect_approval_status. Never writes sales-owned fields.
- Route to human review / alertCONFIGURE: {{SLACK_CHANNEL}}. Fires for records requiring human review per agent-spec.md's Governance section.
Cost calculator
Cost Calculator — Agent #005: Prospect List Builder
Fill in your own volumes and rates — do not use these as benchmark numbers.
| Cost driver | Your volume | Unit cost | Monthly cost |
|---|---|---|---|
| n8n execution (workflow runs) | ___ runs/month | $___ / run | $___ |
| Enrichment/sourcing credits (if applicable) | ___ records/month | $___ / record | $___ |
| LLM API calls (if applicable) | ___ calls/month | $___ / call | $___ |
| Human review time | ___ hrs/month | $___ / hr (loaded) | $___ |
| Total | $___ |
Build cost (one-time)
Estimated build time: 0.5–1 day. Multiply by your builder's loaded hourly rate for a one-time build-cost estimate.
Notes
Costs scale with the volume of records this agent processes, not with the size of your whole CRM — scope your volume estimate to the specific object/list this agent actually touches (see `agent-spec.md`'s Inputs table).
ROI calculator
ROI Calculator — Agent #005: Prospect List Builder
| Metric | Before | After | Basis |
|---|---|---|---|
| Manual sourcing time per account | ~30–45 min | ~2 min review per candidate | Sourcing + validation automated, review only |
| Duplicate contacts created | Common without a dedup check | Flagged before creation | Dedup check runs pre-CRM |
| Persona-fit accuracy | Rep judgment on a name list | Config-driven relevance score | Same mapping applied consistently |
Time savings are direct; contact-to-opportunity conversion by persona should be tracked in your own CRM to validate the persona mapping over time.
Your numbers
| Input | Value |
|---|---|
| Records processed per month | ___ |
| Manual time saved per record (before) | ___ min |
| Loaded hourly rate | $___ |
| Monthly time-savings value | $___ (records × minutes saved ÷ 60 × rate) |
Compare this to the cost calculator's monthly total for a net ROI. Do not add a revenue-impact number unless you've measured it against your own baseline — see `agent-spec.md`'s ROI note.
Governance notes
- The agent never creates a CRM contact without explicit human approval in the review list — sourcing and CRM creation are two separate steps by design.
- Suppressed and unsubscribed individuals are never sourced or surfaced, full stop, regardless of how good a persona match they might otherwise be.
- Every candidate stores its source (Clay, Apollo, Sales Navigator) and relevance score, so a reviewer can see why a name showed up.
- Batch size matters for adoption, not just cost — small batches keep the human review step from becoming a backlog nobody clears.
Failure modes
- Contacts created without review: the workflow deliberately has no contact-create node — creation only happens through a separate, manually-triggered approved-list flow.
- Suppressed contact sourced anyway: the suppression check is the first node in the pipeline, not the last, specifically to prevent this.
- Low-relevance candidates flooding the list: a QA test asserts nothing below the configured relevance floor ever appears in the output.
- Rubber-stamp approvals: if SDRs start approving without reading, that’s a signal the relevance scoring needs to be tighter — not a reason to skip the review step.
QA checklist
QA Checklist — Agent #005: Prospect List Builder
To be completed by a non-builder reviewer before go-live.
Deployment checklist
- ☐ Persona-to-title mapping config written from real closed-won data
- ☐ Suppression check verified against a test suppressed contact
- ☐ n8n workflow imported, marked nodes configured
- ☐ Demo-data run matches `demo-data/sample-output.json`
- ☐ Dedup check tested against an existing CRM contact
- ☐ Review list approval flow tested end to end
- ☐ QA checklist completed by a non-builder
- ☐ Rollback tested
Failure-mode verification
- ☐ Verified: Contacts auto-created without review does not occur (mitigation: n8n workflow has no contact-create node; creation lives in a separate, manually-triggered approved-list flow)
- ☐ Verified: Suppressed contact sourced does not occur (mitigation: Suppression filter is the first node in the pipeline, not the last)
- ☐ Verified: Low-relevance candidates flood the list does not occur (mitigation: QA test asserts no candidate below config threshold appears in output)
- ☐ Verified: Duplicate created despite flag does not occur (mitigation: QA checklist includes a manual duplicate-flag spot check before approval)
Governance verification
- ☐ Agent writes only to its agent-owned fields: `prospect_relevance_score`, `prospect_source`, `prospect_duplicate_flag`, `prospect_approval_status` (review-list contact records, pre-CRM)
- ☐ No auto-send, auto-close, auto-route, or auto-create action occurs without the human step described in `agent-spec.md`
- ☐ Confidence/model-version is present on every written record where applicable
- ☐ Demo-data run output matches `demo-data/sample-output.json` in structure
Sign-off
Reviewer name: _______________ Date: _______________ Result: Pass / Fail (attach notes)