nepq-phase-analyzer

star 0

Analyze call transcripts for NEPQ phase transitions and conversation flow. Use when: (1) Debugging why a call stalled, (2) Understanding objection patterns, (3) Reviewing agent performance, (4) Identifying script improvements, (5) Training analysis

isethius By isethius schedule Updated 1/21/2026

name: nepq-phase-analyzer description: "Analyze call transcripts for NEPQ phase transitions and conversation flow. Use when: (1) Debugging why a call stalled, (2) Understanding objection patterns, (3) Reviewing agent performance, (4) Identifying script improvements, (5) Training analysis"

NEPQ Phase Analyzer

Parses call transcripts, maps turns to NEPQ phases, detects transition issues, and provides actionable insights.

Commands

  • /analyze-call [call_id] — Analyze specific call from Supabase
  • /analyze-call --transcript [text] — Analyze pasted transcript
  • /analyze-call --file [path] — Analyze transcript file
  • /analyze-calls --recent [n] — Analyze last N calls
  • /analyze-calls --failed — Analyze calls that didn't reach commitment

Reference Files

  • references/phase-patterns.md — NEPQ phase signatures and detection rules
  • references/objection-taxonomy.md — Objection classification system

NEPQ Phases Reference

Phase Purpose Key Signals
CONNECTING Pattern interrupt, get permission "bad time", "homeowner", "speaking with"
SITUATION_ASSESSMENT Understand current state "how long owned", "living there", "currently"
PROBLEM_AWARENESS Surface and amplify pain "challenge", "frustrating", "affecting", "difficult"
SOLUTION_AWARENESS Explore options tried "looked into", "considered", "tried"
CONSEQUENCE_PHASE Create urgency "what happens if", "another year", "continue"
COMMITMENT_CHECK Get micro-commitments "make sense", "send info", "schedule", "next step"

Analysis Output

Phase Timeline

Shows how conversation moved through phases:

Call Timeline: call_abc123 (2:35 duration)
═══════════════════════════════════════════

Turn 1 [0:00] CONNECTING
  Bot: "Hey, did I catch you at a bad time?"
  User: "No, go ahead."
  → Micro-commitment detected (+1)

Turn 2 [0:08] CONNECTING
  Bot: "Great. Am I speaking with the homeowner at 123 Main St?"
  User: "Yeah, that's me."
  → Micro-commitment detected (+1)

Turn 3 [0:15] SITUATION_ASSESSMENT ← Phase advanced
  Bot: "How long have you owned the property?"
  User: "About three years now."

Turn 4 [0:22] SITUATION_ASSESSMENT
  Bot: "Is anyone living there currently?"
  User: "No, it's been vacant for a while."

Turn 5 [0:30] PROBLEM_AWARENESS ← Phase advanced
  Bot: "What's been the biggest challenge with it being vacant?"
  User: "Honestly, it's a money pit. I'm behind on taxes."
  → Pain discovered: "behind on taxes"

...

Phase Analysis Summary

Phase Progression Analysis
══════════════════════════

Phases Reached: 5/6
  ✓ CONNECTING (2 turns)
  ✓ SITUATION_ASSESSMENT (3 turns)
  ✓ PROBLEM_AWARENESS (4 turns) ← Longest phase
  ✓ SOLUTION_AWARENESS (2 turns)
  ✓ CONSEQUENCE_PHASE (2 turns)
  ✗ COMMITMENT_CHECK (not reached)

Issues Detected:
  ⚠ Stalled in PROBLEM_AWARENESS (4 turns, max recommended: 3)
  ⚠ Call ended before commitment phase

Objections Raised: 1
  • "I want to think about it" → Handled with isolation question

Pain Points Discovered: 2
  • "behind on taxes"
  • "money pit"

Micro-commitments: 4
  • "go ahead" (turn 1)
  • "that's me" (turn 2)
  • "makes sense" (turn 7)
  • "fair enough" (turn 9)

Recommendations

Recommendations for Improvement
═══════════════════════════════

1. PROBLEM_AWARENESS was too long (4 turns)
   → Recommendation: After discovering 2 pain points, advance to
     SOLUTION_AWARENESS. Don't over-explore once pain is clear.

2. Call ended during CONSEQUENCE_PHASE
   → Recommendation: The "think about it" objection should have
     been followed by commitment attempt. Example:
     "Totally understand. Before you think it over, would it help
     if I sent you some info on how this works? No commitment."

3. Good: Pain discovery was effective
   → "behind on taxes" emerged organically from situation question

4. Good: Micro-commitment rate was healthy (4 in 11 turns)

Usage Examples

Analyze Specific Call

User: /analyze-call call_abc123
Claude: Fetching transcript from Supabase...

[Shows full analysis as above]

Analyze Recent Failures

User: /analyze-calls --failed --recent 5
Claude: Analyzing 5 most recent calls that didn't reach commitment...

Call 1 (call_xyz): Stalled at CONNECTING (prospect hung up)
  Issue: No pattern interrupt - jumped straight to pitch

Call 2 (call_abc): Stalled at PROBLEM_AWARENESS
  Issue: Didn't discover pain, only asked situation questions

Call 3 (call_def): Reached CONSEQUENCE but lost
  Issue: "Think about it" objection not properly isolated

Common Patterns:
- 3/5 calls had inadequate pattern interrupts
- 2/5 calls failed to discover genuine pain
- Average phase reached: SITUATION_ASSESSMENT

Recommendation: Focus on CONNECTING phase pattern interrupts
and deeper PROBLEM_AWARENESS questioning.

Analyze Pasted Transcript

User: /analyze-call --transcript
Bot: Hey John, did I catch you at a bad time?
User: What is this about?
Bot: I'm calling about your property on Main Street...

Claude: Analyzing transcript...

Phase Analysis:
  Turn 1: CONNECTING - Pattern interrupt delivered
  Turn 2: CONNECTING - Prospect asked clarifying question
  → Note: Prospect didn't give clear permission yet.
     Should have answered question then re-asked for permission.

Issue: Moved forward without explicit permission

Objection Analysis

The analyzer categorizes objections by type:

Category Examples Handling Strategy
Price "How much?", "What's your offer?" Deflect, continue discovery
Competition "I have a realtor", "Someone else called" Differentiate, explore gaps
Timing "Call me back", "Think about it" Isolate, soft close
Trust "How do I know you're legit?" Social proof, transparency
Ownership "Not the owner", "Renting" Verify, redirect or exit

Objection Handling Score

Objection Handling Analysis
═══════════════════════════

Total objections: 3
Successfully handled: 2 (67%)

Objection 1: "How much are you offering?"
  Category: Price
  Response: "Great question. To give you an accurate number, I'd need to
            understand more about the property's condition..."
  Result: ✓ Successfully deflected, returned to discovery

Objection 2: "I want to think about it"
  Category: Timing
  Response: "Totally understand. When you say think about it, is it the
            timing or is there something specific you're unsure about?"
  Result: ✓ Successfully isolated concern

Objection 3: "I'm not interested"
  Category: Rejection
  Response: "I appreciate that. Just curious, what would change your mind?"
  Result: ✗ Prospect hung up

Score: 67% (2/3)
Benchmark: 60% (above average)

Script Integration

Run analysis programmatically:

# Analyze single call
python skills/nepq-phase-analyzer/scripts/analyze_call.py --call-id call_abc123

# Analyze with JSON output
python skills/nepq-phase-analyzer/scripts/analyze_call.py --call-id call_abc123 --json

# Batch analysis
python skills/nepq-phase-analyzer/scripts/analyze_call.py --recent 10 --output report.json

Database Schema Expected

The analyzer expects these fields in conversation_transcripts:

SELECT
  call_id,
  lead_id,
  turns,      -- JSONB array of {speaker, text, timestamp}
  phases,     -- JSONB array of phase transitions
  metrics,    -- JSONB with micro_commitments, objections, etc.
  created_at
FROM conversation_transcripts
WHERE call_id = 'call_abc123';
Install via CLI
npx skills add https://github.com/isethius/RE-App --skill nepq-phase-analyzer
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator