---
# === IDENTITY ===
id: business/startup-metrics/dashboard-design-for-startups/2026
canonical_question: "How do I design startup dashboards — metric selection, audience-specific views (founder, investor, team), tools?"
aliases:
  - "Startup dashboard design guide 2026"
  - "Audience-specific dashboard views for startups"
  - "Founder investor team dashboard layout"
entity_type: execution_recipe
domain: business > startup-metrics > dashboard design for startups
region: global
jurisdiction: global
temporal_scope: 2025-2026

# === VERIFICATION ===
last_verified: 2026-03-12
confidence: 0.87
version: 1.0
first_published: 2026-03-12

# === TEMPORAL VALIDITY ===
temporal_validity:
  status: evolving
  last_breaking_change: "Looker Studio expanded to 800+ connectors in late 2025; Metabase 0.50 added interactive embedding and SDK-based embedding; Databox restructured pricing tiers in Q1 2026"
  next_review: 2026-09-08
  change_sensitivity: high

# === CONSTRAINTS ===
constraints:
  - "Limit each dashboard view to 5-7 core KPIs — more widgets degrade clarity and load time"
  - "Looker Studio blended data limited to 5 sources per blend and 10 blends per report — pre-join in warehouse for complex models"
  - "Metabase self-hosted requires Docker or JVM runtime — budget 2 GB RAM minimum for production use"
  - "Dashboard must load in under 10 seconds with 90 days of data — pre-aggregate daily/weekly rollups if raw queries exceed this"
  - "Investor dashboards must use month-end snapshots, not real-time — investors compare months, not intra-day noise"
  - "PII must never appear on shared dashboards — aggregate all user-level data before visualization"

# === SKIP CONDITIONS ===
skip_this_unit_if:
  - condition: "User needs a metrics strategy or framework, not a working dashboard"
    use_instead: "business/startup-metrics/startup-kpi-framework-by-stage/2026"
  - condition: "User needs a marketing-specific dashboard with ad platform integrations"
    use_instead: "business/marketing-execution/marketing-dashboard-setup/2026"
  - condition: "User needs a real-time engineering/infrastructure monitoring dashboard"
    use_instead: "software/system-design/realtime-dashboard/2026"

# === AGENT HINTS ===
inputs_needed:
  - key: dashboard_tool
    question: "Which dashboard tool should be used?"
    type: choice
    options: ["Looker Studio (free)", "Metabase (open source)", "Geckoboard (TV dashboard)", "Databox (no-code)", "no preference — auto-select"]
  - key: technical_skill
    question: "What is the user's technical skill level?"
    type: choice
    options: ["non-technical (no-code only)", "semi-technical (can write SQL)", "developer (can write code and manage infrastructure)"]
  - key: budget_for_tools
    question: "What's the tool/API budget?"
    type: choice
    options: ["free tier only", "up to $50/month", "up to $200/month", "no limit"]
  - key: primary_audience
    question: "Who is the primary dashboard audience?"
    type: choice
    options: ["founder (daily ops)", "investors (monthly reporting)", "team (real-time TV)", "all three audiences"]

# === EXECUTION METADATA ===
execution:
  required_inputs:
    - name: "KPI definitions with targets"
      source: "founder / CFO / strategy agent"
      format: "spreadsheet or structured list of metric name, definition, target value, data source"
    - name: "Data source access credentials"
      source: "engineering / ops team"
      format: "API keys, database connection strings, or OAuth tokens for analytics, CRM, billing, and product databases"
    - name: "Audience list with roles"
      source: "founder"
      format: "list of dashboard viewers with role (founder, investor, team lead, IC)"

  outputs:
    - name: "Multi-view startup dashboard"
      format: "Looker Studio report URL or Metabase dashboard URL or Geckoboard live dashboard"
      description: "Interactive dashboard with audience-specific views — founder (daily ops), investor (monthly growth), team (real-time) — auto-refreshing on defined cadence"
    - name: "Dashboard documentation"
      format: "Document or wiki page"
      description: "Data dictionary, metric definitions, data source mappings, refresh schedule, and alert rules"
    - name: "Alert rule configuration"
      format: "Configured alerts in dashboard tool or Slack/email"
      description: "Threshold-based alerts for critical metrics — cash runway, churn spikes, revenue drops"

  tools_required:
    - name: "Google Looker Studio"
      purpose: "Free dashboard visualization with native Google integrations"
      tier: free
      cost: "$0"
      alternatives: ["Metabase", "Geckoboard", "Databox"]
    - name: "Metabase"
      purpose: "Open-source BI with SQL-based dashboards and self-hosting"
      tier: free
      cost: "$0 (self-hosted) or $85/mo (cloud Starter)"
      alternatives: ["Looker Studio", "Apache Superset", "Redash"]
    - name: "Geckoboard"
      purpose: "TV dashboard for team-facing real-time KPI display"
      tier: paid
      cost: "$39-299/mo"
      alternatives: ["Databox", "Klipfolio", "Simple KPI"]
    - name: "Databox"
      purpose: "No-code dashboard with 100+ native connectors"
      tier: paid
      cost: "$0 (free, 3 sources) to $135/mo (Growth)"
      alternatives: ["Geckoboard", "Klipfolio", "Looker Studio"]

  credentials_needed:
    - service: "Stripe / Chargebee / billing platform"
      type: "API key (read-only)"
      where_to_get: "https://dashboard.stripe.com/apikeys"
      free_tier_limits: "Unlimited reads"
    - service: "Google Analytics 4"
      type: "Google account with GA4 property access"
      where_to_get: "https://analytics.google.com"
      free_tier_limits: "Unlimited (standard property)"
    - service: "PostgreSQL / application database"
      type: "Read-only database connection string"
      where_to_get: "Your hosting provider's database settings"
      free_tier_limits: "N/A — depends on hosting"
    - service: "CRM (HubSpot / Salesforce)"
      type: "API key or OAuth token"
      where_to_get: "https://app.hubspot.com/api-key or Salesforce Setup"
      free_tier_limits: "HubSpot: 100 req/10s; Salesforce: 100K calls/24h"

  estimated_duration: "4-8 hours for initial setup; 30 minutes/week for maintenance"
  estimated_cost: "$0 (free tier) to $300/month (paid tools + connectors)"

# === DISTRIBUTION ===
canonical_source: "https://knowledgelib.io/business/startup-metrics/dashboard-design-for-startups/2026"
suggested_citation: "Source: knowledgelib.io — AI Knowledge Library (verified 2026-03-12)"

# === RELATED UNITS ===
related_kos:
  depends_on:
    - id: "business/startup-metrics/startup-kpi-framework-by-stage/2026"
      label: "Startup KPI framework by stage — pre-PMF, post-PMF, growth and scale metric sets with 2025-2026 benchmarks"
  feeds_into:
    - id: "business/startup-metrics/investor-reporting-template/2026"
      label: "Investor update system — monthly/quarterly structure and cadence, metric presentation, narrative framework"
  related_to:
    - id: "business/marketing-execution/marketing-dashboard-setup/2026"
      label: "Marketing-specific dashboard with ad platform integrations"
    - id: "finance/modeling/unit-economics-framework/2026"
      label: "How to calculate and benchmark startup unit economics — CAC, LTV, payback period, contribution margin, 3:1 LTV:CAC threshold"

# === SOURCES ===
sources:
  - id: src1
    title: "Effective Dashboard Design — A Step-by-Step Guide"
    author: Geckoboard
    url: https://www.geckoboard.com/best-practice/dashboard-design/
    type: guide
    published: 2025-10-01
    reliability: established
  - id: src2
    title: "Information Dashboard Design: Displaying Data for At-a-Glance Monitoring"
    author: Stephen Few
    url: https://www.perceptualedge.com/library.php
    type: book
    published: 2013-01-01
    reliability: authoritative
  - id: src3
    title: "Startup Metrics Dashboard Examples"
    author: Geckoboard
    url: https://www.geckoboard.com/dashboard-examples/executive/startup-dashboard/
    type: guide
    published: 2025-08-15
    reliability: established
  - id: src4
    title: "Klipfolio vs Databox: Analytics and Visualization Tools for SMEs"
    author: FemaleSwitch
    url: https://www.femaleswitch.com/startup-tools/tpost/klipfolio-vs-databox
    type: comparison
    published: 2026-01-20
    reliability: established
  - id: src5
    title: "David Sacks's Operating Cadence: Weekly Metrics, OKRs, and the CEO Dashboard"
    author: Capitaly
    url: https://www.capitaly.vc/blog/david-sacks-operating-cadence-weekly-metrics-okrs-ceo-dashboard
    type: analysis
    published: 2025-11-10
    reliability: established
  - id: src6
    title: "Adding and Managing Databases — Metabase Documentation"
    author: Metabase
    url: https://www.metabase.com/docs/latest/databases/connecting
    type: official_docs
    published: 2025-12-01
    reliability: authoritative
---

# Dashboard Design for Startups: Metric Selection, Audience Views, and Tool Setup

## Purpose

This recipe produces a working multi-view startup dashboard with audience-specific views (founder daily ops, investor monthly reporting, team real-time display), connected to live data sources (billing, analytics, CRM, product database), with configured refresh cadences and threshold-based alerting — deployed in Looker Studio, Metabase, Geckoboard, or Databox depending on skill level and budget. [src1]

## Prerequisites
<!-- Agents: verify ALL prerequisites before executing. Missing prerequisites = failed execution. -->

- [ ] **KPI definitions with targets** — list of 5-7 metrics per audience view with target values and data sources
- [ ] **Billing platform access** — read-only API key from [Stripe](https://dashboard.stripe.com/apikeys), Chargebee, or equivalent
- [ ] **Analytics access** — GA4 property with active data collection (minimum 30 days of data)
- [ ] **Application database** — read-only connection string to PostgreSQL/MySQL with product usage data
- [ ] **CRM access** — API key from [HubSpot](https://app.hubspot.com/api-key) or Salesforce connected app (optional — needed for pipeline view)
- [ ] **Dashboard tool account** — Looker Studio (free) at [lookerstudio.google.com](https://lookerstudio.google.com) OR Metabase instance at [metabase.com](https://www.metabase.com) OR Geckoboard at [geckoboard.com](https://www.geckoboard.com) OR Databox at [databox.com](https://databox.com)

## Constraints
<!-- Hard rules. Agents: enforce throughout execution. Violating these = broken output or legal risk. -->

- Limit each view to 5-7 KPIs. Dashboards with 50+ widgets get ignored within weeks — stakeholders cannot find what matters. [src2]
- Investor dashboards must show month-end snapshots, not real-time data. Investors compare months and expect consistent reporting periods. [src5]
- Dashboard must load in under 10 seconds with 90 days of data. Pre-aggregate in warehouse if raw queries exceed this threshold. [src1]
- Never display PII (names, emails, individual user data) on shared dashboards. Aggregate all user-level data before visualization.
- Refresh cadence must match the audience: daily for founder view, weekly for team summaries, monthly for investor snapshots.
- Alert thresholds must use three levels: green (on track), yellow (warning at 80% of target), red (critical at 60% of target or below). [src5]

## Tool Selection Decision

<!-- Agent selects the right tool path based on user inputs.
     Each path leads to a different execution flow below. -->

```
Which path?
├── User is non-technical AND budget = free
│   └── PATH A: Looker Studio + Native Google Connectors
├── User is non-technical AND budget > $0
│   └── PATH B: Databox or Geckoboard (no-code, 100+ connectors)
├── User is semi-technical AND budget = free
│   └── PATH C: Looker Studio + BigQuery (SQL-modeled data)
└── User is developer AND any budget
    └── PATH D: Metabase + PostgreSQL/BigQuery (full SQL control)
```

| Path | Tools | Cost | Speed | Output Quality |
|------|-------|------|-------|---------------|
| A: No-Code Free | Looker Studio + GA4 + Sheets | $0 | 2-3 hours | Basic — Google sources only, manual data entry for non-Google metrics |
| B: No-Code Paid | Databox or Geckoboard + native connectors | $39-135/mo | 2-4 hours | Good — multi-source, limited customization |
| C: SQL + Free | Looker Studio + BigQuery + scripts | $0 | 4-6 hours | Excellent — full data modeling, calculated metrics |
| D: Developer | Metabase + PostgreSQL/BigQuery | $0-85/mo | 5-8 hours | Excellent — self-hosted, full SQL, embedded dashboards |

## Execution Flow

### Step 1: Define Audience Views and Metrics Per View

**Duration**: 30-60 minutes
**Tool**: Spreadsheet or document

Map each audience to their specific metrics, refresh cadence, and access method. Do not skip this step — building without a metric map produces a dashboard nobody uses. [src2]

**Founder Dashboard (Daily Ops View)**:
| Metric | Definition | Source | Target Example |
|--------|-----------|--------|----------------|
| Cash balance | Current bank balance | Billing/bank API | Runway > 12 months |
| Daily burn rate | (Start-of-month cash - current cash) / days elapsed | Billing | < $X/day |
| MRR | Sum of all active subscription revenue | Stripe/Chargebee | Growth > 10% MoM |
| Active users (DAU/WAU) | Users with >= 1 session in period | Product DB / GA4 | DAU/MAU > 20% |
| New signups (today/this week) | Count of new account creations | Product DB | > X/day |
| NPS or CSAT (latest) | Net Promoter Score from last survey | Survey tool | NPS > 30 |
| Support ticket volume | Open tickets this week | Help desk API | Trending down |

**Investor Dashboard (Monthly Growth View)**:
| Metric | Definition | Source | Target Example |
|--------|-----------|--------|----------------|
| MRR + MRR growth rate | Month-end MRR and MoM % change | Stripe | > 15% MoM |
| ARR | MRR x 12 | Calculated | Milestone-based |
| Gross margin | (Revenue - COGS) / revenue | Accounting | > 70% for SaaS |
| LTV:CAC ratio | Customer lifetime value / acquisition cost | Blended | > 3:1 |
| Net revenue retention (NRR) | (Starting MRR + expansion - contraction - churn) / starting MRR | Stripe | > 100% |
| Cash runway (months) | Cash balance / monthly burn | Billing | > 12 months |
| Customer count + logo churn | Active paying customers, logos lost | Stripe/CRM | Churn < 5%/mo |

**Team Dashboard (Real-Time TV View)**:
| Metric | Definition | Source | Target Example |
|--------|-----------|--------|----------------|
| Live active users | Users currently in-app | Product DB / GA4 | Trending up |
| Today's signups | New accounts created today | Product DB | > daily average |
| Today's revenue | Revenue booked today | Stripe | > daily target |
| Open support tickets | Unresolved tickets right now | Help desk | < 10 |
| Deployment status | Last deploy time + success/fail | CI/CD | Green |
| Uptime (last 30 days) | Service availability percentage | Monitoring | > 99.9% |

**Verify**: Each metric has a defined data source, a clear definition, and a target value. No metric appears without a source.
**If failed**: If a metric lacks a data source, either remove it or add a manual data entry step (Google Sheets as interim source).

### Step 2: Connect Data Sources

**Duration**: 1-2 hours
**Tool**: Dashboard tool + data source APIs

Connect each data source to the chosen dashboard tool. Test each connection with a sample query before proceeding.

**Path A/C (Looker Studio)**:
1. Create new report at lookerstudio.google.com
2. Add GA4 via native Google Analytics connector — select property
3. Add Google Sheets as a connector for manual metrics (NPS, support data)
4. For Path C: enable GA4 BigQuery export (Admin > BigQuery Links), add BigQuery as data source

**Path B (Databox/Geckoboard)**:
1. Create account and new dashboard
2. Connect Stripe via native integration (OAuth — grant read-only access)
3. Connect GA4 via native integration
4. Connect HubSpot/Salesforce CRM via native integration
5. Use push API or Google Sheets for custom metrics without native connectors

**Path D (Metabase)**:
1. Deploy Metabase — Docker recommended:

```bash
docker run -d -p 3000:3000 \
  -e MB_DB_TYPE=postgres \
  -e MB_DB_DBNAME=metabase \
  -e MB_DB_PORT=5432 \
  -e MB_DB_USER=metabase \
  -e MB_DB_PASS=your_password \
  -e MB_DB_HOST=your_db_host \
  --name metabase metabase/metabase:latest
```

2. Add application database as data source: Admin > Databases > Add database [src6]
3. Add Stripe data via Stripe Sigma (if on Scale plan) or ETL pipeline (Airbyte/Fivetran)
4. Add GA4 data via BigQuery export

**Verify**: Each data source returns recent data. Run a test query per source — row count should be > 0 for the last 7 days.
**If failed**: Check API key permissions (must be read-only at minimum). For database connections, verify the host allows connections from the dashboard tool's IP range.

### Step 3: Design Dashboard Layout Per View

**Duration**: 1-2 hours
**Tool**: Dashboard tool

Apply Stephen Few's dashboard design principles: place the most critical metrics at top-left (the eye starts there), use a single screen per view (no scrolling), and choose the simplest visualization that communicates the data. [src2]

**Layout Pattern for Each View**:

```
┌─────────────────────────────────────────────────────┐
│  SCORECARD ROW: 3-4 big-number KPIs with trend      │
│  [MRR: $45K ▲12%]  [Burn: $32K/mo]  [Runway: 14mo] │
├─────────────────────────────────────────────────────┤
│  LEFT: Primary trend chart        │ RIGHT: Secondary │
│  (MRR over time, line chart)      │ (Churn by cohort)│
│                                   │                  │
├─────────────────────────────────────────────────────┤
│  BOTTOM: Detail table or list                        │
│  (Top 10 customers, recent signups, pipeline deals)  │
└─────────────────────────────────────────────────────┘
```

**Key design rules**:
- Scorecards at top: big number + comparison to previous period + trend arrow
- One primary trend chart (line) showing the most important metric over time
- One secondary chart showing composition or distribution (bar, pie, or cohort table)
- One detail table at bottom for drill-down context
- Date range selector: default 30 days for founder, month-end for investor, today for team [src1]
- Color coding: green = on target, yellow = within 20% of target, red = below 60% of target

**Looker Studio specific**:
```
1. Theme > Customize: set brand colors, consistent font (Inter or system default)
2. Insert > Scorecard: configure for each big-number KPI
3. Insert > Time series chart: MRR over time, set default date range
4. Insert > Table: top customers or pipeline, sort by value descending
5. Add date range control: top-right corner of each page
6. Create separate pages: "Founder View", "Investor View", "Team View"
```

**Metabase specific**:
```sql
-- Example: MRR scorecard query
SELECT
  DATE_TRUNC('month', created_at) AS month,
  SUM(amount_cents) / 100.0 AS mrr,
  LAG(SUM(amount_cents) / 100.0) OVER (ORDER BY DATE_TRUNC('month', created_at)) AS prev_mrr,
  ROUND(
    (SUM(amount_cents) - LAG(SUM(amount_cents)) OVER (ORDER BY DATE_TRUNC('month', created_at)))
    * 100.0 / NULLIF(LAG(SUM(amount_cents)) OVER (ORDER BY DATE_TRUNC('month', created_at)), 0),
    1
  ) AS mrr_growth_pct
FROM subscriptions
WHERE status = 'active'
  AND created_at >= CURRENT_DATE - INTERVAL '12 months'
GROUP BY DATE_TRUNC('month', created_at)
ORDER BY month DESC;
```

**Verify**: All widgets display data. Date range filter updates all charts on the page. Dashboard fits on one screen without scrolling (at 1920x1080 resolution).
**If failed**: If widgets show no data, check that the date range covers dates with actual data. If the dashboard requires scrolling, remove the lowest-priority widget.

### Step 4: Set Refresh Cadence Per View

**Duration**: 15-30 minutes
**Tool**: Dashboard tool settings

Configure different refresh rates per audience view: [src5]

| View | Refresh Frequency | Rationale |
|------|-------------------|-----------|
| Founder | Every 4-6 hours or on-demand | Daily decision-making needs current data, but sub-hourly refresh wastes compute |
| Investor | Monthly snapshot (manual or scheduled) | Investors review monthly — more frequent data creates noise |
| Team (TV) | Every 5-15 minutes | Real-time motivation requires near-live data |

**Looker Studio**: Data freshness is controlled per data source — GA4 native refreshes every ~10 min; BigQuery refreshes on page load; Google Sheets refreshes every 15 min.

**Metabase**: Admin > Settings > Caching > set cache duration per question. For TV dashboards, enable auto-refresh: Dashboard > Auto-refresh > set to 5 minutes.

**Geckoboard**: Widget-level refresh settings. Stripe widgets refresh every 10 minutes by default. Custom widgets via push API update on your schedule.

**Verify**: Open each view, wait for the configured refresh interval, and confirm data updates without manual action.
**If failed**: If data does not refresh, check that the data source connection is not rate-limited or expired. For Metabase, verify the caching configuration is not overriding the expected refresh.

### Step 5: Configure Alert Rules

**Duration**: 30-45 minutes
**Tool**: Dashboard tool alerts or Slack/email integration

Set three-tier thresholds for critical metrics: [src5]

| Metric | Green (Threshold) | Yellow (Warning) | Red (Alert) | Alert Channel |
|--------|-------------------|------------------|-------------|---------------|
| Cash runway | > 12 months | 6-12 months | < 6 months | Founder email + Slack |
| MRR growth | > 10% MoM | 5-10% MoM | < 5% MoM | Founder Slack |
| Logo churn | < 3%/month | 3-5%/month | > 5%/month | Founder + team Slack |
| DAU/MAU ratio | > 25% | 15-25% | < 15% | Product team Slack |
| Support tickets | < daily avg | 1-2x daily avg | > 2x daily avg | Support lead Slack |
| Uptime | > 99.9% | 99.5-99.9% | < 99.5% | Engineering PagerDuty |

**Metabase alerts**:
1. Open a saved question (e.g., monthly churn rate)
2. Click the bell icon > Create alert
3. Set condition: "when results are below [target]"
4. Set recipients: Slack channel or email addresses
5. Set frequency: check every hour for critical metrics, daily for growth metrics

**Geckoboard/Databox**: Use built-in status indicators — configure green/yellow/red thresholds per widget.

**Looker Studio**: No native alerting. Use Google Sheets as data source + Google Apps Script to send alerts:

```javascript
// Google Apps Script: alert when cash runway drops below 6 months
function checkRunway() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Metrics");
  var runway = sheet.getRange("B2").getValue(); // runway in months
  if (runway < 6) {
    MailApp.sendEmail("founder@startup.com", "ALERT: Cash runway below 6 months",
      "Current runway: " + runway + " months. Review burn rate immediately.");
  }
}
// Add trigger: Edit > Triggers > Add > Time-driven > Daily
```

**Verify**: Trigger a test alert by temporarily setting a threshold that current data exceeds. Confirm notification arrives in the configured channel within 5 minutes.
**If failed**: Check that the alert channel (Slack webhook, email) is correctly configured. For Slack, verify the webhook URL is active and the channel exists.

### Step 6: Build Investor Snapshot Export

**Duration**: 30 minutes
**Tool**: Dashboard tool + email/PDF

Configure automated monthly investor report generation:

1. **Looker Studio**: Share > Schedule email delivery > Monthly on 1st of month > PDF attachment > add investor email list
2. **Metabase**: Dashboard > Subscriptions > Add email subscription > Monthly > attach as PDF
3. **Databox/Geckoboard**: Export > Schedule monthly PDF report

Include in the investor snapshot:
- Month-end MRR and MRR growth rate
- ARR projection (MRR x 12)
- Net revenue retention
- Customer count and logo churn
- Cash balance and runway
- Key milestones achieved this month
- 1-2 sentence commentary on each metric (add as text widgets or annotations)

**Verify**: Generate a test PDF export. Confirm all charts render correctly, data is month-end dated, and the file size is under 5 MB (larger PDFs bounce in email).
**If failed**: If PDF rendering truncates charts, reduce widget count per page. If file size is too large, switch charts from high-res images to vector rendering or reduce the date range.

### Step 7: Document and Hand Off

**Duration**: 30 minutes
**Tool**: Document or wiki

Create a dashboard documentation page covering:
- **Data dictionary**: every metric's definition, formula, and source
- **Access instructions**: URL, login method, permission levels
- **Refresh schedule**: when each view updates and why
- **Alert rules**: thresholds, channels, and escalation path
- **Maintenance tasks**: weekly data quality audit, monthly metric review, quarterly dashboard redesign

**Verify**: A new team member can find the dashboard, understand every metric, and know who to contact if data looks wrong — without asking the creator.
**If failed**: If any metric lacks a definition or source attribution, add it before sharing the dashboard link.

## Output Schema

<!-- Exact format of the deliverable. Downstream agents and dashboard cards
     reference this schema to consume the output. -->

```json
{
  "output_type": "startup_dashboard_suite",
  "format": "Interactive dashboard URL(s) + scheduled PDF",
  "views": [
    {"name": "Founder Daily Ops", "metrics": ["cash_balance", "burn_rate", "mrr", "dau_wau", "new_signups", "nps", "support_tickets"], "refresh": "4-6 hours"},
    {"name": "Investor Monthly", "metrics": ["mrr", "mrr_growth", "arr", "gross_margin", "ltv_cac", "nrr", "runway", "customer_count", "logo_churn"], "refresh": "monthly snapshot"},
    {"name": "Team Real-Time", "metrics": ["live_users", "today_signups", "today_revenue", "open_tickets", "deploy_status", "uptime"], "refresh": "5-15 minutes"}
  ],
  "alerts": "threshold-based on critical metrics via Slack/email",
  "report_schedule": "monthly investor PDF via email"
}
```

## Quality Benchmarks

<!-- How to evaluate if the output is good enough.
     Links to benchmark cards where applicable. -->

| Quality Metric | Minimum Acceptable | Good | Excellent |
|---------------|-------------------|------|-----------|
| Metrics per view | 3-4 KPIs | 5-7 KPIs | 5-7 KPIs with targets and trends |
| Dashboard load time (90 days) | < 15 seconds | < 10 seconds | < 5 seconds |
| Data freshness (founder view) | Daily | Every 4-6 hours | Near real-time (< 30 min) |
| Audience views | 1 generic view | 2 views (founder + team) | 3 views (founder + investor + team) |
| Alert coverage | No alerts | Alerts on 2-3 critical metrics | Alerts on all red-threshold metrics with escalation |
| Stakeholder adoption (weekly views) | > 2 users | > 5 users | > 10 users across all views |

**If below minimum**: Simplify the dashboard to fewer metrics (Step 1), pre-aggregate data to improve load time (Step 2-3), or switch to a simpler tool that the audience will actually use (Step 2).

## Error Handling

<!-- Common failures and recovery actions. Agents need this to handle
     execution errors without human intervention. -->

| Error | Likely Cause | Recovery Action |
|-------|-------------|----------------|
| Dashboard shows $0 MRR | Billing API key expired or Stripe test mode active | Verify API key at Stripe dashboard. Ensure live mode keys are used, not test mode |
| GA4 data missing for recent days | BigQuery export has up to 72-hour delay for daily export | Switch to GA4 Reporting API for real-time data, use BigQuery for historical |
| Metabase "Connection refused" | Database host firewall blocking Metabase IP | Add Metabase server IP to database allowlist. For cloud Metabase, check their IP range documentation |
| Looker Studio "Data Set Configuration Error" | OAuth token expired for connected data source | Edit report > Manage data sources > Reconnect the expired source |
| Dashboard takes > 30 seconds to load | Raw event-level queries on large datasets | Create pre-aggregated daily summary tables and point dashboard at those |
| Alert fatigue — team ignoring alerts | Too many alerts or thresholds too sensitive | Reduce to 3-5 critical alerts only. Raise yellow thresholds to reduce false positives. Use exception-only reporting |
| Investor view shows mid-month data | Refresh schedule not set to month-end snapshot | Configure investor view data source to filter WHERE date <= last_day_of_previous_month |

## Cost Breakdown

<!-- Real cost analysis so agents can warn users before execution. -->

| Component | Free Tier | Paid Tier | At Scale |
|-----------|-----------|-----------|----------|
| Looker Studio | $0 (unlimited) | $0 | $0 |
| Metabase (self-hosted) | $0 | $0 | Infra costs (~$20-50/mo) |
| Metabase Cloud | N/A | $85/mo (Starter) | $440/mo (Pro) |
| Geckoboard | N/A | $39/mo (Essential) | $299/mo (Scale) |
| Databox | $0 (3 sources, 3 boards) | $59/mo (Professional) | $135/mo (Growth) |
| BigQuery (if used) | 1 TB queries/mo free | $6.25/TB | $6.25/TB |
| Connectors (Supermetrics/Fivetran) | Trial only | $39-99/mo | $200-500/mo |
| **Total (Path A)** | **$0** | **$0** | **$0** |
| **Total (Path B)** | **$39/mo** | **$59-135/mo** | **$135-300/mo** |
| **Total (Path C)** | **$0** | **$0-10/mo** | **$20-50/mo** |
| **Total (Path D)** | **$0 (self-hosted)** | **$85/mo** | **$200-500/mo** |

## Anti-Patterns

### Wrong: Building one dashboard for all audiences
Founders need daily cash and burn visibility, investors need monthly growth trends, and the team needs real-time motivation metrics. A single dashboard forces everyone to scroll past irrelevant data, and founders stop checking it within a week. [src2]

### Correct: Create separate views per audience with different metrics, refresh cadences, and layouts
Three focused views (even within the same tool) serve each audience's decision cadence. Founders see daily ops, investors see monthly snapshots, the team sees a live TV display.

### Wrong: Tracking 30+ metrics on the first dashboard
Comprehensive dashboards that track everything from DAU to email open rates on a single screen paralyze decision-making. Nobody knows which number to act on. [src1]

### Correct: Start with 5-7 KPIs per view and expand only when stakeholders request more
Ask for each metric: "What decision does this metric trigger?" If no one can answer, remove it. Add detail pages only after the core view is adopted.

### Wrong: Setting alerts on every metric
Alerting on 20+ metrics creates notification fatigue within days. The team starts ignoring alerts, and critical warnings get lost in the noise. [src5]

### Correct: Alert only on metrics that require immediate action
Limit to 3-5 critical alerts: cash runway, revenue drop, churn spike, uptime. Use three-tier thresholds (green/yellow/red) and escalation rules. Review alert effectiveness monthly.

## When This Matters

Use when an agent needs to produce a working multi-view startup dashboard — not a document about which metrics to track. Requires defined KPIs with target values and at least one active data source (billing, analytics, or product database). Best executed after the startup has 30+ days of operational data and clear audience roles (founder, investors, team).

## Related Units

- [Startup KPI Framework](/business/startup-metrics/startup-kpi-framework/2026)
- [Marketing Dashboard Setup](/business/marketing-execution/marketing-dashboard-setup/2026)
- [Investor Reporting Cadence](/business/startup-metrics/investor-reporting-cadence/2026)
- [SaaS Unit Economics Dashboard](/finance/saas-benchmarks/saas-unit-economics-dashboard/2026)
