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]
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 |
| 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 |
| D: Developer | Metabase + PostgreSQL/BigQuery | $0-85/mo | 5-8 hours | Excellent — self-hosted, full SQL |
Duration: 30-60 minutes · Tool: Spreadsheet or document
Map each audience to their specific metrics, refresh cadence, and access method. Do not skip this — building without a metric map produces a dashboard nobody uses. [src2]
Founder Dashboard: Cash balance, daily burn rate, MRR, active users (DAU/WAU), new signups, NPS/CSAT, support ticket volume.
Investor Dashboard: MRR + growth rate, ARR, gross margin, LTV:CAC ratio, net revenue retention, cash runway, customer count + logo churn.
Team Dashboard: Live active users, today's signups, today's revenue, open support tickets, deployment status, uptime.
Verify: Each metric has a defined data source, clear definition, and target value. · If failed: Remove metrics without a data source or add manual entry via Sheets.
Duration: 1-2 hours · Tool: Dashboard tool + data source APIs
Connect each data source. Test each connection with a sample query before proceeding. Path A/C: Looker Studio + GA4 native + Sheets. Path B: Databox/Geckoboard native connectors. Path D: Metabase + direct database connections. [src6]
# Path D: Deploy Metabase via Docker
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
Verify: Each data source returns recent data (last 7 days, row count > 0). · If failed: Check API key permissions and database firewall rules.
Duration: 1-2 hours · Tool: Dashboard tool
Apply Stephen Few's design principles: critical metrics at top-left, single screen per view, simplest visualization per metric. [src2]
Layout: scorecard row (3-4 big numbers with trend arrows) at top, primary trend chart (left), secondary chart (right), detail table at bottom. Date range selector defaults to 30 days (founder), month-end (investor), today (team). [src1]
-- Metabase: MRR scorecard query
SELECT
DATE_TRUNC('month', created_at) AS month,
SUM(amount_cents) / 100.0 AS 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 filter updates all charts, dashboard fits one screen at 1920x1080. · If failed: Remove lowest-priority widget if scrolling is needed.
Duration: 15-30 minutes · Tool: Dashboard tool settings
Founder: every 4-6 hours. Team TV: every 5-15 minutes. Investor: monthly snapshot. [src5]
Verify: Open each view, wait for refresh interval, confirm data updates without manual action. · If failed: Check caching settings and data source connection health.
Duration: 30-45 minutes · Tool: Dashboard tool alerts or Slack/email
Set three-tier thresholds for critical metrics: cash runway (< 6 months = red), MRR growth (< 5% MoM = red), logo churn (> 5%/month = red), DAU/MAU (< 15% = red), uptime (< 99.5% = red). [src5]
Verify: Trigger a test alert by temporarily adjusting a threshold. · If failed: Check Slack webhook or email configuration.
Duration: 30 minutes · Tool: Dashboard tool + email/PDF
Configure monthly investor report: schedule PDF export on 1st of month, include MRR, ARR, NRR, runway, churn, customer count, and milestone commentary.
Verify: Generate test PDF — all charts render, file under 5 MB. · If failed: Reduce widget count or switch to vector rendering.
Duration: 30 minutes · Tool: Document or wiki
Create documentation: data dictionary, access instructions, refresh schedule, alert rules, maintenance tasks (weekly data audit, monthly metric review, quarterly redesign).
Verify: A new team member can find the dashboard and understand every metric without asking the creator. · If failed: Add missing metric definitions or source attributions.
{
"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 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 | 2-3 critical metrics | All red-threshold metrics with escalation |
| Stakeholder adoption | > 2 users weekly | > 5 users weekly | > 10 users across all views |
If below minimum: Simplify metrics (Step 1), pre-aggregate data (Steps 2-3), or switch to a simpler tool (Step 2).
| 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 used |
| GA4 data missing for recent days | BigQuery export has up to 72-hour delay | Switch to GA4 Reporting API for real-time; use BigQuery for historical |
| Metabase "Connection refused" | Database firewall blocking Metabase IP | Add Metabase server IP to database allowlist |
| Looker Studio "Data Set Configuration Error" | OAuth token expired for data source | Edit report > Manage data sources > Reconnect |
| Dashboard takes > 30 seconds to load | Raw event-level queries on large datasets | Create pre-aggregated daily summary tables |
| Alert fatigue — team ignoring alerts | Too many alerts or thresholds too sensitive | Reduce to 3-5 critical alerts; raise yellow thresholds |
| Investor view shows mid-month data | Refresh not set to month-end snapshot | Filter WHERE date <= last_day_of_previous_month |
| Component | Free Tier | Paid Tier | At Scale |
|---|---|---|---|
| Looker Studio | $0 (unlimited) | $0 | $0 |
| Metabase (self-hosted) | $0 | $0 | ~$20-50/mo infra |
| Metabase Cloud | N/A | $85/mo (Starter) | $440/mo (Pro) |
| Geckoboard | N/A | $39/mo (Essential) | $299/mo (Scale) |
| Databox | $0 (3 sources) | $59/mo (Professional) | $135/mo (Growth) |
| BigQuery (if used) | 1 TB queries/mo free | $6.25/TB | $6.25/TB |
| 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 |
Founders need daily cash 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]
Three focused views serve each audience's decision cadence — daily ops, monthly snapshots, and live team display.
Comprehensive dashboards that track everything on a single screen paralyze decision-making. [src1]
Ask for each metric: "What decision does this trigger?" If no one can answer, remove it.
Alerting on 20+ metrics creates notification fatigue within days — critical warnings get lost. [src5]
Limit to 3-5 critical alerts with three-tier thresholds. Review alert effectiveness monthly.
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. Best executed after 30+ days of operational data and clear audience roles.