Sales Dev Agent Spec
How do we think slowly so the agent gets smarter and the outreach gets cleaner each cycle?
Intent Contract
Agent autonomy boundary. Not parsed by engineering — governance instrument for humans and agents.
| Dimension | Statement |
|---|---|
| Objective | AI-powered sales development agent that finds qualified prospects, scores them, composes personalized outreach, and sequences follow-ups — so human time goes to discovery calls, not research and admin. |
| Outcomes | 1. 10+ prospects researched and scored per week. 2. Reply rate >15% on agent-drafted outreach. 3. 5 discovery calls/month from agent-sourced pipeline. |
| Health Metrics | CRM data integrity (no orphaned activities). Email deliverability >95%. LinkedIn account not flagged. SPCL score floor maintained. |
| Constraints | Hard: Human reviews every message before send. No automated sending without approval. Steering: Qualify before contact — research depth over volume. |
| Autonomy | Allowed: Research, scoring, draft composition, sequencing logic. Escalate: ICP changes, new channel addition. Never: Send without human review, delete CRM data, modify prospect contact preferences. |
| Stop Rules | Complete when: 50 messages sent with channel performance data. Halt when: 50 messages, 0 replies, 30 days — ICP or message is wrong. |
Build Contract
The deliverable. Engineering builds from this. Commissioning reads this. Every row has an acceptance test.
Job: Research and Score Prospects
| # | Function | Artifact | Verification | Value | State |
|---|---|---|---|---|---|
| 1 | Research prospect from company name via DocumentIntelligence | Prospect profile generator + research output | "Acme Construction" returns structured profile with pain points in <60s | 5 prospects in 60s, not 3 hours | Gap |
| 2 | Score ICP fit via sales-forecasting + explore-exploit | Lead scoring algorithm + ranked output | 10 prospects ranked by fit with reasoning; top 5 correlate with actual interest | Know which 5 of 20 deserve a call | Dormant |
Job: Compose Personalized Outreach
| # | Function | Artifact | Verification | Value | State |
|---|---|---|---|---|---|
| 3 | Draft personalized message from research + ICP pain mapping | Outreach composer endpoint + draft UI | Draft references specific prospect pain; scores >3.5 SPCL before review | Messages worth reading, not templates | Gap |
| 4 | Score draft quality before human review | SPCL quality gate algorithm + score display | Gate blocks drafts scoring <3.0; human override available with reason | Never send robot-speak | Dormant |
Job: Deliver Through Channels
| # | Function | Artifact | Verification | Value | State |
|---|---|---|---|---|---|
| 5 | Multi-touch cadence via CRM tasks + adapters | Follow-up sequencer + task creator | Sequence creates 3 CRM tasks at Day 3, Day 7, Day 14 with correct content | Follow-ups on schedule, not memory | Gap |
| 6 | Send via Resend with tracking (config only) | Resend integration + webhook handler | Email delivered, open tracked, click tracked — all visible in CRM activity | Know: delivered, opened, clicked | Built |
| 7 | LinkedIn post/connect/message via real API + OAuth | LinkedIn adapter + OAuth flow | Real post published, connection sent, both logged to CRM automatically | Multi-channel, one system | Partial |
| 8 | Auto-log every touchpoint to CRM | CRM activity logger | Send email -> activity row appears on contact + deal timeline within 60s | Full history, no data entry | Dormant |
Job: Learn What Converts
| # | Function | Artifact | Verification | Value | State |
|---|---|---|---|---|---|
| 9 | Track send/open/reply by channel, segment, type | Channel performance dashboard | Real data visible within 24h of first send; filter by channel and segment | Learn what converts | Gap |
| 10 | Test variants, shift budget to what converts | Explore-exploit algorithm + variant tracker | After 50+ messages, algorithm recommends top-performing variant with confidence | Outreach improves itself | Dormant |
| 11 | Track agent-sourced deals and touch-to-meeting time | Pipeline acceleration metrics | Dashboard shows: agent-sourced vs manual, avg touches to meeting | Prove revenue impact | Dormant |
Job: Agent Identity and Orchestration
| # | Function | Artifact | Verification | Value | State |
|---|---|---|---|---|---|
| 12 | SOUL memory with sales playbook, ICP context, learning history | Agent profile JSON + ETL loader | Profile loads via agent-etl-cli; recall returns relevant context for prospect | Context, personality, learning | Gap |
| 13 | End-to-end WorkChart: Research, Score, Compose, Sequence, Measure | WorkChart orchestrator | Company name in -> scored prospect + draft + sequence out, with human gate | End-to-end orchestration | Gap |
Principles
What truths constrain how this agent operates?
The Job
| Element | Detail |
|---|---|
| Situation | Kill date is 15 days away and there are zero paying customers. 9 algorithms built, none generating demand. |
| Intention | Agent surfaces, scores, drafts, and sequences — so human time goes to discovery calls, not research and admin. |
| Obstacle | No prospect research pipeline. No outreach quality gate wired. No channel performance data to learn from. |
| Hardest Thing | Agent composes but human must trust enough to send. If review friction is too high, human bypasses agent entirely. |
Hidden objection: "AI outreach feels spammy." Agent composes — human reviews every message before send. Research is automated, relationships are not.
Why Now
The product is ready. The demand generation isn't. Nine algorithms, four adapters, a CRM, an RFP tool — all built, none generating demand. The outreach IS the commissioning test.
The convergence: Eddy Whatt at Sneakers Media identified the same pattern from the buy side. Every lead gen provider delivers volume, not quality.
OLD: Advertiser -> Agency -> Lead Gen Provider -> Database -> Leads (unqualified)
NEW: Advertiser -> Agent -> Pre-Qualified Leads (with conversation context)
The NZ angle: Small market (5M) makes lead gen quality critical. Relationship-based culture means bad leads damage agency reputation.
Design Constraints
| Constraint | Rationale |
|---|---|
| Human reviews every message | Hidden objection: "AI outreach feels spammy." Trust requires oversight. |
| Qualify before contact | Research depth over volume. Pre-qualify through conversation, not scraping. |
| Agent learns from every cycle | Explore-exploit adapts channels and copy. Each week's outreach is better. |
| Two ICPs, one WorkChart | Internal dogfood + Sneakers Media — same instrument, different ventures. |
Performance
How do we know it's working?
Priority Score
PRIORITY = Pain x Demand x Edge x Trend x Conversion
| Dimension | Score (1-5) | Evidence |
|---|---|---|
| Pain | 4 | 9 algorithms x 0 UI = 0 value. 15 days to kill date. 3hrs/week manual research. Sneakers confirms volume-not-quality. |
| Demand | 4 | Sneakers independently identified same problem. 5 test clients (HRV, Kitchen Studio, Asset Factory, BizCover, MAS). |
| Edge | 3 | Three Flows convergence. Existing platform (9 algos, CRM, adapters) = composition advantage. No proprietary data yet. |
| Trend | 5 | AI SDR is hottest B2B SaaS category. Every lead gen provider will be AI-native within 2 years. |
| Conversion | 2 | CPL model clear. No pricing tested, no pilot signed, no invoice sent. |
| Composite | 480 | Strong candidate. Demand and trend validated, conversion needs proof. |
Quality Targets
Functional:
| # | Criterion | Verification | Job |
|---|---|---|---|
| F1 | Prospect profile from company name in <60s | Timed test | Research |
| F2 | 10 prospects ranked by ICP fit with reasoning | Output check | Research |
| F3 | Draft scores >3.5 SPCL before human review | Automated gate | Compose |
| F4 | Follow-up creates CRM tasks with correct timing | CRM check | Deliver |
| F5 | Email delivery + open tracking end-to-end | Resend webhook | Deliver |
| F6 | Channel dashboard shows real data within 24h | Data check | Learn |
Outcome (Kill: 2026-03-24):
| # | Criterion | Target | Now |
|---|---|---|---|
| O1 | Prospects researched and scored/week | >= 10 | 0 |
| O2 | Reply rate on agent-drafted outreach | >= 15% | N/A |
| O3 | Scored contacts in CRM pipeline | >= 20 | 0 |
| O4 | Follow-up completion rate | >= 90% | N/A |
Failure Budget
| Failure Type | Budget | Response |
|---|---|---|
| Email bounce | <5% | Check domain reputation, fix immediately |
| LinkedIn flag | 0% | Halt all LinkedIn actions, investigate |
| Wrong ICP outreach | <10% | Review scoring algorithm, tighten ICP criteria |
| SPCL gate bypass | 0% | Human override logged with reason — pattern = fix gate |
Kill signal: 50 messages, 0 replies, 30 days — ICP or message is wrong. Diagnose with explore-exploit data before iterating.
Business Dev
| Layer | Decision | Assumption | Evidence Needed |
|---|---|---|---|
| ICP | Who first? | Construction/solar EPC, 10+ staff, active RFPs, spreadsheet pain | 5 calls where they name the pain unprompted |
| Offer | Opening message? | "Win more bids. Your answer library compounds." | Reply rate >15% |
| Channel | How to reach? | LinkedIn + personalized email | Compare reply rates by channel |
| Proof | What earns a meeting? | Industry RFP pain + live auto-fill demo | Meeting-to-pilot >30% |
| Conversion | What closes? | Free 30-day pilot on one real RFP | Pilot-to-paid >20% |
Platform
What do we control directly?
Current State
This agent is one instrument in the SPO orchestra.
| Component | Built | Wired | Working | Notes |
|---|---|---|---|---|
| CRM Contacts + Deals | Yes | Yes | Yes | Live |
| CRM Activities + Tasks | Yes | Yes | Partial | Activity logging needs testing |
| Sales Forecasting Algo | Yes | No | No | Wire to scoring pipeline |
| Explore-Exploit Algo | Yes | No | No | Needs 50+ messages data |
| SPCL Scoring Algo | Yes | No | No | Wire to outreach composer |
| Compound Rate Tracking | Yes | No | No | Wire to channel dashboard |
| Email Adapter (Resend) | Yes | Yes | Yes | Live — delivery + tracking |
| LinkedIn Adapter | Yes | Partial | Partial | OAuth pending real API |
| Document Intelligence | Yes | Yes | Yes | Live — prospect research |
Build Ratio
~80% composition (Email, LinkedIn, CRM, Forecasting, Document Intelligence), ~20% new code (WorkChart orchestration, prospect research pipeline, channel dashboard).
Protocols
How does the system coordinate?
Agent/Human Split
AGENT (AI-Led + AI-Only) HUMAN (Human-Led + Human-Only)
---------------------------- ----------------------------
Prospect research Discovery calls
Lead scoring + ranking Relationship building
Outreach drafting Message review + send
Follow-up sequencing Deal negotiation
Activity logging Go/No-Go decisions
Channel optimization Trust building
WorkChart
RESEARCH -> SCORE -> COMPOSE -> SEQUENCE -> MEASURE
^ |
+---- Feedback improves next cycle ------+
| Score | Route | Agent Action | Human Action |
|---|---|---|---|
| Hot (>80%) | Direct | Personalized email + LinkedIn connect | Review, personalize, send |
| Warm (50-80%) | Nurture | 3-touch sequence | Review sequence, approve |
| Cold (<50%) | Content | Distribution list, no direct outreach | Monthly review for warming |
Build Order
| Sprint | Features | What | Effort | Acceptance |
|---|---|---|---|---|
| -1 | #6, #7, #8 | Prove channels: Resend config, LinkedIn OAuth, CRM auto-log | 3d | Real email delivered + opened. Real LinkedIn post. Both logged to CRM. |
| S0 | #12, #1 | Agent profile + prospect research | 3.5d | "Acme Construction" returns profile with pain points in <60s |
| S1 | #2, #3, #4 | Score + compose + quality gate | 5d | 10 ranked, draft >3.5 SPCL, references prospect pain |
| S2 | #5, #13 | Sequencer + WorkChart orchestration | 5d | Company name in -> end-to-end with human review step |
| S3 | #9 | Channel performance dashboard | 1d | Real send/open/reply within 24h |
| Park | #10, #11 | Explore-exploit + pipeline acceleration | -- | Needs 50+ messages volume data |
Commissioning
| # | Feature | Schema | API | UI | Tests | % |
|---|---|---|---|---|---|---|
| 1 | Prospect Research | Pending | Pending | Pending | Pending | 0% |
| 2 | Lead Scoring | Pending | Pending | Pending | Pending | 0% |
| 3 | Outreach Composer | Pending | Pending | Pending | Pending | 0% |
| 4 | SPCL Quality Gate | Done | Pending | Pending | Pending | 15% |
| 5 | Follow-up Sequencer | Pending | Pending | Pending | Pending | 0% |
| 6 | Email Delivery | Done | Done | Done | Done | 95% |
| 7 | LinkedIn Actions | Done | Done | Done | Pending | 85% |
| 8 | CRM Activity Logging | Done | Done | Partial | Pending | 50% |
| 9 | Channel Performance | Pending | Pending | Pending | Pending | 0% |
| 10 | Explore-Exploit | Done | Pending | Pending | Pending | 15% |
| 11 | Pipeline Acceleration | Partial | Partial | Pending | Pending | 10% |
| 12 | Agent Profile | Pending | Pending | N/A | Pending | 0% |
| 13 | Outreach WorkChart | Pending | Pending | N/A | Pending | 0% |
Horizon Model
HORIZON 1: PROVE (now -> 90 days) <- THIS PRD
Sales Dev Agent — one instrument
| feeds
v
HORIZON 2: ORCHESTRATE (90d -> 6 months)
Sales Process Optimisation — the orchestra
| generates data for
v
HORIZON 3: PROTOCOL (6m -> 18 months)
Trust Commerce — the protocol
Risks
| Risk | Mitigation |
|---|---|
| LinkedIn app approval delayed | Register day 1 of Sprint -1. Manual-publish fallback. |
| AI outreach feels spammy | Human reviews every message. SPCL gate enforces floor. |
| Construction ICP unresponsive | Test solar EPC in parallel. Explore-exploit switches. |
| Agent slower than manual | Start manual now. Agent replaces when ready. |
| Calls don't convert to pilots | Product/pitch problem, not agent. Separate kill signal. |
Agent-Facing Spec
Commands:
pnpm nx serve stackmates # Dev server
pnpm nx test stackmates # Unit tests
pnpm nx e2e stackmates-e2e # E2E tests
Boundaries: Always: research, scoring, draft composition. Ask first: new channel integration, ICP changes. Never: send without human review, delete CRM data.
Players
Who creates harmony?
Demand-Side Jobs
Job 1: Find Prospects Worth Talking To
Situation: Pipeline empty, 3 hours to find 5 prospects, then equal time on high-fit and low-fit.
| Element | Detail |
|---|---|
| Struggling moment | 3 hours to find 5 prospects, then equal time on high-fit and low-fit |
| Current workaround | LinkedIn search, industry events, chase whoever responds |
| What progress looks like | Agent surfaces 10 scored/week ranked by ICP fit with recommended action |
| Hidden objection | "AI-found prospects won't be as good as my network referrals" |
| Switch trigger | Pipeline empty AND 4 of 5 calls with wrong buyer persona |
Features that serve this job: #1, #2
Job 2: Say Something Worth Reading
Situation: Blank compose window, writing same ineffective message.
| Element | Detail |
|---|---|
| Struggling moment | Blank compose window, writing same ineffective message |
| Current workaround | Copy template, change name, hope |
| What progress looks like | Agent drafts from research + pain points, human reviews and sends |
| Hidden objection | "AI messages sound like AI messages" |
| Switch trigger | 50 emails, 0 replies |
Features that serve this job: #3, #4
Job 3: Follow Up Without Forgetting
Situation: Meant to follow up Wednesday, it's Friday, window closing.
| Element | Detail |
|---|---|
| Struggling moment | Meant to follow up Wednesday, it's Friday, window closing |
| Current workaround | Mental note, calendar reminder, hope |
| What progress looks like | Agent schedules: Day 3 email, Day 7 LinkedIn, Day 14 value-add |
| Hidden objection | "Automated follow-up feels like spam" |
| Switch trigger | Warm prospect goes cold because nobody followed up for 2 weeks |
Features that serve this job: #5, #6, #7, #8
Job 4: Learn What Converts
Situation: Month of outreach, no idea what worked.
| Element | Detail |
|---|---|
| Struggling moment | Month of outreach, no idea what worked |
| Current workaround | Remember which emails "felt good" |
| What progress looks like | Dashboard: sent, opened, replied, meetings — by channel, segment, type |
| Hidden objection | "Not enough volume for data to be meaningful" |
| Switch trigger | Same approach keeps failing, no data to diagnose |
Features that serve this job: #9, #10, #11
Job 5: Pre-Qualify for Media Clients
Situation: Every lead gen campaign: volume not quality. Client sales team complains. Agency absorbs blame.
| Element | Detail |
|---|---|
| Struggling moment | Every lead gen campaign: volume not quality. Client sales team complains. Agency absorbs blame. |
| Current workaround | Pad volume, rotate providers, absorb complaints |
| What progress looks like | Agent qualifies via conversation before handover — leads arrive with context |
| Hidden objection | "Every AI tool promises better leads — heard it before" |
| Switch trigger | Client threatens to pull media budget because leads waste their time |
Features that serve this job: #1, #2, #3, #5
ICP: NZ Media Agency
Archetype. Sneakers Media exemplifies the segment.
| Attribute | Specification |
|---|---|
| Role | Agency owner/MD or media director |
| Context | NZ media agency, 5-50 staff, $500K-$20M annual media spend |
| Geography | New Zealand, primarily Auckland and Wellington |
| Shared Pain | Lead gen = volume, not quality. Client teams complain. Agency reputation hit. |
Psycho-logic:
| They Say | They Mean |
|---|---|
| "Lead quality is always poor" | "We get blamed after handover" |
| "We need to test it first" | "Show proof, not promises" |
| "Our client's sales team complains" | "When they complain, our contract is at risk" |
The real problem: Not "higher quality leads" — leads their client's sales team doesn't complain about. The complaint loop costs more than the CPL.
Revenue model: Pilot CPL ($20-100/lead) -> Platform competing with lead gen providers -> Partnership (media + creative + AI/data).
Two Deployment Contexts
Same WorkChart, different jobs. One instrument, multiple ventures. BOaaS proven.
| Context | ICP | Job | Revenue Path |
|---|---|---|---|
| Internal (dogfood) | Construction/solar EPC | Discovery calls for Stackmates | Product validation + first customer |
| External (Sneakers) | NZ homeowners via HRV | Pre-qualified leads for agency clients | CPL from existing media budgets |
Role Definitions
| Role | Access | Permissions |
|---|---|---|
| Sales Dev Agent | Full research + compose pipeline | Read CRM, create activities, draft messages |
| Sales Rep | Review + send pipeline | Approve drafts, send messages, log outcomes |
| Sales Director | Dashboard + configuration | View performance, adjust ICP, set targets |
Relationship to Other PRDs
| PRD | Relationship | Data Flow |
|---|---|---|
| Sales CRM & RFP | Peer (consumer) | CRM contacts/deals <- agent-sourced prospects |
| Agent Platform | Platform (depends) | Agent identity, memory, dispatch |
| Identity & Access | Platform (depends) | Auth for API access |
| ETL Data Tool | Peer (feeds) | Enriched business data -> prospect research |
| Sales Process Optimisation | Parent (Horizon 2) | This agent feeds the orchestra |
| Trust Commerce | Grandparent (H3) | Orchestra generates data for the protocol |
Context
- PRD Index — Sales Development Agent
- Prompt Deck — 5-card pitch
- Pictures — Pre-flight maps