- name
- sales-call-prep
- version
- 1.1.0
- description
- Pre-sales-call intelligence composite. Deep dives on the person AND their company before a sales call, then maps findings to your product to generate talking points, objection prep, and a call strategy. Goes beyond generic attendee research — this is sales-specific intelligence that helps SDRs, AEs, and founders walk into calls with a plan. Tool-agnostic — works with any CRM, research source, and calendar.
- tags
- ["research"]
# Sales Call Prep
The pre-call intelligence report that turns a 50/50 sales call into an 80/20 one. Researches the company (with a sales lens — not Wikipedia facts, but buying signals, pain indicators, competitive landscape, and budget context), researches the person (not just their bio, but their authority level, priorities, likely objections, and what they care about), then maps everything to your product to generate a specific call strategy.
**What makes this different from `meeting-brief`:**
| Dimension | `meeting-brief` | `sales-call-prep` |
|-----------|-----------------|-------------------|
| Focus | Who is this person? | How do I sell to this person? |
| Company research | Basic overview | Sales-lens: pain signals, budget indicators, competitive stack, decision process |
| Person research | LinkedIn + GitHub + news | Authority mapping, buying style, priorities, likely objections |
| Product connection | None | Maps your product's value to their specific situation |
| Output | Background brief | Call strategy with talk track, questions, and objection prep |
| Audience | Anyone with a meeting | SDR, AE, founder walking into a sales call |
## When to Auto-Load
Load this composite when:
- User says "prep me for my sales call", "call prep for [company]", "research [person] before our demo"
- User says "I have a call with [person] at [company] tomorrow", "meeting prep for a prospect"
- User has an upcoming meeting with a prospect (not an internal meeting, not a customer check-in)
- An upstream workflow (meeting lifecycle, daily BDR rhythm) triggers call prep for sales meetings
---
## Step 0: Configuration (One-Time Setup)
On first run, collect and store these preferences. Skip on subsequent runs.
### Your Product Context
| Question | Purpose | Stored As |
|----------|---------|-----------|
| What does your company do? (2-3 sentences) | Frame product-to-prospect mapping | `company_description` |
| What problem do you solve? | Identify if the prospect has this problem | `pain_point` |
| Who is your ideal buyer? (title, department) | Map to the person on the call | `ideal_buyer` |
| What are your top 3 proof points? (customer, metric, result) | Arm the seller with specific evidence | `proof_points` |
| What are the top 5 objections you hear? And how do you handle each? | Pre-load objection handling | `common_objections` |
| What competitors do you run into? And what's your positioning against each? | Competitive prep | `competitors` |
| What's your pricing model? (ballpark) | Budget qualification context | `pricing_model` |
| What does your typical sales process look like? (stages, timeline) | Calibrate call objectives by stage | `sales_process` |
| What discovery questions do you typically ask? | Augment with prospect-specific questions | `discovery_questions` |
### Data Source Config
| Question | Options | Stored As |
|----------|---------|-----------|
| Where do you track deals? | Salesforce / HubSpot / Pipedrive / Close / Supabase / None | `crm_tool` |
| Where do you track outreach? | Smartlead / Instantly / Outreach / None | `outreach_tool` |
**Store config** in the current working directory or wherever the user prefers.
---
## Step 1: Gather Context
**Purpose:** Understand what this meeting is, who's attending, and what stage the deal is at. Pull any existing data from CRM/outreach history.
### Input Contract
```
meeting_input: {
# Option A: Calendar-driven (meeting already scheduled)
calendar_event: {
title: string
date: string
time: string
attendees: [ { name: string, email: string } ]
description: string | null
meeting_link: string | null
}
# Option B: Manual input (user tells you who the call is with)
manual: {
person_name: string
person_title: string | null
person_email: string | null
person_linkedin: string | null
company_name: string
company_domain: string | null
meeting_type: string | null # "discovery", "demo", "follow-up", "negotiation", etc.
notes: string | null # Any context the user provides
}
}
```
### Process
1. **Identify the prospect(s)** from calendar or manual input. Filter out internal team members.
2. **Check ALL prior interaction sources** (critical — do this before any web research):
The goal is to reconstruct a complete interaction timeline before the call. Walking into a meeting without knowing you've already emailed someone, had a deal in pipeline, or that a teammate talked to their colleague is a credibility killer. Check every available source.
#### A) CRM Records (Attio, Salesforce, HubSpot, Pipedrive, etc.)
Check for BOTH the person AND their company. Pull:
| What to Check | What to Pull | Why It Matters |
|---------------|-------------|----------------|
| **Company record** | Does the company exist in your CRM? What lists is it on? | Shows if they're already a prospect, customer, or cold |
| **Contact record** | Does THIS person exist? Are there other contacts at the company? | Tells you if a colleague already engaged with you |
| **Active deals** | Any open deal for this company? Stage, value, owner, age? | You might already be mid-cycle with them — don't restart the conversation |
| **Closed deals** | Any won or lost deals? If lost, what was the reason? | Lost deals = you know their objections. Won deals = upsell conversation. |
| **Deal notes** | Notes from previous calls, meetings, or interactions | Read every note — they contain gold for personalization |
| **Deal history** | Stage changes, timeline, velocity | Shows how fast (or slow) they move |
| **Other contacts at company** | Names, titles, roles of other people you've talked to | Reference them: "I was speaking with [colleague] about..." |
| **Comments / activities** | Any logged calls, emails, tasks, or comments on their record | May contain context that didn't make it into deal notes |
#### B) Outreach / Sequencing Tool (SmartLead, Instantly, Outreach, Lemlist, etc.)
Search by email AND by name. Pull:
| What to Check | What to Pull | Why It Matters |
|---------------|-------------|----------------|
| **Campaign membership** | Were they in a campaign? Which one? When? | You already reached out — don't pretend this is a cold intro |
| **Emails sent** | Exact subject lines and email bodies you sent them | Know what you said so you don't repeat yourself or contradict it |
| **Their reply** | Did they reply? What did they say? Full reply text. | Their exact words are the best conversation opener: "You mentioned X..." |
| **Lead category** | Interested / Not interested / Out of office / Bounced / etc. | If they were marked "interested," you know their temperature |
| **Trigger signal** | What signal sourced this outreach? (hiring, funding, leadership change) | Reference the original signal: "When we first reached out, it was because [signal]..." |
| **Sequence position** | Which email in the sequence did they respond to (or stop at)? | Tells you what messaging resonated vs. fell flat |
| **Email account used** | Which sender mailbox was used? | Know which "version of you" they interacted with |
#### C) Other Interaction Sources
Check any additional places where prior contact may have occurred:
| Source | What to Check |
|--------|---------------|
| **Client notes file** | Any existing notes — may reference past conversations, call summaries, or decisions |
| **Previous content/outputs** | Past call preps, outreach drafts, or research that included this person or company |
| **Calendar** | Previous meetings with this person or company |
| **LinkedIn messages** | Direct messages or InMail exchanges (ask user if they recall any) |
| **Referral context** | How did this meeting come about? Warm intro from whom? Ask user. |
| **Shared Slack/email threads** | Any back-channel conversations about this prospect |
#### D) Compile Interaction Timeline
After checking all sources, build a chronological timeline of every touchpoint:
```
interaction_timeline: [
{ date: "2026-01-15", type: "outreach_sent", detail: "Email 1 of hiring-signal campaign. Subject: 'The new CCO mandate'" },
{ date: "2026-01-18", type: "reply_received", detail: "Replied: 'Interesting, let's chat next month'" },
{ date: "2026-02-01", type: "deal_created", detail: "Deal created in Attio. Stage: Meeting booked. Value: $36K" },
{ date: "2026-02-10", type: "call_completed", detail: "Discovery call. Notes: 'Interested in outbound automation, evaluating Clay'" },
{ date: "2026-02-10", type: "deal_stage_change", detail: "Stage moved to Evaluation" },
]
```
**This timeline goes directly into the 30-Second Brief and Call Strategy.** If you have prior interactions, the call type, opening line, and discovery questions all change:
| Prior Interaction | How It Changes the Call |
|-------------------|----------------------|
| No prior interaction | True cold discovery — qualify from scratch |
| Outreach sent, no reply | Warm-ish — they've seen your name. Reference the email: "I sent you a note about X a few weeks ago..." |
| Outreach sent, they replied positively | Warm — pick up where the conversation left off. Don't re-pitch. |
| Outreach sent, they replied negatively | Handle carefully — they already said no. Understand why before re-engaging. |
| Active deal in CRM | You're mid-cycle — this is a follow-up, not a discovery call. Read all notes. |
| Lost deal in CRM | Re-engagement — acknowledge the history: "I know we talked back in [month] and the timing wasn't right..." |
| Colleague already engaged | Multi-thread — reference the colleague: "I've been working with [name] on..." |
3. **Determine call type and objective:**
| Call Type | How to Detect | Default Objective |
|-----------|--------------|-------------------|
| **Cold discovery** | No prior deal, first meeting | Qualify: Do they have the problem? Budget? Authority? Timeline? |
| **Warm discovery** | They replied to outreach positively | Qualify + build rapport. They already showed interest — figure out why. |
| **Demo** | Post-qualification, scheduled demo | Show value. Map product to their specific pain. Get next step. |
| **Follow-up** | Post-demo, they're evaluating | Handle objections. Introduce new proof. Advance to proposal. |
| **Negotiation** | Proposal sent, discussing terms | Close. Handle final objections. Align on timeline and terms. |
| **Champion call** | Internal champion, not decision maker | Arm the champion. Give them ammunition to sell internally. |
| **Executive meeting** | VP+ or C-suite involved | Be strategic, not tactical. ROI and vision, not features. |
### Output Contract
```
meeting_context: {
call_type: string
call_objective: string
prospect: {
name: string
title: string | null
email: string | null
linkedin_url: string | null
company: string
company_domain: string | null
}
prior_interactions: {
has_prior_contact: boolean # Critical flag — changes the entire call approach
interaction_timeline: [ # Chronological list of all touchpoints
{
date: string
type: "outreach_sent" | "reply_received" | "deal_created" | "deal_stage_change" |
"call_completed" | "note_added" | "linkedin_message" | "referral" | "other"
source: "crm" | "outreach_tool" | "email" | "linkedin" | "notes" | "calendar" | "other"
detail: string # What happened, in one sentence
}
]
crm_context: {
company_record_exists: boolean
contact_record_exists: boolean
active_deal: {
stage: string
age_days: integer
amount: number | null
owner: string | null
notes: string[]
} | null
closed_deals: [ { outcome: "won" | "lost", amount: number, reason: string | null } ]
other_contacts: [ { name: string, title: string } ]
comments_and_activities: string[]
} | null
outreach_context: {
campaign_name: string | null
campaign_status: string | null
emails_sent: integer
emails_sent_detail: [ { seq_number: integer, subject: string, date: string } ]
their_reply: string | null # Full reply text
reply_date: string | null
lead_category: string | null # Interested, Not Interested, etc.
trigger_signal: string | null # What signal sourced the outreach
} | null
other_context: {
client_notes_mentions: string[] # Relevant mentions from notes.md
previous_outputs: string[] # Previous call preps, research, etc.
referral_source: string | null # How this meeting came about
} | null
}
additional_attendees: [ { name: string, title: string } ] | null
}
```
---
## Step 2: Company Deep Dive
**Purpose:** Research the prospect's company with a sales lens. Not a Wikipedia summary — focus on signals that indicate need, budget, urgency, and competitive landscape.
### Input Contract
```
prospect: { company, company_domain, ... } # From Step 1
your_company: { ... } # From config
```
### Process
Research across seven dimensions. Use web search (always available) as the primary tool.
#### A) Company Overview (Quick Context)
| What to Find | Where to Look | Why It Matters for the Call |
|-------------|--------------|---------------------------|
| What they do (1-2 sentences) | Website, Crunchbase, LinkedIn | Sets the context for everything else |
| Industry / vertical | Website | Determines which proof points to use |
| Company size (employees) | LinkedIn, Crunchbase | Maps to pricing tier and complexity |
| HQ location | Website | Timezone, regional context |
| Founded year | Crunchbase | Maturity indicator |
| Business model (B2B/B2C/marketplace) | Website | Affects how they think about tools |
#### B) Financial & Growth Signals
View on GitHub