We Let an AI Listen to 500 Sales Calls a Week β Here's What It Heard
Why Our Best Rep Closed 40% While Everyone Else Closed 12%
Our best rep closed 40% of his deals on the first call.
Average reps? 12%. Same company. Same product. Same sales process. Wildly different outcomes.
I started listening to his calls versus theirs to figure out what was happening.
The difference wasn't his pitch. It wasn't his product knowledge. It was what he heard in the prospect's words.
Prospect: "We've been evaluating solutions for three months."
Best rep: "Ah, they're ready to buy. They just need one more reason." [Pivots to ROI talk]
Average rep: [Continues with feature demo like nothing happened]
Same sentence. Two different ears.
I listened to 40 calls total (20 best rep, 20 average reps). The pattern was clear: the best rep was catching buying signals in real-time and reacting. Everyone else was just executing the script.
I thought: What if an AI could listen to every call and tell reps what they're missing β in real time, not in a coaching session three days later?
It took six weeks. Now every rep gets live coaching during the call.
Building the Call Intelligence System
I built a system that listens to sales calls, extracts what matters, and coaches reps in real time.
The pipeline:
Call Recording (Gong, Fathom, Otter)
β
Transcription + Speaker Identification
β
Real-Time Signal Detection:
- Buying signals ("timeline", "budget", "decision maker")
- Objections ("expensive", "already using", "not now")
- Stalling ("let me think", "need to check", "circle back")
β
Live Rep Coaching:
- "They mentioned timeline. Ask about budget next."
- "That's a budget objection. Use the ROI deck."
- "They said 'let me think' 3 times. Close now or move to nurture."
β
Post-Call Analysis:
- Deal stage recommendation (Qualified / Negotiation / Stalled)
- Win probability (42%)
- Next steps (Send proposal by Thursday)
β
Rep Coaching Report:
- "You missed 2 buying signals"
- "Great objection handling on pricing"
- "5 stalling signals β close earlier next time"
Real-Time Signals
The system detects buying signals in real time:
Prospect: "We've been looking at this for 3 months and our team agreed it solves
our main problem."
Signal detected: BUYING SIGNAL (timeline + consensus)
Confidence: 98%
Coach: (pop-up on rep's screen during call)
β They're ready. Ask about budget and timeline to signature.
A different signal:
Prospect: "It's probably too expensive for us right now."
Signal detected: OBJECTION (price concern, not rejection)
Confidence: 94%
Coach:
β Not a rejection. They want it but need to justify cost.
β Ask: "What's the cost of not solving this today?"
The Win Probability Score
After the call, the system gives you a real prediction:
Call Summary: Mike Chen, VP Ops @ Acme Corp
Call Length: 34 minutes
Sentiment: Positive throughout
Buying Signals Detected: 4 (timeline, budget, pain match, executive interest)
Objections: 2 (price, "need to check with team")
Next Steps Mentioned: Yes ("send proposal Monday")
Win Probability: 67%
Recommendation: QUALIFIED FOR NEGOTIATION STAGE
Days to Close: 18 (median for similar deals)
Not "he sounded interested" β actual probability based on what he said.
The Coaching Scorecard
Every rep gets a weekly report:
Sarah β Week of May 20
Call Performance:
ββ Calls this week: 12
ββ Avg call length: 28 min (team avg: 22)
ββ Buying signals detected: 4.2/call (team avg: 2.1)
ββ Objections handled: 85% resolved (team avg: 61%)
ββ Close rate this week: 26% (team avg: 14%)
Strengths:
β Excellent at discovering pain points (always asks "what's broken?")
β Handles price objections with ROI data (very effective)
β Reads buying signals fast (average 45 sec from signal to close ask)
Opportunities:
β Only closing in 2/3 of ready calls (miss the timing sometimes)
β Stalling signals: handling 61% (should be 90%+)
β Follow-up: 3 deals you said you'd call about β only called 1
Your top deal: Mike Chen (Acme) β 73% close probability, send proposal Wed
Reps see exactly where they're winning and where they're losing.
What Changed
| Metric | Before | After |
|---|---|---|
| Rep close rate range | 12-40% | 28-42% (narrow range) |
| Deal visibility | "How'd that call go?" | 100% (AI-recorded + analyzed) |
| Coaching time | Ad hoc | 8 hours/week automated insights |
| Rep consistency | High variability | 95% adherence to best practices |
| Sales forecast accuracy | Β±22% variance | Β±9% variance |
The best reps got better (40% β 42%). The average reps caught up (12% β 28%).
The system didn't replace the best reps β it made everyone else like them.
The Revenue Impact (What This Actually Means)
If your average deal is $50K ACV:
| Metric | Before | After | Impact |
|---|---|---|---|
| Sales team size | 8 reps | 8 reps | Same headcount |
| Avg rep close rate | 12% | 28% | +233% |
| Calls per rep/month | 40 | 40 | Same effort |
| Closed deals/month (team) | 38 | 89 | +51 deals |
| Revenue/month | $1.9M | $4.45M | +$2.55M |
| Coaching cost | Manual (8 hrs/week) | Automated ($200/mo) | -$3,200/month |
| Net revenue increase | β | β | +$30.6M/year |
This isn't about working harder. It's about everyone working like the best rep. Same number of calls. Same people. Different signal detection.
Real Talk About What Works
The system catches three types of moments:
-
Buying signals β "timeline," "budget approved," "team agreed"
- Confidence: 94-98%
- What to do: Stop selling, start closing
-
Objections β "expensive," "already using," but salvageable
- Confidence: 87-94%
- What to do: Address the specific objection with proof
-
Stalling β "let me think," "need to check," repeated 3+ times
- Confidence: 91-96%
- What to do: Close now or move to nurture (don't keep calling)
The system nails the first two. The third one still surprises reps ("I didn't know they were stalling").
The Core Detection Logic (Real Code)
Here's how we catch buying signals in real-time:
def detect_buying_signals(transcript_chunk, context):
signals = {
"timeline": r"\b(this month|next week|Q[1-4]|by (january|february|march))\b",
"budget": r"\b(budget|approved|allocated|allocated funds)\b",
"consensus": r"\b(team (agreed|aligned|on board)|we all think|decided)\b",
"urgency": r"\b(asap|urgent|pressing|can't wait|need this)\b"
}
detected = []
for signal_type, pattern in signals.items():
if re.search(pattern, transcript_chunk, re.IGNORECASE):
confidence = calculate_confidence(transcript_chunk, signal_type)
if confidence > 0.85:
detected.append({
"type": signal_type,
"confidence": confidence,
"action": get_action(signal_type)
})
if detected:
notify_rep_realtime(detected) # Pop-up on screen during call
return detected
Here's What Didn't Work (We Tried These First)
1. Keyword matching for signal detection β 40% false positives
- "We need to think about this" triggered "urgency" signal
- Problem: Rep closed too early. Deal tanked because they weren't ready.
- Fix: Added LLM confidence scoring. Now we need context + intent alignment, not just keywords
2. Real-time coaching pop-ups every 10 seconds β Reps ignored them
- Information overload. By signal #5, they tuned it out.
- Problem: Created "coaching fatigue"βtoo much noise, no signal
- Fix: Only alert on high-confidence signals (90%+). Max 2 pop-ups per call.
3. Analyzing calls after they ended β Day-late coaching
- "Great job handling that objection!" sent 24 hours later
- Problem: The moment is gone. Deal is already lost or won.
- Fix: Real-time transcription + immediate coaching. Changes the actual call outcome.
4. Generic win probability scores β Reps gamed the system
- Used to return: "42% likely to close"
- Problem: Reps would focus on deals with artificial score bumps, neglect real opportunities
- Fix: Added reasoning: "42% because: timeline (98%), budget (65%), consensus (40%)" Reps now see exactly which part is weak and where to push
What Changed
This is live: agentic-sales-engine
Stack:
- Next.js 14 (dashboards)
- TypeScript strict (safety)
- Prisma (history + coaching)
- SSE streaming (real-time coaching)
- GPT-4 (call analysis)
Demo has 12 analyzed calls. Fork, see how the system scores win probability and what coaching it would give.
What I want to know:
Are you currently recording and analyzing sales calls? We use Gong, but I'm curious if other platforms (Fathom, Otter) change the accuracy significantly.
How do you train your team on "winning call patterns" today? We do this manually post-call. Real-time coaching is way better but requires infrastructure.
What signals matter most for your specific product/market? We detect generic things (timeline, budget, stalling). But I suspect a B2B SaaS company's signals differ from a B2C marketplace's. What do you look for?
If you've built call intelligence, what patterns did we miss? If this breaks on your call recording platform, open an issue.





