Sales Research Agent Playbook

This agent handles pre-meeting research and lead enrichment — two time-intensive tasks that don't require a human to do the initial information gathering. For a pre-meeting brief, a sales rep triggers the workflow manually with an account name; the agent pulls CRM data, retrieves recent company signals, and delivers a structured brief via Slack before the meeting. For lead enrichment, the workflow runs on a schedule, scores new leads, and drafts personalised outreach — but no message is ever sent without a human reviewing and approving it first. The agent produces research and drafts. Every external communication requires explicit human approval.


What this agent does

This playbook covers two workflow variants that address different points in the sales cycle.

Variant A — Pre-meeting research (manual trigger)

A sales rep initiates the workflow with an account name and meeting time. The agent:

  1. Pulls account data from the CRM or Snowflake data warehouse (data step)
  2. Retrieves recent company news, funding signals, and product changes using a web research skill or MCP tool (skill step)
  3. Summarises account context, key risks, and current opportunities (agent step, reasoning category)
  4. Drafts talking points and discovery questions tailored to the account (agent step)
  5. Writes the full pre-meeting brief to the datastore (storage step)
  6. Delivers the brief to the sales rep via Slack (notify step)

The sales rep receives the brief in Slack, reviews it, and decides what to use. No external action is taken.

Variant B — Lead enrichment (schedule trigger)

Runs nightly on a defined schedule. For each new lead in the inbound queue:

  1. Retrieves the lead record from the CRM (data step)
  2. Enriches with company size, tech stack, and intent signals (skill step)
  3. Scores the lead and classifies buying intent (agent step, reasoning category)
  4. If high-intent: drafts a personalised outreach message (agent step)
  5. Routes the draft to a human reviewer via an approval step (risk: medium)
  6. On approval: updates the CRM record and notifies the assigned rep via Slack (action and notify steps)
  7. On rejection: archives the draft in the datastore for manual review (storage step)

Best-fit use cases

This playbook is well-suited when:

  • Your sales team spends 30–60 minutes researching each account before a meeting and that research follows a repeatable pattern (company background, recent news, tech stack, potential objections)
  • You have a high volume of inbound leads and current enrichment is manual or partially automated with static data
  • Your CRM is the system of record and has reliable data — the agent's output quality depends directly on the quality of CRM data it ingests
  • You want to generate personalised outreach at scale but are not willing to auto-send (the right posture — see the warning below)

When not to use this agent

Do not deploy this agent when:

  • You intend to auto-send outreach without human review. Every external message must go through an approval step. If your goal is "send emails automatically," this is not the right playbook — and that approach carries significant reputational and compliance risk regardless of tooling
  • Your CRM data is unreliable, incomplete, or not updated regularly — stale CRM data produces research briefs that contradict the reality of the account
  • Your sales motion is entirely relationship-driven and calls require deep, bespoke context that cannot be assembled from structured data — in these cases the agent adds preparation overhead without compressing meaningful work
  • Your compliance environment restricts use of external data enrichment tools (regulated industries, data residency requirements) — confirm with your legal and security teams before connecting external enrichment sources

Required connections and data sources

ConnectionPurposeAuth method
SlackDeliver pre-meeting briefs; notify reps of enriched leads and approvalsOAuth 2.0
LinkedIn (optional)Company and people data for account researchOAuth 2.0
Snowflake (optional)CRM mirror or data warehouse for account, contact, and deal dataService Account

If your CRM (Salesforce, HubSpot, etc.) does not have a native ProvenanceOne connection, you have two options: sync it to Snowflake and use the Snowflake Service Account connection, or use an MCP server that provides read/write access to your CRM through the MCP Gateway. Configure connections in Workspace → Connections. See /docs/connections/index.

Note on LinkedIn OAuth: LinkedIn's API terms restrict programmatic access to member data. Confirm that your intended use case is permitted under the LinkedIn API terms of service and your organisation's LinkedIn contract before connecting this source.


Create two agent configurations for this workflow: one for account synthesis and one for outreach drafting.

Account synthesis agent (category: reasoning, trust: medium):

You research and summarise B2B accounts for a sales team.

Given an account record, CRM data, and a set of news and signal items, produce a structured brief containing:
- company_summary: 2–3 sentence company overview
- recent_signals: list of up to 5 recent events relevant to a sales conversation (funding, product launches, leadership changes, job postings)
- risks: list of up to 3 risks or objections to anticipate
- opportunities: list of up to 3 opportunities or buying triggers
- talking_points: list of 4–6 discovery questions specific to this account
- sources: list of sources used for each claim

Do not invent facts. If no relevant signal data is available, say so. Do not reference data points that are more than 12 months old.

Outreach drafting agent (category: reasoning, trust: medium):

You draft personalised outreach messages for B2B sales.

Given a lead record, enrichment data, and a brief summary of the company, draft a short outreach message that:
- Is addressed to the specific contact by first name
- References one specific, verifiable signal about the company (not generic flattery)
- States a clear, specific reason why the sender's company is relevant to the recipient's situation
- Has a single, low-friction call to action (a question, not a meeting request)
- Is under 150 words

Do not make exaggerated claims about the sender's product. Do not use superlatives. Do not send this message. This is a draft for human review only.

The final instruction ("Do not send this message") is a system prompt safeguard, but it is not sufficient on its own. The approval step is the structural control — do not rely on the system prompt alone to prevent outbound sending.


Required skills and tools

SkillCategoryPurpose
CRM / Snowflake data readerdataFetches account, contact, and deal records from CRM or Snowflake
Web research / signal retrievalapiRetrieves recent news, funding rounds, job postings, and company signals; can be backed by an MCP server with web search capability
Lead enrichmentintegrationEnriches a lead record with company size, industry, headcount, and tech stack
Lead scoringtransformApplies a configurable scoring model to produce a lead score and intent classification
CRM record writerintegrationUpdates enrichment fields and tags in the CRM; used in the action step after approval

Attach the web research skill or MCP server to the synthesis agent only. Do not attach the CRM record writer to any agent — it should be used only in the action step after the approval gate fires, not as a tool the agent can call autonomously. See /docs/skills/index and /docs/mcp-servers/index.


Variant A — Pre-meeting research

  1. trigger step — type manual. Input fields: account_name (required), contact_name (optional), meeting_time (required). The sales rep fills this form to start the run.

  2. data step — CRM / Snowflake reader. Input: account_name. Output: account record, open opportunities, last touch date, deal stage.

  3. skill step — signal retrieval — web research skill. Input: account_name, company domain if available. Output: up to 10 recent signal items with source URLs.

  4. agent step — synthesis — account synthesis agent. Input: account record, signal items. Output: structured brief (company summary, signals, risks, opportunities, talking points, sources).

  5. storage step — write the full brief to the datastore with keys for account_name, meeting_time, rep_email, and brief_content. This creates a retrievable record for the rep and for quality review.

  6. notify step — send the brief to the rep's Slack DM. Format the message using the talking_points and recent_signals fields. Include a link to the full brief in the datastore.

Variant B — Lead enrichment (nightly batch)

  1. trigger step — type schedule. Configure to run nightly at 02:00 in the workspace timezone. The trigger fetches the list of new leads created in the last 24 hours from the CRM queue.

  2. data step — CRM reader. Input: lead ID (iterated per lead). Output: lead record including company name, contact email, source, and creation date.

  3. skill step — enrichment — lead enrichment skill. Input: company name, contact email domain. Output: enriched company data (size, industry, headcount, tech stack signals).

  4. agent step — scoring and classification — scoring uses the synthesis agent with a scoring-focused prompt variant. Input: lead record, enrichment data. Output: lead_score (0–100), intent_classification (low/medium/high), score_rationale, confidence.

  5. logic step — routing — if intent_classification is high AND confidence >= 0.7: route to outreach drafting. If intent_classification is low: route to storage step (archive). All others: route to notify (flag for manual review by rep).

  6. agent step — outreach drafting — outreach drafting agent. Input: lead record, enrichment data, company summary from scoring step. Output: draft outreach message.

  7. approval step — see approval configuration below. Risk: medium.

  8. action step — on approval: CRM record writer updates enrichment fields, lead score, and tag. Sends approved (and optionally edited) message via rep's configured channel.

  9. notify step — Slack notification to assigned rep with link to enriched lead record and confirmation that outreach was sent (or queued).

  10. storage step — on rejection: archive the draft, rejection reason, and lead record for manual review.


Human approval rules

Critical: the agent must never send external messages — email, LinkedIn DMs, or any other channel — without human approval. Auto-sending outreach is a reputational and compliance risk. The approval step is a structural requirement, not an optional enhancement.

These actions must always trigger an approval step:

  • Any outbound message to a prospect or customer, regardless of channel
  • CRM field changes that affect pipeline forecasting (stage updates, deal size changes, close date changes)
  • Lead disqualification — marking a lead as Closed Lost or equivalent based on agent scoring alone

These can be automated without an approval step:

  • CRM field enrichment for informational fields (company size, industry, headcount, tech stack) — no approval required
  • Internal Slack summaries and pre-meeting briefs delivered to the sales rep — no approval required
  • Lead scoring and tagging that adds metadata without changing CRM stage or forecast — no approval required

Approval step configuration for outreach drafting:

action: Send outreach message to prospect
risk: medium
slaMinutes: 480
assignees:
  - "{{assigned_rep_email}}"
  - [email protected]
evidence:
  - label: Lead Score
    value: "{{lead_score}}"
    tone: blue
  - label: Intent Classification
    value: "{{intent_classification}}"
    tone: emerald
  - label: Agent Confidence
    value: "{{confidence_pct}}"
    tone: amber
  - label: Company
    value: "{{company_name}}"
    tone: slate
rationale: "{{score_rationale}}"
confidence: "{{confidence}}"

Set slaMinutes to 480 (8 hours) to accommodate business-hours review. The rep receives the approval request in Slack and can edit the outreach draft before approving. See /docs/approvals/index for payload editing instructions.


Security and permission model

RolePermissions
adminConfigure LinkedIn, Slack, and Snowflake connections; publish workflow; manage assignees
editorCreate and edit agents, skills, and workflow; view run history
viewerView run history and briefs; cannot approve or edit
the identity service approvers groupApprove or reject outreach requests

The Snowflake service account and LinkedIn OAuth token are stored in the secrets vault and are never returned in API responses. Audit events connection.accessed and secret.accessed are emitted on each use.

Do not store contact PII (email addresses, phone numbers) in agent memory. Agent memory is appropriate for storing account-level context such as last_brief_date, deal_stage, or account_tier. Run memory values are readable by editor and admin roles.

Data retrieved from external sources during enrichment is used only within the workflow run unless you explicitly persist it to the datastore or CRM via an action step. Review your data retention settings in Workspace → Settings → Data Retention.

Audit events emitted by this workflow: run.started, run.completed, run.failed, approval.granted, approval.rejected, approval.sla_breach, agent.memory_set, connection.accessed.


Evaluation checklist

Before deploying Variant A (pre-meeting research) or Variant B (lead enrichment) to production, validate all of the following:

  • Agent summaries are factually grounded — verify every claim in the brief against a source the retrieval step actually returned; no invented company details
  • Approval gate fires correctly for every outbound action — test with at least 10 leads and verify that the approval step is never bypassed
  • CRM updates in the action step are reviewed by a human before commit, or are restricted to informational enrichment fields only
  • Agent does not leak data between accounts — test with two unrelated accounts in the same nightly batch run and verify that brief content for account A does not appear in the output for account B
  • Run debugger shows which sources were used for each claim in the brief — every talking point should be traceable to a retrieved source
  • Lead scoring is calibrated — compare agent scores against rep assessments for 20 leads before enabling auto-routing

Rollout plan

Phase 1 (week 1–2): Manual trigger only (Variant A) Deploy Variant A only. Have 3–5 reps use it before meetings. Collect feedback on brief quality and accuracy. Identify gaps in the system prompt or data sources.

Phase 2 (week 3–4): Enable Variant B in review-only mode Run the enrichment workflow nightly but route all drafts to the approval step regardless of score. No auto-archive for low-intent leads yet. Calibrate scoring thresholds against rep feedback.

Phase 3 (month 2): Full Variant B with routing logic Enable the full logic step routing once scoring calibration is complete. Keep approval gates for all outbound drafts. Track approval rates, rejection reasons, and rep edit frequency to identify system prompt improvements.


Common failure modes

Agent invents facts about a prospect. The agent produces a talking point referencing a product launch or executive hire that does not exist. Mitigation: scope the signal retrieval skill to return source URLs for every item; add a citation requirement to the synthesis agent system prompt ("list the source for each claim"). If the retrieval step returns no results, the agent should say so — not fill the gap with generated content.

Outreach draft is approved and sent but the tone is off-brand or the message is generic. The agent produced a technically accurate but ineffective message. Mitigation: add style guidelines and example messages to the drafting agent system prompt. Run A/B comparisons against human-written messages over 30 days. Track reply rates as an outcome metric, not just approval rates.

Agent confuses contacts at the same account. Two contacts at the same company receive briefs or drafts that reference each other's context. Mitigation: use the unique contact ID (not just company name) as the primary key in every data step. Test with an account that has multiple contacts in your CRM before enabling batch processing.


ROI assumptions

This playbook has two distinct ROI categories. Track them separately — they operate on different time horizons.

Cost savings (measurable in 30 days):

InputAssumed valueNotes
Accounts researched per week20Replace with actual volume
Current research time per account45 minMeasure from rep time tracking or estimate
Time with agent10 min (review only)Rep reviews brief, does not do raw research
Loaded hourly cost of BDR / AE$60Include benefits and overhead

At these inputs: 20 accounts x 35 min saved x ($60/60) = $700/week, approximately $3,000/month in research time recovered.

Revenue impact (track over 60–90 day pilot; do not estimate upfront):

InputStatus
Meeting show rate improvementTrack pre/post; target +10% but do not commit until data is in
Pipeline influenced per monthTrack in CRM — attribute to workflow by rep, account, and meeting date
Win rate deltaTrack in CRM — do not estimate upfront; 60-day minimum to see signal

Use the ROI calculator to model your specific inputs: /tools/ai-agent-roi-calculator?use_case=sales-research.


FAQ

Can the agent send emails or LinkedIn messages automatically?

No. Every outbound message requires a human to review and approve it via the approval step. The approval step allows the sales rep to read, edit, and then send the draft. Auto-sending outbound sales messages — even well-crafted ones — creates compliance, brand, and CAN-SPAM risk. This is a structural requirement in the workflow, not just a recommendation.

Will the agent update our CRM automatically?

CRM updates require an action step connected to your CRM. Informational enrichment fields (company size, industry, headcount, tech stack) can be written automatically after the enrichment step. CRM stage changes, deal size updates, and forecast-affecting fields require an approval step before the action step runs. Configure the action step to use the CRM record writer skill with the specific fields you want to update.

How do I prevent the agent from using stale data?

Configure the data step to pull from your live CRM or data warehouse, not a static export or file. For nightly enrichment, schedule the workflow to run after your CRM sync completes — not before. If your CRM sync runs at 01:00, schedule the enrichment workflow for 02:00. Check the data step output timestamp in the run debugger to verify data freshness.

What if the agent scores a lead incorrectly?

Review the scoring logic in the agent system prompt. Adjust the scoring criteria and weight the signals that your best reps actually use to qualify leads. Add the agent's confidence score to the approval evidence so reps can calibrate their trust in the score. Monitor the approval rejection rate by reps — if reps consistently reject high-score leads, the scoring model needs recalibration. Track this by exporting rejection reasons from the audit log.