home / skills / aj-geddes / useful-ai-prompts / kpi-dashboard-design

kpi-dashboard-design skill

/skills/kpi-dashboard-design

This skill helps you design and build KPI dashboards that visualize metrics and reveal actionable insights for stakeholders.

npx playbooks add skill aj-geddes/useful-ai-prompts --skill kpi-dashboard-design

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
9.7 KB
---
name: kpi-dashboard-design
description: Design and build dashboards that track key performance indicators. Select relevant metrics, visualize data effectively, and communicate insights to stakeholders.
---

# KPI Dashboard Design

## Overview

Effective KPI dashboards make performance visible, enable data-driven decisions, and help teams align around shared goals.

## When to Use

- Creating performance measurement systems
- Leadership reporting and visibility
- Operational monitoring
- Project progress tracking
- Team performance management
- Customer health monitoring
- Financial reporting

## Instructions

### 1. **KPI Selection Framework**

```python
# Select relevant, measurable KPIs

class KPISelection:
    KPI_CRITERIA = {
        'Relevant': 'Directly aligned with business strategy',
        'Measurable': 'Can be quantified and tracked',
        'Actionable': 'Team can influence the metric',
        'Timely': 'Measured frequently (daily/weekly)',
        'Bounded': 'Has clear target/threshold',
        'Simple': 'Easy to understand'
    }

    def identify_business_goals(self):
        """Map goals to KPIs"""
        return {
            'Revenue Growth': [
                'Monthly Recurring Revenue (MRR)',
                'Annual Recurring Revenue (ARR)',
                'Customer Lifetime Value (CLV)',
                'Average Revenue Per User (ARPU)'
            ],
            'Customer Acquisition': [
                'Customer Acquisition Cost (CAC)',
                'Conversion Rate',
                'Traffic to Lead Rate',
                'Sales Pipeline Value'
            ],
            'Customer Retention': [
                'Churn Rate',
                'Net Promoter Score (NPS)',
                'Customer Satisfaction (CSAT)',
                'Retention Rate'
            ],
            'Operational Efficiency': [
                'Cost per Customer',
                'Time to Value',
                'System Uptime',
                'Support Response Time'
            ],
            'Product Quality': [
                'Defect Rate',
                'Feature Adoption',
                'User Engagement',
                'Performance Score'
            ]
        }

    def validate_kpi(self, kpi):
        """Check KPI against criteria"""
        validation = {}

        for criterion, definition in self.KPI_CRITERIA.items():
            validation[criterion] = {
                'definition': definition,
                'assessment': self.assess_criterion(kpi, criterion),
                'rating': 'Pass' if self.assess_criterion(kpi, criterion) else 'Fail'
            }

        is_valid = all(v['rating'] == 'Pass' for v in validation.values())

        return {
            'kpi': kpi.name,
            'validation': validation,
            'is_valid': is_valid,
            'recommendation': 'Include in dashboard' if is_valid else 'Refine or exclude'
        }

    def define_kpi_target(self, kpi):
        """Set measurable targets"""
        return {
            'kpi': kpi.name,
            'current_value': kpi.current,
            'target_value': kpi.target,
            'time_period': 'Q1 2025',
            'improvement': f"{(kpi.target - kpi.current) / kpi.current * 100:.1f}%",
            'owner': kpi.owner,
            'review_frequency': 'Weekly',
            'threshold_green': kpi.target,
            'threshold_yellow': kpi.target * 0.9,
            'threshold_red': kpi.target * 0.7
        }
```

### 2. **Dashboard Design**

```yaml
Dashboard Design Template:

Name: Sales Performance Dashboard
Audience: Sales Team, Management
Update Frequency: Daily
Users: 15 sales reps, 3 managers

---

## Dashboard Structure

### Top Section: Executive Summary (30% height)
  - Total Revenue (YTD): $2.5M (vs $2.2M target)
  - Pipeline Value: $8.7M (vs $7.5M target)
  - Win Rate: 28% (vs 25% target) - GREEN
  - Average Deal Size: $125K (vs $120K target)

### Left Column: Sales Performance (35% width)

  Sales by Rep (Ranked)
    - John Smith: $850K
    - Jane Doe: $720K
    - Bob Johnson: $630K
    - ...visualization: Horizontal bar chart

  Sales Trend (YTD)
    - Chart type: Line chart
    - X-axis: Months
    - Y-axis: Revenue
    - Target line overlaid
    - Goal: Show trend vs plan

### Right Column: Pipeline Analysis (35% width)

  Pipeline by Stage
    - Prospecting: $1.2M (12 deals)
    - Qualification: $2.1M (18 deals)
    - Proposal: $3.2M (15 deals)
    - Negotiation: $2.2M (8 deals)
    - Visualization: Funnel chart

  Deal Velocity
    - Avg days in stage by stage
    - Bottlenecks identification
    - Conversion rates

### Bottom Section: Detailed Metrics (20% height)

  Key Metrics Row:
    - Deals Closed This Month: 6
    - Average Sales Cycle: 45 days
    - Win Rate vs. Competitors: 28% vs 22%
    - Customer Satisfaction: 4.3/5

---

## Visual Design Principles

Color Coding:
  Green (On Target):  #4CAF50
  Yellow (At Risk):   #FFC107
  Red (Off Track):    #F44336
  Gray (No Data):     #9E9E9E

Data Visualization:
  - Sales Performance: Line or Column chart
  - Pipeline Stage: Funnel or Waterfall chart
  - Geographic: Map with heat zones
  - Trend: Area or Line chart
  - Distribution: Bar or Pie chart
  - Comparison: Grouped bar chart

Interactivity:
  - Click to drill down to details
  - Filter by rep, region, product
  - Time period selector
  - Export to PDF/Excel
  - Alerts for threshold violations

---

## Refresh Strategy

Real-Time (every 5 minutes):
  - Active sales calls
  - Deal status changes

Hourly:
  - Revenue totals
  - Pipeline updates

Daily (overnight):
  - Historical trends
  - Aggregated reports

Manual:
  - Target adjustments
  - Threshold changes
```

### 3. **Dashboard Implementation**

```javascript
// Build dashboard with data integration

class KPIDashboard {
  constructor(config) {
    this.config = config;
    this.widgets = [];
    this.data = {};
    this.alerts = [];
  }

  createWidget(kpi) {
    return {
      id: `widget-${kpi.id}`,
      title: kpi.name,
      metric_value: kpi.current_value,
      target_value: kpi.target_value,
      threshold: this.calculateThreshold(kpi),
      visualization: {
        type: kpi.chart_type, // 'gauge', 'number', 'chart'
        config: this.getVisualizationConfig(kpi)
      },
      drill_down: true,
      refresh_frequency: kpi.refresh_rate || 'hourly'
    };
  }

  calculateThreshold(kpi) {
    const range = kpi.target_value - kpi.minimum_value;

    return {
      green: kpi.target_value,
      yellow: kpi.target_value - (range * 0.2),
      red: kpi.target_value - (range * 0.5),
      status: this.getStatus(kpi),
      trend: this.calculateTrend(kpi)
    };
  }

  getStatus(kpi) {
    const percentOfTarget = kpi.current_value / kpi.target_value;

    if (percentOfTarget >= 1) return 'Green';
    if (percentOfTarget >= 0.8) return 'Yellow';
    return 'Red';
  }

  calculateTrend(kpi) {
    const change = kpi.current_value - kpi.previous_period_value;
    const changePercent = (change / kpi.previous_period_value) * 100;

    return {
      direction: change > 0 ? 'Up' : 'Down',
      value: Math.abs(changePercent).toFixed(1),
      momentum: this.assessMomentum(change, kpi)
    };
  }

  generateAlerts() {
    return this.widgets
      .filter(w => w.threshold.status !== 'Green')
      .map(w => ({
        severity: w.threshold.status,
        message: `${w.title} is ${w.threshold.status} (${w.metric_value} vs ${w.target_value} target)`,
        action: 'Review and investigate',
        timestamp: new Date()
      }));
  }

  exportReport() {
    return {
      format: ['PDF', 'Excel', 'CSV'],
      include: ['Metrics', 'Charts', 'Trends', 'Commentary'],
      schedule: 'Weekly, every Monday morning'
    };
  }
}
```

### 4. **KPI Monitoring & Governance**

```yaml
KPI Governance Framework:

Quarterly KPI Review:
  - Review progress against targets
  - Adjust targets if needed
  - Celebrate achievements
  - Identify improvement areas
  - Update documentation

Annual KPI Assessment:
  - Reassess KPI relevance
  - Align with strategy changes
  - Remove obsolete metrics
  - Add new metrics as needed
  - Update dashboard design

---

KPI Health Check:

Ask these questions monthly:

1. Is this KPI still relevant?
   If No: Mark for retirement

2. Do we have accurate data?
   If No: Fix data source

3. Is it actionable?
   If No: Drill down to driver metrics

4. Is target realistic?
   If No: Adjust based on new data

5. Are we taking action on insights?
   If No: Improve governance/communication

---

Common KPI Mistakes to Avoid:

1. Too Many KPIs (limit to 5-7)
2. Lagging metrics only (include leading too)
3. No ownership assigned
4. Targets not aligned with strategy
5. Dashboard not updated regularly
6. No drill-down capability
7. Metrics not actionable by team
8. Ignoring data quality issues
9. No connection to compensation/goals
10. Dashboard unused by stakeholders
```

## Best Practices

### ✅ DO
- Start with business goals, not data
- Limit dashboards to 5-7 core metrics
- Include both leading and lagging indicators
- Assign clear metric ownership
- Update dashboards regularly
- Make drill-down available
- Use visual hierarchy effectively
- Test with actual users
- Include context and benchmarks
- Document metric definitions

### ❌ DON'T
- Create dashboards without clear purpose
- Include too many metrics (analysis paralysis)
- Forget about data quality
- Build without stakeholder input
- Use confusing visualizations
- Leave dashboards stale
- Ignore mobile viewing experience
- Skip training on dashboard usage
- Create metrics no one can influence
- Change metrics frequently

## KPI Dashboard Tips

- Use traffic light colors (green/yellow/red)
- Include month-to-date and year-to-date views
- Show trend arrows for quick scanning
- Add comparison to previous period
- Enable drill-down to supporting data

Overview

This skill designs and builds KPI dashboards that make performance visible and drive data-informed action. It helps select relevant metrics, set targets, choose visualizations, and package insights for stakeholders. The focus is on clarity, ownership, and regular governance to keep dashboards useful over time.

How this skill works

The skill guides KPI selection using relevance, measurability, actionability, timeliness, bounded targets, and simplicity. It provides dashboard templates and visualization patterns (executive summary, performance columns, pipeline analysis, detailed metrics) and offers implementation patterns for widgets, thresholds, trends, and alerting. It also includes refresh strategies and a governance cadence to validate and retire metrics.

When to use it

  • Creating a performance measurement system for a team or product
  • Leadership reporting and executive dashboards
  • Operational monitoring and incident awareness
  • Project progress and milestone tracking
  • Customer health and retention monitoring

Best practices

  • Start from business goals and map each KPI to an outcome
  • Limit the dashboard to 5–7 core metrics per audience for focus
  • Include both leading and lagging indicators and clear ownership
  • Use color-coded thresholds and trend arrows for quick scanning
  • Provide drill-downs, filters (time, team, region), and export options
  • Run regular reviews: weekly monitoring, quarterly governance, annual reassessment

Example use cases

  • Sales performance dashboard showing revenue, pipeline, win rate, and deal velocity
  • Customer success dashboard tracking churn, NPS, engagement, and time-to-value
  • Operational dashboard for system uptime, support response time, and incident trends
  • Product health dashboard with feature adoption, defect rate, and user engagement
  • Finance dashboard for MRR/ARR, ARPU, CAC, and burn-rate against targets

FAQ

How many KPIs should a dashboard contain?

Aim for 5–7 core KPIs per dashboard audience to avoid overload and keep focus on decision-making.

How often should dashboards refresh?

Use real-time (minutes) for active operational signals, hourly for transactional totals, and daily for aggregated historical trends.

What if a KPI is not actionable?

Either drill down to driver metrics that the team can influence or retire the KPI if it cannot lead to changes.