A client needs to design a marketing or product analytics dashboard that connects business goals to daily metrics, with the right visualizations for the right audience.
How it works
- You provide the client name, business goals, available data sources, and target audience for the dashboard
- The skill builds a KPI hierarchy aligned to goals, specifies the dashboard layout with widget details, defines alert thresholds, and produces a data requirements doc
- It returns a complete dashboard specification that a designer or engineer can implement without ambiguity
Prompt
You are designing an analytics dashboard specification for a Kate Makrigiannis consulting engagement. Kate uses this to help clients move from scattered metrics and ad-hoc reporting to a structured dashboard that answers the right questions for the right people. The output is a build-ready specification, not a wireframe. Before writing, read knowledge/voice-tone-guide.md -- use the client-facing voice.
Inputs I will provide:
- Client: {{CLIENT}} (company name, product, business model)
- Business goals: {{GOALS}} (what the business is trying to achieve -- growth targets, efficiency goals, product milestones, board-level objectives)
- Data sources: {{DATA_SOURCES}} (analytics tools, databases, APIs, spreadsheets -- what they have today and what they are willing to add)
- Audience: {{AUDIENCE}} (who will use this dashboard -- executives, ops team, product managers, ICs, the whole company. Can be multiple audiences with different views.)
- Context (optional): {{CONTEXT}} (current reporting setup, pain points with existing dashboards, tool preferences, team data literacy, refresh cadence requirements)
Step 1: Clarify the dashboard purpose
Before designing anything, answer three questions:
- What decisions will this dashboard support? (If nobody will change behavior based on a metric, it does not belong on the dashboard.)
- Who needs to see what? (Executives need trends and exceptions. Ops needs real-time signals. ICs need diagnostic detail.)
- What is the current state of data infrastructure? (If the data does not exist yet, the dashboard spec becomes a data requirements doc first.)
If any of these are unclear from the inputs, flag: [CLARIFY WITH KATE: ...]
Step 2: Build the KPI hierarchy
Connect business goals to measurable KPIs in a clear hierarchy. Every metric on the dashboard must trace back to a business goal.
KPI Hierarchy
Business Goal: {{GOAL_1}}
├── Primary KPI: [metric that directly measures goal progress]
│ ├── Supporting Metric: [input that drives the primary KPI]
│ ├── Supporting Metric: [input that drives the primary KPI]
│ └── Supporting Metric: [input that drives the primary KPI]
└── Guardrail: [metric that ensures we're not breaking something while optimizing]
Business Goal: {{GOAL_2}}
├── Primary KPI: [metric]
│ ├── Supporting Metric: [metric]
│ └── Supporting Metric: [metric]
└── Guardrail: [metric]
For each metric in the hierarchy:
| Metric | Definition | Calculation | Goal Connection | Owner |
|---|---|---|---|---|
| [Name] | [What it measures in plain language] | [Exact formula: numerator / denominator, time window] | [Which business goal it serves] | [Team or person responsible] |
Metric count check: A well-designed dashboard has 8-15 metrics total. More than 15 creates noise. Fewer than 8 may miss important signals. If the hierarchy produces more than 15 metrics, recommend splitting into multiple views. If fewer than 8, check for blind spots.
Step 3: Design the dashboard layout
Specify the layout for each audience. If multiple audiences are specified, design separate views.
Dashboard Layout: {{AUDIENCE}} View
Layout principle: Most important metrics at top-left. Scanning pattern follows an F-shape: top row for headlines, left column for primary KPIs, right side for supporting detail.
Top Row: Headlines
| Position | Widget | Metric | Chart Type | Why This Type | Refresh |
|---|---|---|---|---|---|
| Top-left | Primary KPI | [North Star or top-line metric] | Single number with trend arrow and sparkline | Immediate signal: are we up or down? | [Real-time / Hourly / Daily] |
| Top-center | Goal Progress | [Primary goal metric vs. target] | Progress bar or gauge | Visual gap-to-goal for quick read | [Daily / Weekly] |
| Top-right | Alert Summary | [Count of metrics in alert state] | Traffic light or badge count | Exception-based: draws attention only when needed | [Real-time / Hourly] |
Primary KPI Row
| Position | Widget | Metric | Chart Type | Why This Type | Refresh | Time Range |
|---|---|---|---|---|---|---|
| Row 2, Col 1 | [KPI Name] | [Definition] | [Line chart / Bar / Area] | [Reason] | [Cadence] | [Last 30 days / 12 weeks / etc.] |
| Row 2, Col 2 | [KPI Name] | [Definition] | [Chart type] | [Reason] | [Cadence] | [Range] |
| Row 2, Col 3 | [KPI Name] | [Definition] | [Chart type] | [Reason] | [Cadence] | [Range] |
Supporting Metrics Row
| Position | Widget | Metric | Chart Type | Why This Type | Refresh | Time Range |
|---|---|---|---|---|---|---|
| Row 3, Col 1 | [Name] | [Definition] | [Chart type] | [Reason] | [Cadence] | [Range] |
| Row 3, Col 2 | [Name] | [Definition] | [Chart type] | [Reason] | [Cadence] | [Range] |
| Row 3, Col 3 | [Name] | [Definition] | [Chart type] | [Reason] | [Cadence] | [Range] |
Guardrails Row
| Position | Widget | Metric | Chart Type | Why This Type | Refresh | Threshold |
|---|---|---|---|---|---|---|
| Row 4, Col 1 | [Name] | [Definition] | [Horizontal bar with threshold line] | Shows current value against acceptable range | [Cadence] | [Acceptable range] |
| Row 4, Col 2 | [Name] | [Definition] | [Chart type] | [Reason] | [Cadence] | [Range] |
Chart Type Selection Guide
Use this logic for each metric:
| Data Pattern | Recommended Chart | Avoid |
|---|---|---|
| Single current value | Large number with trend arrow | Pie chart, bar |
| Trend over time (one series) | Line chart or area chart | Bar chart (harder to read trends) |
| Trend over time (2-3 series) | Multi-line chart | Stacked area (obscures individual trends) |
| Comparison across categories | Horizontal bar chart | Vertical bar (harder to label), pie chart |
| Part of whole (2-5 segments) | Stacked bar or donut | Pie chart with > 5 segments |
| Distribution | Histogram or box plot | Line chart |
| Funnel progression | Funnel chart | Bar chart |
| Goal vs. actual | Bullet chart or progress bar | Line chart (does not show target clearly) |
| Geographic data | Choropleth map | Tables |
Step 4: Define alert thresholds
For each alertable metric, specify when to raise an alarm and who should respond.
Alert Definitions
| Metric | Green (Normal) | Yellow (Watch) | Red (Act) | Notification Channel | Responder | Expected Response |
|---|---|---|---|---|---|---|
| [Metric 1] | [Range] | [Range] | [Range] | [Slack / Email / PagerDuty] | [Role] | [What they should do first] |
| [Metric 2] | [Range] | [Range] | [Range] | [Channel] | [Role] | [First response action] |
| [Metric 3] | [Range] | [Range] | [Range] | [Channel] | [Role] | [First response action] |
Threshold-setting logic:
- Green: Within 1 standard deviation of the trailing 30-day average (or within target range if targets are set)
- Yellow: 1-2 standard deviations from average, or trending toward Red for 3+ consecutive data points
- Red: More than 2 standard deviations from average, or below a hard floor that indicates a problem (e.g., conversion rate < X%, error rate > Y%)
If the client does not have enough historical data to set statistical thresholds, use business-judgment thresholds and flag: [ASSUMPTION: alert thresholds set based on business targets rather than statistical baselines -- recommend revisiting after 90 days of data collection]
Step 5: Data requirements document
Specify exactly what data the dashboard needs and where it comes from. This is the handoff to the engineering or analytics team.
Data Requirements
| Metric | Data Source | Table/Endpoint | Fields Needed | Transformations | Available Today? |
|---|---|---|---|---|---|
| [Metric 1] | [e.g., Google Analytics, Stripe, product database] | [Specific table or API endpoint] | [Column names or API fields] | [Any calculations, joins, or aggregations] | [Yes / Partial / No] |
| [Metric 2] | [Source] | [Table] | [Fields] | [Transforms] | [Yes / Partial / No] |
Data gaps: For each metric marked "Partial" or "No":
- What's missing: [Specific data or instrumentation needed]
- Effort to add: [Low: config change / Medium: new event tracking / High: new integration or pipeline]
- Workaround: [Temporary alternative if the ideal data is not available yet -- e.g., "Use Google Analytics goal completions as a proxy until product-side event tracking is implemented"]
Step 6: Implementation roadmap
Phased Build Plan
Phase 1: Foundation (Week 1-2) Build with data that exists today. Focus on the top-row headline metrics and primary KPIs.
- Metrics included: [list]
- Data sources connected: [list]
- Audience: [who can use it immediately]
Phase 2: Depth (Week 3-4) Add supporting metrics and guardrails. Requires any new instrumentation from the data requirements.
- Metrics added: [list]
- New data sources: [list]
- Alerts activated: [list]
Phase 3: Polish (Week 5-6) Add audience-specific views, drill-down capabilities, and automated reporting.
- Additional views: [list]
- Drill-down paths: [e.g., "Click on conversion rate to see by channel, then by campaign"]
- Scheduled reports: [e.g., "Weekly email digest to leadership every Monday at 8am"]
Tool Recommendation (if applicable)
If the client asked for tool guidance or lacks a dashboard platform:
| Tool | Best For | Cost | Data Literacy Needed | Integration Strength |
|---|---|---|---|---|
| [Tool 1] | [Use case] | [Pricing tier] | [Low / Medium / High] | [Connects to X, Y, Z] |
| [Tool 2] | [Use case] | [Pricing tier] | [Level] | [Integrations] |
Only recommend tools if the context calls for it. If the client already has a platform, design for that platform.
Kate's Talking Points
- Why this dashboard is structured this way (goal hierarchy, not just "metrics we can track")
- What the dashboard will NOT tell them (limitations, metrics that require qualitative context)
- How to run the review cadence: daily glance, weekly review, monthly deep-dive
- When to revisit the dashboard design (after major product changes, new goals, or quarterly strategy shifts)
For defining the North Star Metric that anchors this dashboard, use
/north-star-metric. For the metrics framework underlying the dashboard, use/metrics-dashboard. For funnel-specific views within this dashboard, use/funnel-analysis.
Example Output
Input
- Client: Mosaic Health, a B2B2C digital health platform that sells mental wellness tools to self-insured employers, who then offer them as a benefit to employees
- Business goals: (1) Grow employer-reported utilization rate to 40% of enrolled employees by Q4; (2) Reduce member churn (subscription cancellations) to below 8% annually; (3) Hit $4.2M ARR by year-end, currently at $2.9M
- Data sources: Mixpanel (product events), Salesforce (employer accounts and renewals), Stripe (billing and subscription data), Intercom (support tickets), internal PostgreSQL database (session and engagement tables), employer-provided enrollment CSVs uploaded monthly
- Audience: Two audiences — (1) VP of Customer Success and her team of 4 CSMs who manage employer accounts; (2) CPO and two senior PMs who track product engagement
- Context: Current reporting is a mix of a Salesforce dashboard nobody trusts, a weekly manual Excel report the CS team assembles on Fridays, and Mixpanel charts bookmarked individually by each PM. The CS team's biggest complaint is not knowing which employer accounts are at risk before renewal conversations. Data literacy is moderate across both teams. They want to build in Looker, which is already licensed but barely used.
Output (abbreviated)
Analytics Dashboard Specification
Mosaic Health — Customer Success & Product Views
Prepared for Kate Makrigiannis Consulting
Step 1: Dashboard Purpose
What decisions will this dashboard support?
- CS team: Which employer accounts need proactive outreach this week? Which are healthy enough to discuss upsell?
- Product team: Which engagement features correlate with retention? Where is the activation funnel breaking down?
- Leadership: Are we on track to hit $4.2M ARR and the 40% utilization target?
Who needs to see what?
- CS View: Account-level health signals, utilization by employer, renewal risk flags, support ticket volume — needs to answer "which accounts do I call today"
- Product View: Activation funnel, feature engagement, cohort retention, session depth — needs to answer "where are members dropping off and why"
Data infrastructure assessment: Employer enrollment CSVs uploaded monthly create a latency risk for utilization metrics — the denominator (enrolled employees) is only as current as the last upload. Flag this as a known limitation.
[CLARIFY WITH KATE: Confirm whether Mosaic defines "utilization" as any login in 30 days or a more meaningful engagement event (e.g., completing at least one session). This changes the Primary KPI definition materially.]
Step 2: KPI Hierarchy
Business Goal: Grow utilization to 40% of enrolled employees by Q4
├── Primary KPI: Monthly Active Utilization Rate
│ ├── Supporting Metric: 30-Day Activation Rate (new members who complete first session)
│ ├── Supporting Metric: Weekly Active Members (rolling 7-day engaged users)
│ └── Supporting Metric: Sessions per Active Member (depth of engagement)
└── Guardrail: Employer Enrollment Accuracy (% of accounts with CSVs uploaded within 30 days)
Business Goal: Reduce member churn below 8% annually
├── Primary KPI: Annualized Member Churn Rate
│ ├── Supporting Metric: 30-Day Retention by Cohort
│ ├── Supporting Metric: Account Health Score (composite — see definition below)
│ └── Supporting Metric: At-Risk Account Count (accounts scoring below threshold)
└── Guardrail: Support Ticket Resolution Time (proxy for member frustration)
Business Goal: Reach $4.2M ARR by year-end
├── Primary KPI: Current ARR
│ ├── Supporting Metric: Net Revenue Retention (NRR)
│ ├── Supporting Metric: Employer Renewal Rate (trailing 12 months)
│ └── Supporting Metric: ARR Gap to Target (absolute $ and % remaining)
└── Guardrail: Average Contract Value Trend (ensure growth is not coming from discounting)
Metric Definitions
| Metric | Definition | Calculation | Goal Connection | Owner |
|---|---|---|---|---|
| Monthly Active Utilization Rate | % of enrolled employees who engaged with the platform in the last 30 days | Active members (30-day) ÷ Total enrolled employees × 100 | Utilization to 40% | CS Team |
| Annualized Member Churn Rate | % of members who cancel in a rolling 12-month window | Cancelled members (L12M) ÷ Avg members (L12M) × 100 | Churn below 8% | CS + Product |
| Current ARR | Total annualized recurring revenue from active employer contracts | Sum of (monthly contract value × 12) for all active Stripe subscriptions | $4.2M ARR | CS Team |
| Account Health Score | Composite score (0–100) per employer account based on utilization rate, recent support tickets, and days since last CSM touchpoint | Weighted: Utilization (50%), Ticket volume (25%), CSM recency (25%) | Churn prevention | CS Team |
| 30-Day Activation Rate | % of newly enrolled members who complete their first guided session within 30 days | Members completing Session 1 (within 30 days of enrollment) ÷ New enrollees × 100 | Utilization, Churn | Product |
| Net Revenue Retention | Revenue retained + expansion from existing customers, net of churn and contraction | (Starting ARR + Expansion − Churn − Contraction) ÷ Starting ARR × 100 | ARR growth | CS Team |
| Sessions per Active Member | Average number of sessions completed by active members in last 30 days | Total sessions (L30D) ÷ Active members (L30D) | Utilization depth | Product |
| At-Risk Account Count | Number of employer accounts with Health Score below 45 | COUNT of accounts where Health Score < 45 | Churn prevention | CS Team |
| ARR Gap to Target | Dollar and % distance from $4.2M target | $4.2M − Current ARR | ARR goal | CS Team |
| 30-Day Retention by Cohort | % of members from a given enrollment month still active 30 days later | Members active at Day 30 ÷ Members enrolled in cohort × 100 | Churn reduction | Product |
| Support Ticket Resolution Time | Median hours to close a member-reported support ticket | Median of (closed_at − created_at) across all closed tickets (L30D) | Guardrail | CS Team |
| Average Contract Value | Mean ARR per active employer contract | Current ARR ÷ Count of active employer contracts | Guardrail — ACV trend | CS Team |
Metric count check: 12 metrics across two views — within the 8–15 target range. ✓
Step 3: Dashboard Layout
Dashboard Layout: Customer Success View
Design principle: CS team needs account-level action signals above all else. Top row answers "how are we doing overall?" Rows 2–3 answer "which accounts need attention now?"
Top Row: Headlines
| Position | Widget | Metric | Chart Type | Why This Type | Refresh |
|---|---|---|---|---|---|
| Top-left | ARR Tracker | Current ARR vs. $4.2M target | Progress bar with $ value and % to goal | Immediate gap-to-goal read without mental math | Daily |
| Top-center | Utilization Rate | Monthly Active Utilization Rate (all accounts) | Large number + sparkline (L13 weeks) + trend arrow | Single most important leading indicator for renewals | Daily |
| Top-right | At-Risk Alerts | At-Risk Account Count (Health Score < 45) | Badge count with red/yellow state | Exception-based — CS only acts when this number is nonzero | Daily |
Primary KPI Row
| Position | Widget | Metric | Chart Type | Why This Type | Refresh | Time Range |
|---|---|---|---|---|---|---|
| Row 2, Col 1 | Account Health Scorecard | Health Score by employer account | Sortable table: employer name, score, utilization %, last CSM touch, renewal date | Tables win here — CSMs need to scan and prioritize specific accounts, not trends | Daily | Current snapshot + renewal date as sort option |
| Row 2, Col 2 | Churn |