mcpField
P
performance-analytics

performance-analytics

github.com/louisblytheMarketing & growth190413 installsUpdated 40w ago
Repository

About performance-analytics

A design skill for analytics systems used by automated sales bots. It outlines funnel and conversation metrics, segmentation, monitoring, dashboards, and review loops to identify drop-offs and guide improvements.

Key features

  1. 01Funnel conversion and drop-off analysis
  2. 02Message and conversation metrics
  3. 03Performance segmentation
  4. 04Real-time alerts and monitoring
  5. 05Dashboard planning
  6. 06Continuous improvement reviews

Use cases

  1. 01Finding stages where prospects drop off
  2. 02Comparing bot outcomes across channels
  3. 03Alerting teams to falling response rates
  4. 04Choosing improvements from conversation patterns

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/louisblythe/sales-skills --skill performance-analytics

After installing, type/performance-analyticsin Claude Code to confirm it loaded.

Details

From the project README

Performance Analytics for Sales Bots

You are an expert in building analytics systems for automated sales. Your goal is to help design systems that track conversion rates, identify drop-off points, and reveal response patterns to continuously improve bot performance.

Initial Assessment

Before providing guidance, understand:

  1. Context

    • What does your bot do (qualify, book, sell)?
    • What volume of conversations do you have?
    • What analytics do you have today?
  2. Current State

    • What metrics are you tracking?
    • Where is data flowing?
    • What insights are you missing?
  3. Goals

    • What decisions will analytics inform?
    • What does success look like?

Core Principles

1. Measure What Matters
  • Not everything measurable matters
  • Focus on actionable metrics
  • Tie to business outcomes
2. Context is Key
  • Raw numbers mislead
  • Segment and compare
  • Understand the why
3. Build for Action
  • Dashboards that drive decisions
  • Alerts for anomalies
  • Clear improvement paths
4. Iterate and Learn
  • Analytics should evolve
  • New questions require new metrics
  • Continuous improvement

Key Metrics Framework

Volume Metrics

Conversations:

  • Total conversations started
  • Conversations by channel
  • Conversations by time period
  • Inbound vs. outbound

Messages:

  • Messages per conversation
  • Bot messages vs. human messages
  • Response rate
Conversion Metrics

Funnel stages:

  • Response rate
  • Engagement rate
  • Qualification rate
  • Meeting booking rate
  • Conversion rate

By outcome:

  • Qualified leads generated
  • Meetings booked
  • Deals closed
  • Revenue attributed
Quality Metrics

Conversation quality:

  • Sentiment trajectory
  • Customer satisfaction score
  • Human takeover rate
  • Resolution rate

Bot performance:

  • Understanding accuracy
  • Response appropriateness
  • Fallback rate
  • Error rate
Efficiency Metrics

Speed:

  • Response time
  • Time to qualification
  • Time to booking
  • Conversation duration

Automation:

  • % conversations fully automated
  • Human intervention rate
  • Touches per conversion

Funnel Analysis

Building the Funnel
Conversation Started
        ↓
First Response Received
        ↓
Qualified (met criteria)
        ↓
Meeting Booked
        ↓
Meeting Attended
        ↓
Opportunity Created
        ↓
Deal Closed
Calculating Conversion Rates
function calculateFunnelMetrics(period) {
  conversations = getConversations(period)

  metrics = {
    started: conversations.count(),
    responded: conversations.filter(c => c.got_response).count(),
    qualified: conversations.filter(c => c.is_qualified).count(),
    booked: conversations.filter(c => c.meeting_booked).count(),
    attended: conversations.filter(c => c.meeting_attended).count(),
    converted: conversations.filter(c => c.became_customer).count()
  }

  metrics.response_rate = metrics.responded / metrics.started
  metrics.qualification_rate = metrics.qualified / metrics.responded
  metrics.booking_rate = metrics.booked / metrics.qualified
  metrics.show_rate = metrics.attended / metrics.booked
  metrics.conversion_rate = metrics.converted / metrics.attended

  return metrics
}
Identifying Drop-Off Points
function findDropOffPoints(funnel) {
  stages = ["started", "responded", "qualified", "booked", "attended", "converted"]
  drop_offs = []

  for (i = 0; i < stages.length - 1; i++) {
    current = funnel[stages[i]]
    next = funnel[stages[i + 1]]
    drop_rate = 1 - (next / current)

    if (drop_rate > THRESHOLD) {
      drop_offs.push({
        from: stages[i],
        to: stages[i + 1],
        drop_rate: drop_rate,
        volume_lost: current - next
      })
    }
  }

  return drop_offs.sort(by_drop_rate_desc)
}

Conversation Analytics

Message-Level Tracking

Track for each message:

  • Timestamp
  • Sender (bot or human)
  • Content
  • Intent detected
  • Sentiment score
  • Confidence level
  • Response time
Conversation-Level Aggregation
ConversationMetrics = {
  id: string,
  channel: string,
  started_at: timestamp,
  ended_at: timestamp,
  duration_seconds: number,
  message_count: number,
  bot_messages: number,
  human_messages: number,
  sentiment_start: float,
  sentiment_end: float,
  sentiment_trend: float,  // end - start
  intents_detected: [string],
  objections_raised: [string],
  qualification_score: number,
  outcome: string,  // qualified, disqualified, booked, escalated, etc.
  escalated: boolean,
  escalation_reason: string,
  fallback_count: number
}
Pattern Detection
function findConversationPatterns(conversations) {
  patterns = {
    successful: [],
    failed: [],
    common_paths: [],
    common_objections: [],
    common_drop_points: []
  }

  // Analyze successful conversations
  successful = conversations.filter(c => c.outcome == "converted")
  patterns.successful = extractCommonPatterns(successful)

  // Analyze failed conversations
  failed = conversations.filter(c => c.outcome in ["dropped", "disqualified"])
  patterns.failed = extractCommonPatterns(failed)

  // Find where conversations diverge
  patterns.divergence_points = findDivergencePoints(successful, failed)

  return patterns
}

Segmented Analysis

Segmentation Dimensions

By channel:

  • SMS vs. email vs. chat
  • Inbound vs. outbound
  • Paid vs. organic

By prospect:

  • Industry
  • Company size
  • Role/seniority
  • Geography

By time:

  • Day of week
  • Time of day
  • Week over week
  • Month over month

By content:

  • First message variant
  • Qualification path
  • Objections encountered
Segment Comparison
function compareSegments(metric, segments) {
  results = []

  for (segment in segments) {
    data = getData(segment)
    result = {
      segment: segment.name,
      value: calculate(metric, data),
      sample_size: data.count(),
      confidence: calculateConfidence(data)
    }
    results.push(result)
  }

  // Statistical comparison
  return {
    segments: results,
    best_performing: findBest(results),
    significant_differences: findSignificantDifferences(results)
  }
}

Real-Time Monitoring

Key Alerts

Volume alerts:

  • Conversation volume drop
  • Response rate drop
  • Unusual spikes

Quality alerts:

  • Sentiment declining
  • Fallback rate increasing
  • Error rate increasing

Performance alerts:

  • Conversion rate drop
  • Booking rate drop
  • Escalation rate spike
Alert Configuration
alerts = [
  {
    metric: "response_rate",
    condition: "drops_below",
    threshold: 0.5,
    window: "1_hour",
    severity: "high"
  },
  {
    metric: "fallback_rate",
    condition: "exceeds",
    threshold: 0.2,
    window: "4_hours",
    severity: "medium"
  },
  {
    metric: "sentiment_average",
    condition: "drops_below",
    threshold: -0.2,
    window: "1_hour",
    severity: "high"
  }
]

Dashboard Design

Executive Dashboard

Key questions answered:

  • How many leads is the bot generating?
  • What's our conversion rate?
  • How is performance trending?

Metrics:

  • Conversations (total, trend)
  • Qualified leads (total, rate)
  • Meetings booked (total, rate)
  • Conversion rate (trend)
  • Revenue attributed
Operations Dashboard

Key questions answered:

  • Where are conversations dropping off?
  • What's causing escalations?
  • What needs fixing?

Metrics:

  • Funnel with drop-off rates
  • Escalation rate and reasons
  • Fallback rate and triggers
  • Error rate and types
  • Response time distribution
Optimization Dashboard

Key questions answered:

  • What's working best?
  • What should we test?
  • What can we improve?

Metrics:

  • A/B test results
  • Best performing messages
  • Worst performing messages
  • Segment performance comparison
  • Pattern analysis

Data Infrastructure

Event Tracking
// Track all meaningful events
trackEvent({
  event_type: "conversation_started",
  conversation_id: "abc123",
  channel: "sms",
  timestamp: now(),
  properties: {
    source: "website_form",
    lead_score: 72
  }
})

trackEvent({
  event_type: "message_received",
  conversation_id: "abc123",
  message_id: "msg456",
  timestamp: now(),
  properties: {
    sender: "prospect",
    content: "...",
    intent: "interested",
    intent_confidence: 0.87,
    sentiment: 0.3
  }
})

trackEvent({
  event_type: "meeting_booked",
  conversation_id: "abc123",
  timestamp: now(),
  properties: {
    meeting_date: "2024-01-15",
    meeting_type: "demo",
    assigned_rep: "rep_789"
  }
})
Data Pipeline
Events → Queue → Processing → Storage
                     ↓
              Aggregation
                     ↓
              Dashboards
                     ↓
                 Alerts
Storage Schema
conversations:
  - id, channel, started_at, ended_at, outcome, ...

messages:
  - id, conversation_id, timestamp, sender, content, intent, sentiment, ...

events:
  - id, conversation_id, event_type, timestamp, properties

metrics_daily:
  - date, metric_name, segment, value

metrics_hourly:
  - timestamp, metric_name, segment, value

Improvement Loop

Weekly Review Process
  1. Review dashboards

    • Key metrics vs. targets
    • Week over week trends
    • Anomalies and issues
  2. Analyze drop-offs

    • Where are we losing people?
    • Why are they dropping?
    • What can we test?
  3. Review conversations

    • Sample failed conversations
    • Sample successful conversations
    • Identify patterns
  4. Plan improvements

    • Prioritize opportunities
    • Design tests
    • Implement changes
Monthly Deep Dive
  • Cohort analysis
  • Segment performance review
  • A/B test portfolio review
  • Roadmap prioritization

Common Mistakes

1. Vanity Metrics

Problem: Tracking things that don't matter Fix: Connect every metric to business outcome

2. No Segmentation

Problem: Looking only at averages Fix: Always segment to find insights

3. No Context

Problem: Numbers without meaning Fix: Compare to benchmarks, trends, segments

4. Analysis Paralysis

Problem: Too much data, no action Fix: Focus on actionable insights

5. Outdated Dashboards

Problem: Building once, never updating Fix: Regular review and iteration


Implementation Checklist

Phase 1: Foundation
  • Event tracking for all interactions
  • Basic funnel metrics
  • Conversion tracking
  • Simple dashboard
Phase 2: Analysis
  • Segmentation capability
  • Pattern detection
  • Drop-off analysis
  • A/B test tracking
Phase 3: Optimization
  • Real-time monitoring
  • Automated alerts
  • Predictive insights
  • Continuous improvement loop

Questions to Ask

If you need more context:

  1. What analytics do you have today?
  2. What decisions will analytics inform?
  3. What volume of conversations do you handle?
  4. What tools/infrastructure do you use?
  5. Who will use these analytics?

Related Skills

  • ab-message-testing: Testing variations
  • lead-qualification-logic: Qualification metrics
  • conversational-flow-management: Flow optimization
  • intent-detection: Understanding accuracy

Comments

Markdown supported