Skip to main content

Sales Development Agent

What's the smallest move that gets a stranger to say "tell me more"?


The Job

When the kill date is 28 days away and there are zero paying customers, help the founder find qualified prospects, score them, compose personalized outreach, and sequence follow-ups — so human time goes to discovery calls, not research and admin.

Trigger EventCurrent FailureDesired Progress
Need 5 discovery calls this monthManual LinkedIn browsing, scattered email, no systemAgent surfaces prospects, scores fit, drafts outreach, sequences follow-up
RFP opportunity identifiedFounder writes cold email from scratch each timeAgent pulls ICP data, composes personalized message, schedules across channels
Discovery call completedNotes in a notebook, follow-up forgottenAgent logs activity to CRM, creates follow-up tasks, updates deal probability
No pipeline visibilityGut feeling about which prospects are warmAgent scores leads using sales-forecasting algo, surfaces recommendations
Outreach going unansweredSame message to everyone, no adaptationAgent uses explore-exploit to test channels and messages, doubles down on what converts

The job: "I need 5 qualified conversations this month with construction/solar teams who have active RFP volume and spreadsheet pain."

The hidden objection: "AI outreach feels spammy." The agent must compose messages that a human would send — not templates with merge fields. The human reviews every outreach before send. The agent handles research, scoring, drafting, and timing. The human handles judgment, relationship, and trust.


Why This, Why Now

28 days to kill date
0 paying customers
9 algorithms x 0 UI = 0 value
CRM built, RFP built, email built, LinkedIn built
Nobody is using any of it to generate demand

The product is ready. The demand generation isn't. This agent composes existing infrastructure into a demand generation machine.

The dogfooding principle: We are building a sales and marketing tool. If we can't use our own system to sell itself, the product doesn't work as advertised. Track 3 (founder outreach using the CRM) starts immediately — every friction point found is a bug, every smooth interaction is a proof point. The outreach IS the commissioning test.

Components Used

This agent is one instrument in the Sales Process Optimisation orchestra. See SPO's composition inventory for the full platform stack.

ComponentRole in This Agent
CRM Contacts + DealsProspect database, deal pipeline
CRM Activities + TasksActivity logging, follow-up tracking
Sales Forecasting AlgoLead scoring, pipeline prediction
Explore-Exploit AlgoChannel/message optimization
SPCL Scoring AlgoOutreach message quality gate
Compound Rate TrackingEngagement velocity measurement
Email Adapter (Resend)Email delivery + tracking
LinkedIn AdapterPost/connect/message + analytics
Document IntelligenceProspect research, doc analysis

Build ratio: ~80% composition, ~20% new code (new code is a subset of SPO's 25%).


Demand-Side Jobs

Job 1: Find and Score Prospects Worth Talking To

Situation: A founder knows their ICP — construction and solar EPC teams with active RFP volume. But finding specific companies requires hours of browsing, and once found, there's no system to rank which 5 of 20 deserve a call this week. The agent finds AND scores in one workflow — that's what the WorkChart shows.

ElementDetail
Struggling momentSpending 3 hours to find 5 prospects, then equal time on high-fit and low-fit
Current workaroundLinkedIn search, industry events, chase whoever responds regardless of fit
What progress looks likeAgent surfaces 10 scored prospects per week, ranked by ICP fit using SPO's 4-layer model, with recommended action per prospect
Hidden objection"AI-found prospects won't be as good as my network referrals" / "Scoring feels cold — I trust my instincts"
Switch triggerWhen the pipeline is empty AND 4 of 5 discovery calls are with the wrong buyer persona

Job 2: Say Something Worth Reading

Situation: A founder drafts a cold outreach email. It's either too generic ("I'd love to explore synergies") or too salesy ("We can save you 83% on RFP time"). Neither gets a reply.

ElementDetail
Struggling momentStaring at a blank compose window, writing the same ineffective message
Current workaroundCopy a template, change the name, hope for the best
What progress looks likeAgent drafts personalized outreach using prospect research + ICP pain points, human reviews and sends
Hidden objection"AI-written messages sound like AI-written messages"
Switch triggerWhen 50 emails get 0 replies

Job 3: Follow Up Without Forgetting

Situation: A prospect opened the email but didn't reply. The founder meant to follow up on Wednesday. It's now Friday. The window is closing.

ElementDetail
Struggling momentFollow-up falls through the cracks because there's no system
Current workaroundMental note, calendar reminder, hope
What progress looks likeAgent schedules follow-up sequence: Day 3 email, Day 7 LinkedIn connect, Day 14 value-add content
Hidden objection"Automated follow-up feels like spam"
Switch triggerWhen a warm prospect goes cold because nobody followed up for 2 weeks

Job 4: Learn What Converts

Situation: After a month of outreach, the founder has no idea which messages worked, which channels converted, or which ICP segment responded. Every week starts from zero.

ElementDetail
Struggling momentNo feedback loop between outreach and outcomes
Current workaroundRemember which emails "felt good"
What progress looks likeDashboard showing: messages sent, opened, replied, meetings booked — by channel, by segment, by message type
Hidden objection"I don't have enough volume for data to be meaningful"
Switch triggerWhen the same approach keeps failing and there's no data to diagnose why

The Agent Architecture

This agent follows the Sales Work Chart's AI Transformation Spectrum. The agent handles AI-Led and AI-Only jobs. The human handles Human-Led and Human-Only jobs.

AGENT HANDLES (AI-Led + AI-Only)          HUMAN HANDLES (Human-Led + Human-Only)
───────────────────────────────── ──────────────────────────────────────
Prospect research Discovery calls
Lead scoring + ranking Relationship building
Outreach drafting Message review + personalization
Follow-up sequencing Deal negotiation
Activity logging Account strategy
Channel optimization Trust building
CRM data hygiene Go/No-Go decisions
Email/LinkedIn scheduling Executive selling
Engagement tracking Pilot onboarding
Pipeline reporting Pricing conversations

WorkChart: Outreach Sequencing

New WorkChart following the RFP workflow pattern. Five stages, adaptive routing by lead score.

STAGE 1: RESEARCH              STAGE 2: SCORE              STAGE 3: COMPOSE
Prospect Intelligence → Lead Scoring → Outreach Drafting
Input: Company + ICP Input: Research data Input: Score + research
Uses: DocumentIntel Uses: sales-forecasting Uses: SPCL scoring
Output: Prospect profile + explore-exploit Output: Draft message
Output: Fit score + rec (email or LinkedIn)

STAGE 4: SEQUENCE STAGE 5: MEASURE
Follow-up Cadence → Feedback Loop
Input: Draft + score Input: Send/open/reply data
Uses: CRM tasks + email Uses: compound-rate-tracking
+ LinkedIn adapters + explore-exploit
Output: Scheduled sequence Output: Channel performance
(human approves before send) + message effectiveness

Routing Logic (Adaptive)

Lead ScoreRouteAgent ActionHuman Action
Hot (>80%)Direct outreachDraft personalized email + LinkedIn connect requestReview, personalize, send
Warm (50-80%)Nurture sequenceDraft 3-touch sequence (email → LinkedIn → value content)Review sequence, approve
Cold (<50%)Content-onlyAdd to content distribution list, no direct outreachReview monthly for warming signals

Agent Profile — Phygital Being

The Sales Dev Agent is a phygital being — same pattern as Truth Terminal, AIXBT, Luna. Public identity lives in the dream repo at /docs/players/phygital-beings/. Engineering loads the profile via the Agent Platform ETL CLI.

Dependency: Agent Continuity PRD Sprint 0 — add --path flag to agent-etl-cli.ts so new agents can load from any filesystem location. This is a ~20 line change that unblocks all future agent profiles.

Profile location (dream repo): docs/players/phygital-beings/sales-dev-agent/

Profile data (8 JSON files following existing convention):

FilePurposeContent Source
profile.jsonCore identity (name, type, mindset, pepeha)This PRD
character.jsonPersonality traitsSales Work Chart — HiTL salesperson
drivers.jsonMotivations and triggersKill date metrics: discovery calls, reply rate, pipeline
capabilities.jsonSkill levels by domainFeature/Function/Outcome table above
working-memory.jsonActive cognitive workspace (4-7 slots)Current prospects, active sequences, pipeline state
semantic-memory.jsonFacts, concepts, principlesIndustry knowledge (construction, solar), ICP profiles, competitor landscape
procedural-memory.jsonSkills with steps and success ratesSales playbook, outreach templates, follow-up cadences, qualification checklist
episodic-memory.jsonSession experiencesDiscovery call outcomes, outreach results, learning
FieldValue
TypeAI Agent
Mindset"Find the people who need what we've built, and earn the right to a conversation"
CapabilitiesProspect research, lead scoring, outreach composition, sequence management, CRM hygiene
Procedural MemorySales playbook (from sales-work-chart), ICP profiles, outreach templates, follow-up cadences
Semantic MemoryIndustry knowledge (construction, solar), competitor landscape, common objections
DriversDiscovery calls booked, reply rate, pipeline value generated

The docs-as-context loop: The phygital being's documentation in /docs/players/phygital-beings/ serves three audiences simultaneously:

  1. External — Visitors to mm.dreamineering.com see how AI agents work in the system
  2. Internal agents — Engineering team agents read the profile spec as build context
  3. The agent itself — Semantic and procedural memory loaded from these docs at session start

This reinforces quality of docs here and sells ideas to humans and agents alike.

A2A Handoff

When a deal enters Proposal stage in the CRM pipeline, the Sales Dev Agent hands off to the RFP Agent via A2A protocol:

Sales Dev Agent                          RFP Agent
─────────────── ─────────
Prospect → Qualify → Outreach → → Proposal → Review → Submit
Discovery call → Deal created [A2A] RFP upload → AI auto-fill
→ Answer generation
→ Deck composition

Feature / Function / Outcome

#FeatureFunctionOutcomeJobState
1Prospect Research ServiceInput company/industry, output prospect profile with pain points, decision-makers, and fit indicatorsStop spending 3 hours to find 5 prospectsJob 1Build (compose from DocumentIntelligence + platform-industry-trends)
2Lead Scoring AlgorithmScore prospects on ICP fit using sales-forecasting + explore-exploitKnow which 5 of 20 prospects deserve a callJob 1Wire (algorithms exist, need composition layer)
3Outreach ComposerDraft personalized email/LinkedIn message using prospect research + ICP pain mappingMessages worth reading, not templates with merge fieldsJob 2Build (new service, follows RFP answer generation pattern)
4SPCL Quality GateScore outreach draft before human reviewNever send a message that sounds like a robotJob 2Wire (SPCL algorithm exists, needs integration)
5Follow-up SequencerCreate multi-touch follow-up cadence with timing + channel selectionFollow-ups happen on schedule, not from memoryJob 3Build (new service, uses CRM tasks + email/LinkedIn adapters)
6Email DeliverySend outreach via Resend with delivery trackingKnow if the email was delivered, opened, clickedJob 3Exists (Resend adapter production-ready, config only to go live)
7LinkedIn ActionsConnect, message, post via LinkedIn adapterMulti-channel outreach from one systemJob 3Exists (adapter 95% real — validation, metrics, composition, UI all built; mock client ~50 lines to replace with real API calls + OAuth)
8CRM Activity LoggingAuto-log every outreach touchpoint to contact/dealFull interaction history without manual data entryJob 3Wire (CRM activities service exists)
9Channel Performance DashboardShow send/open/reply rates by channel, segment, message typeLearn what converts, double downJob 4Build (new UI, data from email webhooks + LinkedIn analytics)
10Explore-Exploit OptimizerTest message variants and channels, shift budget to what convertsOutreach improves over time without human optimizationJob 4Wire (algorithm exists, needs integration)
11Pipeline Acceleration ViewShow deals created from agent outreach, time from first touch to meetingProve the agent generates revenueJob 4Wire (CRM deals + activities exist)
12Agent Profile (Sales Dev)SOUL memory architecture with sales playbook procedural memoryAgent has context, personality, and learningAllBuild (clone from template, populate sales knowledge)
13Outreach WorkChart5-stage workflow: Research → Score → Compose → Sequence → MeasureEnd-to-end orchestration with adaptive routingAllBuild (follows RFP workflow pattern)

Delivery Summary

StateCount%
Exists (production ready)215%
Wire (algorithms/services exist, need composition)538%
Build (new, but follows existing patterns)646%
Total13

Success Criteria

Functional

#CriterionVerificationJob Served
F1Agent produces prospect profile from company name in under 60 secondsTimed testJob 1
F2Lead scoring ranks 10 prospects by ICP fit with reasoningOutput verificationJob 1
F3Outreach draft scores >3.5 on SPCL before human reviewAutomated gateJob 2
F4Follow-up sequence creates CRM tasks with correct timingCRM verificationJob 3
F5Email delivery + open tracking works end-to-endResend webhook testJob 3
F6Channel performance dashboard shows real data within 24 hoursData verificationJob 4

Outcome (Kill Date: 2026-03-24)

#CriterionThresholdCurrent
O1Prospects researched and scored per week>= 100
O2Reply rate on agent-drafted outreach>= 15%N/A
O3Prospects in CRM pipeline>= 20 scored contacts0
O4Follow-up completion rate>= 90% scheduled follow-ups sentN/A

Team-level outcomes (discovery calls booked, pipeline value, first paying customer) are tracked in Sales Process Optimisation.


Business Dev

LayerDecisionInitial AssumptionEvidence to Collect
ICPWho do we reach first?Construction and solar EPC teams with 10+ employees, active RFP volume, using spreadsheets for bid tracking5 discovery calls where they name the pain unprompted
OfferWhat's the opening message?"Win more bids. Your answer library compounds. Here's how."Reply rate > 15% on first outreach
ChannelHow do we reach them?LinkedIn connect + personalized email sequenceCompare reply rates: LinkedIn vs email vs combined
ProofWhat earns a meeting?Show their industry's RFP pain + live demo of auto-fillMeeting-to-pilot conversion > 30%
ConversionWhat closes a pilot?Free 30-day pilot processing one real RFPPilot-to-paid conversion > 20%

Commissioning

ComponentSchemaAPIUITestsStatusNotes
Prospect Research ServicePendingPendingPendingPending0%Compose from DocumentIntelligence + industry service
Lead Scoring CompositionPendingPendingPendingPending0%Wire sales-forecasting + explore-exploit
Outreach ComposerPendingPendingPendingPending0%New service, follows RFP answer gen pattern
SPCL Quality GateDonePendingPendingPending15%Algorithm exists, needs outreach integration
Follow-up SequencerPendingPendingPendingPending0%New service, uses CRM tasks + adapters
Email DeliveryDoneDoneDoneDone95%Production-ready. Set 3 env vars + configure webhook endpoint = live. Sprint -1.
LinkedIn ActionsDoneDoneDonePending85%1043-line adapter: ~990 lines real (validation, metrics, composition, UI). Replace ~50-line mock client with real LinkedIn API calls + OAuth. Sprint -1.
CRM Activity LoggingDoneDonePartialPending50%Service exists. Wire auto-logging on email send + LinkedIn post. Sprint -1.
Channel Performance UIPendingPendingPendingPending0%New dashboard
Explore-Exploit IntegrationDonePendingPendingPending15%Algorithm exists, needs outreach integration
Pipeline Acceleration ViewPartialPartialPendingPending10%CRM data exists, view not built
Agent ProfilePendingPendingN/APending0%Clone from template
Outreach WorkChartPendingPendingN/APending0%Follow RFP workflow pattern

Risks + Kill Signal

RiskMitigation
LinkedIn app approval delayedLinkedIn Developer Portal review can take days. Register app immediately (Sprint -1 day 1), code the OAuth + real client in parallel. Manual-publish fallback until approved.
AI outreach feels spammyHuman reviews every message before send. SPCL gate enforces quality floor.
Construction ICP doesn't respond to cold outreachTest solar EPC segment in parallel. Explore-exploit switches channels.
Agent takes longer to build than manual outreachStart manual outreach immediately. Agent runs in parallel, replaces manual when ready.
Discovery calls don't convert to pilotsThis is a product/pitch problem, not an agent problem. Separate kill signal.

Kill signal: If 50 outreach messages produce 0 replies across both email and LinkedIn over 30 days, the ICP or the message is wrong. Diagnose with explore-exploit data before iterating.


Build Sequence

Sprint -1: Prove Outbound Infrastructure (3 days engineering)

Before building the agent, prove the delivery channels work end-to-end. This is the foundation everything else depends on.

Email (Resend) — Go Live (0.5 day)

The full code path exists: UI → sendEmailActionSendEmailUseCaseResendAdapter → Resend API → webhook → CRM activity update. Nothing to build. Configuration only.

Engineering tasks:

  1. Set environment variables in Vercel:

    • RESEND_API_KEY — from Resend dashboard
    • RESEND_FROM_EMAIL — verified domain email (e.g. outreach@dreamineering.com)
    • RESEND_WEBHOOK_SECRET — generate in Resend webhook settings
  2. Configure Resend webhook endpoint:

    • URL: https://dreamineering.com/api/webhooks/resend
    • Events: email.delivered, email.opened, email.clicked, email.bounced
  3. Send a test email from Settings > Marketing compose modal

  4. Verify webhook fires back — check CRM activity customProperties.emailEvents has delivery event

Acceptance test: Send email → recipient opens it → webhook fires → CRM activity shows "email.opened" event with timestamp.

LinkedIn — Replace Mock Client with Real API (2.5 days)

The adapter is 1043 lines. ~990 lines are real (validation, metrics, composition, B2B keyword detection, content rules, server actions, UI). The mock is ~50 lines in initializeClient() that return synthetic IDs instead of making API calls. Replace the mock, keep everything else.

Engineering tasks:

  1. Register LinkedIn app (30 mins + approval wait)

    • LinkedIn Developer Portal → Create App
    • Products: "Share on LinkedIn" + "Sign In with LinkedIn using OpenID Connect"
    • Note: LinkedIn app review can take days — start this immediately, parallel with code work
  2. Implement OAuth 2.0 token exchange (1 day)

    • File: New linkedin-oauth.ts in libs/infrastructure/adapters/src/social-media/
    • 3-legged OAuth flow: redirect → callback → token exchange
    • Store accessToken + refreshToken + expiresAt (env vars or encrypted DB)
    • Token refresh on 401 response
    • Reference: LinkedIn Marketing API v2 auth docs
  3. Replace mock initializeClient() (1 day)

    • File: libs/infrastructure/adapters/src/social-media/linkedin.adapter.ts lines ~860-914
    • Replace synthetic returns with real HTTP calls to LinkedIn REST API v2:
      • posts.createPOST https://api.linkedin.com/v2/posts (using author URN from OAuth profile)
      • posts.deleteDELETE https://api.linkedin.com/v2/posts/{id}
      • posts.getGET https://api.linkedin.com/v2/posts/{id}
      • analytics.getPostStatsGET https://api.linkedin.com/v2/organizationalEntityShareStatistics
      • profile.getMeGET https://api.linkedin.com/v2/userinfo (OpenID Connect)
    • The adapter already handles error mapping, metrics, resilience — just wire the HTTP client
  4. Set environment variables:

    • LINKEDIN_CLIENT_ID — from Developer Portal
    • LINKEDIN_CLIENT_SECRET — from Developer Portal
    • LINKEDIN_ACCESS_TOKEN — from OAuth flow
    • LINKEDIN_REFRESH_TOKEN — from OAuth flow
  5. Test from UI: Settings > Marketing > LinkedIn Post Composer → compose post → click Post → verify it appears on actual LinkedIn profile

Acceptance test: Compose post in app → post appears on real LinkedIn → adapter returns real postIdgetPostStatus() returns published status.

Wire Both to CRM Activity Logging (0.5 day)

Currently email webhooks update CRM activities but the initial send doesn't create one. LinkedIn has no activity logging at all.

  1. When sendEmailAction succeeds: create CRM activity (type: "email", linkedContactId, linkedDealId, description: subject + preview, customProperties: { emailMessageId, channel: "email" })
  2. When postToLinkedInAction succeeds: create CRM activity (type: "note", description: post text, customProperties: { linkedinPostId, channel: "linkedin" })

This closes the loop: every outbound touchpoint appears in the CRM activity timeline automatically.

Sprint -1 Commissioning

TestPass CriteriaEvidence
Send real emailRecipient receives email from @dreamineering.comResend dashboard shows delivered
Email open trackingOpen event fires webhook, appears in CRM activityActivity customProperties.emailEvents populated
Post to real LinkedInPost appears on LinkedIn profileLinkedIn URL of published post
LinkedIn from UISettings > Marketing > compose → post succeedsNon-synthetic postId returned
CRM activity auto-loggedBoth email send and LinkedIn post create CRM activitiesActivity timeline shows both

Track 1: Wire algorithms to CRM UI (engineering — 6 days) This is the existing Tier 1 sprint from the Sales CRM PRD. Sales Forecasting, Compound Rate, RFP Type Detection, Stripe. Makes the product demo-ready. Runs in parallel with Sprint -1.

Track 2: Sales Dev Agent (engineering — 14 days)

SprintWhatEffortDepends On
S0ETL CLI --path flag (Agent Platform Sprint 0)0.5 dayUnblocks all new agent profiles
S1Agent Profile (8 JSON files) + Prospect Research Service3 daysS0 + DocumentIntelligence (exists)
S2Lead Scoring Composition (wire algos)2 dayssales-forecasting + explore-exploit (exist)
S3Outreach Composer + SPCL Gate3 daysProspect Research (S1)
S4Follow-up Sequencer + CRM auto-logging3 daysSprint -1 (email + LinkedIn live)
S5Outreach WorkChart orchestration2 daysS1-S4 complete
S6Channel Performance Dashboard1 dayEmail webhooks + LinkedIn analytics (exist)

Track 3: Dogfood outreach (founder — starts immediately) Don't wait for the agent. Start discovery calls now using the CRM, email, and LinkedIn tools we've built. The outreach itself IS the product demo — if we can't use our own system to generate demand, why would anyone else?

This is the commissioning test for the Sales CRM before any customer sees it:

ActionUse This ToolWhat It Proves
Add 20 target prospectsCRM Contacts (/crm/contacts/new)Contact CRUD works at scale
Create deals for top 5CRM Deals (/crm/deals/new)Pipeline tracking works
Log discovery call notesCRM Activities (deal detail)Activity timeline works
Draft outreach messagesLinkedIn Composer (Settings > Marketing)LinkedIn adapter works
Send follow-up emailsEmail (Resend integration)Email delivery works
Track engagementRFP Analytics + deal pipelineCompound rate tracking works
Score prospectsSales Forecasting (once wired)Algorithm wiring works

Every outreach touchpoint generates data that proves the system. Every friction point discovered is a bug to fix before pilots. The founder's dogfood loop IS the commissioning protocol for Jobs 1-5.

The Tight Five for this outreach:

  1. Principles — "Win more bids" is the value proposition, grounded in compounding answer libraries
  2. Performance — Reply rate, meeting conversion, pipeline value generated
  3. Platform — CRM + RFP + Email + LinkedIn, all wired
  4. Protocols — Outreach sequence: research → score → compose → send → follow up → log
  5. Players — Construction/solar EPC teams with 10+ employees and active RFP volume

Relationship to Other PRDs

This PRD is Horizon 1 of a three-horizon system:

HORIZON 1: PROVE IT WORKS (Now → 90 days)            ← THIS PRD
Sales Dev Agent — one instrument
│ feeds into

HORIZON 2: ORCHESTRATE THE TEAM (90 days → 6 months)
Sales Process Optimisation — the orchestra
│ generates data for

HORIZON 3: MAKE IT A PROTOCOL (6 months → 18 months)
Trust Commerce — the protocol

Data flows:

  • This agent → SPO: Outreach data, reply patterns, and qualification outcomes feed SPO's Learning Agent to improve ICP scoring across all agents.
  • SPO → this agent: 4-layer ICP scores, workflow dispatch, optimized routing rules.
  • Trust Commerce → this agent: Once live, warm referral leads arrive pre-qualified by the trust graph, changing scoring and outreach approach. Cold outreach becomes unnecessary for the portion of pipeline that comes through the trust network.

Dependencies:


Mycelium Capability

The Sales Development Agent is a demand generation capability. It composes CRM, email, social, and intelligence algorithms into an outreach pipeline. Currently dogfooded on construction and solar ICP, and deployed externally for Sneakers Media's HRV campaign — the same agent, two contexts. This is the BOaaS proof: one instrument serving multiple ventures.

The WorkChart pattern (Research → Score → Compose → Sequence → Measure) applies to any B2B outbound motion.

Currently Growing In: stackmates


Context