Sales Coaching
An AI coach that studies everything you do in sales — your emails, your calls, your deals — finds the patterns in what works and what doesn't, and gives you specific, actionable coaching to get better.
This isn't generic sales advice ("always be closing"). It's coaching derived from YOUR data: your top-performing emails, your winning calls, your successful deal patterns, your most common objection fumbles, and your specific product's market.
What makes this different from sequence-performance:
| Composite | Focus | Output |
|---|---|---|
sequence-performance | How is this campaign doing? | Campaign metrics + copy diagnosis |
sales-coaching | How can THIS person sell better? | Personal skill assessment + coaching plan |
The other composite analyzes the work. This one coaches the worker.
When to Auto-Load
Load this composite when:
- User says "how can I improve my sales", "coach me", "what am I doing wrong", "sales coaching", "help me sell better"
- User says "review my selling style", "analyze my calls", "what patterns do you see in my sales"
- User asks "why am I losing deals", "why aren't people responding", "what are my best emails doing differently"
- After a bad quarter/month and the user wants to diagnose personal performance
- As a periodic (monthly/quarterly) self-improvement exercise
Step 0: Configuration (One-Time Setup)
User Profile
| Question | Purpose | Stored As |
|---|---|---|
| What is your role? | Calibrate coaching level | user_role |
| How long have you been in sales? | Experience-appropriate advice | experience_level |
| What do you sell? (product/service, 2-3 sentences) | Context for all analysis | product_description |
| What's your average deal size? | Calibrate what matters | avg_deal_size |
| What's your typical sales cycle? | Calibrate velocity expectations | sales_cycle_days |
| What do you think your biggest weakness is? | Starting point for coaching | self_assessed_weakness |
Role options:
"sdr"— Focus on prospecting, outreach, qualification, meeting booking"ae"— Focus on discovery, demos, negotiation, closing"founder"— Focus on everything (wearing multiple hats)"sales_leader"— Focus on team patterns, not just individual
Data Sources
| Question | Options | Stored As |
|---|---|---|
| Where are your email campaigns? | Smartlead / Instantly / Outreach / CSV | email_tool |
| Where are your call recordings/transcripts? | Gong / Chorus / Fireflies / Otter / local files / none | call_tool |
| Where is your pipeline? | Salesforce / HubSpot / Pipedrive / Close / Supabase | crm_tool |
| Do you have call transcripts available? | Yes (path or tool) / No | transcripts_available |
| How far back should we analyze? | 30 / 60 / 90 / 180 days | analysis_window |
Store config in the current working directory or wherever the user prefers.
Step 1: Collect Sales Data
Purpose: Pull all available sales data for analysis. The more data types available, the richer the coaching. But the system works with whatever is available.
Input Contract
data_sources: { ... } # From config
analysis_window: integer # Days to look back
user_role: string # From config
Data Collection Matrix
| Data Type | What to Pull | What It Reveals |
|---|---|---|
| Email campaigns | All campaigns in window — copy, metrics, replies | Writing quality, messaging effectiveness, personalization skill |
| Email replies | Full reply text, classification | Objection handling, how prospects respond to you |
| Call recordings/transcripts | Full transcripts or recordings | Talk-to-listen ratio, discovery skill, objection handling, closing technique |
| Pipeline deals | All deals in window — stage, outcome, timeline | Deal management, velocity, where deals stall or die |
| Meeting notes | Post-call notes (if available) | Follow-through, note-taking discipline |
| Calendar | Meetings booked, held, no-shows | Time management, meeting quality |
Pull from each configured source:
Email Data
email_data: {
campaigns: [
{
name: string
date_range: { start: string, end: string }
sequence: [
{
touch: integer
subject: string
body: string
sent: integer
opens: integer
replies: integer
}
]
replies: [
{
sender: string
sender_title: string
reply_text: string
category: string # positive, objection, not interested, etc.
touch_triggered: integer
}
]
}
]
total_campaigns: integer
total_emails_sent: integer
total_replies: integer
overall_reply_rate: percentage
}
Call Data
call_data: {
calls: [
{
date: string
prospect_name: string
prospect_company: string
call_type: string # discovery, demo, follow-up, negotiation
duration_minutes: integer
transcript: string | null # Full transcript if available
recording_url: string | null # Recording link if available
outcome: string # "next step agreed", "no next step", "closed won", "closed lost"
notes: string | null # Post-call notes
}
]
total_calls: integer
avg_duration: float
outcome_distribution: { ... }
}
Pipeline Data
pipeline_data: {
deals: [
{
name: string
company: string
stage: string
created_date: string
close_date: string | null
outcome: "open" | "won" | "lost"
loss_reason: string | null
amount: number | null
days_in_pipeline: integer
source: string | null # How the deal originated
touches_before_close: integer | null
}
]
total_deals: integer
win_rate: percentage
avg_cycle_days: float
avg_deal_size: number | null
}
Output Contract
collected_data: {
email_data: { ... } | null
call_data: { ... } | null
pipeline_data: { ... } | null
data_richness: "full" | "partial" | "minimal"
data_summary: string # "Analyzing X campaigns, Y calls, Z deals over N days"
}
Human Checkpoint
## Data Collected
| Source | Available | Volume |
|--------|-----------|--------|
| Email campaigns | Yes | X campaigns, Y emails sent, Z replies |
| Call transcripts | Yes/No | X calls, Y hours |
| Pipeline deals | Yes | X deals (W won, L lost, O open) |
Analysis window: [start] to [end]
Data richness: [full/partial/minimal]
Proceed with analysis? (Y/n)
Step 2: Analyze Email Performance Patterns
Purpose: Go beyond campaign-level metrics. Find patterns in what makes YOUR best emails work and YOUR worst emails fail. Pure LLM reasoning.
Process
A) Identify Top-Performing Emails
Across all campaigns, find:
- Highest reply-rate subject lines — What do they have in common?
- Highest reply-rate email bodies — What patterns exist?
- Emails that generated positive replies — What specifically triggered interest?
- Emails that generated meetings — The gold standard. What did these say?
For each top performer, extract:
| Pattern Element | What to Look For |
|---|---|
| Subject line structure | Signal-reference? Question? Peer-framing? Length? |
| Opening line | Lead with them or with you? Signal reference? Question? Statement? |
| Body structure | How many paragraphs? Proof point placement? Length? |
| Personalization depth | Tier 1/2/3? What was personalized? |
| CTA type | Specific ask? Open-ended? Time-bound? |
| Tone | Casual? Professional? Provocative? Empathetic? |
| Framework used | PAS? BAB? Signal-Proof-Ask? AIDA? |
| Proof point type | Customer name? Metric? Case study? |