Outbound Account Prioritizer
🟡 GrowthRanks outbound accounts daily using fit, tier, intent, engagement, contact coverage, and freshness
Adam's take
SDRs lose their mornings to deciding who to call. Hand them a ranked list and watch activity quality change within a week.
Required tools
Optional tools
Expected value
SDRs start each day with a ranked list; less time deciding, more time executing
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
SDRs lose the first 20 minutes of every shift deciding who to call. The inputs to make that decision well already exist — fit tier, buying-committee coverage, intent recency — scattered across other agents’ output fields. This agent does the arithmetic every morning so a rep opens one ranked list instead of assembling one from four dashboards.
Core signals
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://deploytheagent.com/schemas/agent-004-input.schema.json",
"title": "Agent #004 Outbound Account Prioritizer 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-004-output.schema.json",
"title": "Agent #004 Outbound Account Prioritizer Output",
"type": "object",
"required": [
"record_id",
"outbound_priority_rank",
"outbound_priority_reason",
"outbound_list_date"
],
"properties": {
"record_id": {
"type": "string"
},
"outbound_priority_rank": {
"type": "string",
"description": "Agent #004 output field."
},
"outbound_priority_reason": {
"type": "string",
"description": "Agent #004 output field."
},
"outbound_list_date": {
"type": "string",
"description": "Agent #004 output field."
}
},
"additionalProperties": false
}Scoring / classification logic
Ties within a tier break by freshness — the least-recently-touched account first. Every ranked account carries a short, generated reason string (e.g. "Tier 1, intent signal 2 days ago, not touched in 6 days") so a rep sees why an account is ranked where it is, not just a bare number.
HubSpot CRM properties
n8n workflow skeleton
The Outbound Account Prioritizer turns the account priority score, tier, intent signals, and contact/committee coverage into a single ranked daily outbound list. SDRs open one list instead of assembling their own from four dashboards. 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: outbound_priority_rank, outbound_priority_reason, outbound_list_date. 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 #004: Outbound Account Prioritizer
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: 1–2 hours. 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 #004: Outbound Account Prioritizer
| Metric | Before | After | Basis |
|---|---|---|---|
| SDR time deciding who to call | ~20 min/day | ~0 min, list is ready | Ranking automated |
| Tier 1 account coverage | Uneven, rep-dependent | Tracked daily via rank + reason | Consistent formula applied daily |
| New SDR ramp | Weeks to learn account judgment | Ranked list from day one | Formula encodes the judgment |
Time savings are direct; pipeline-quality lift should be measured against your own historical outbound conversion by tier.
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
- This is a ranked suggestion list, not an assignment lock — reps can skip or reorder without any workflow override.
- Suppressed and unsubscribed accounts are filtered out before ranking even runs, not after — they never appear on the list at all.
- The agent never writes to deal-stage or lifecycle fields; its only outputs are the rank, the reason, and the list date.
- Every day’s list is dated and logged, so a rep’s "why was I working this account" question always has a documented answer.
Failure modes
- Same accounts rank #1 every day: usually means the freshness penalty isn’t actually being applied — caught by a QA test that confirms recently-touched accounts drop in rank.
- Suppressed accounts sneak onto the list: the suppression filter has to run before ranking, not after, or a suppressed account can slip through on a technicality.
- A generic, non-specific reason string: if the "why ranked here" text is the same boilerplate for every account, it isn’t doing its job of building rep trust in the list.
QA checklist
QA Checklist — Agent #004: Outbound Account Prioritizer
To be completed by a non-builder reviewer before go-live.
Deployment checklist
- ☐ Ranking weights config written and versioned
- ☐ Three HubSpot company properties created
- ☐ n8n workflow imported, marked nodes configured
- ☐ Demo-data run matches `demo-data/sample-output.json`
- ☐ Suppression filter verified against a test suppressed account
- ☐ Daily Slack digest lands in each pod's channel
- ☐ QA checklist completed by a non-builder
- ☐ Rollback tested
Failure-mode verification
- ☐ Verified: Same accounts rank #1 every day does not occur (mitigation: QA test asserts touched accounts drop in rank)
- ☐ Verified: Suppressed accounts appear on list does not occur (mitigation: Suppression filter runs before ranking, not after)
- ☐ Verified: Rank reason is empty or generic does not occur (mitigation: QA checks reason string is non-empty and account-specific)
Governance verification
- ☐ Agent writes only to its agent-owned fields: `outbound_priority_rank`, `outbound_priority_reason`, `outbound_list_date` (company)
- ☐ 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)