Deloitte Senior Analytics Consultant: Executive Dashboard Design
Swing Catalyst / Initial Force AS — B2B SaaS + Hardware Platform
Prepared in the style of a Deloitte Analytics advisory engagement. Prescribes the exact dashboard architecture, KPI definitions, alert thresholds, and tool recommendations for a B2B SaaS company with a hardware component. [source: analyst estimate]
1. Dashboard Philosophy
The problem with most B2B SaaS dashboards: They track too many metrics. When everything matters, nothing does. [source: analyst estimate]
Deloitte framework: Select the minimum set of metrics that, collectively, give complete visibility into business health across four dimensions:
- Revenue engine — Are we growing?
- Retention engine — Are we keeping what we win?
- Product engagement — Are customers getting value?
- Financial health — Are we solvent?
For Swing Catalyst specifically, a fifth dimension is mandatory:
- Hardware pipeline — Are units flowing? (Hardware is 74–78% of revenue) [source: canonical-facts.yaml]
2. The 10 KPIs That Matter
Selection Criteria
Each KPI was selected against three tests:
- Leading indicator? Does it predict future revenue before it appears in income statements?
- Actionable? Can the team change behavior when the metric moves?
- Measurable today? Does the data exist without major infrastructure investment?
| # | KPI Name | Dimension | Leading/Lagging | Measurable Today |
|---|---|---|---|---|
| 1 | Net Revenue Retention (NRR) | Revenue + Retention | Lagging (6-mo) | Yes (Stripe) |
| 2 | Monthly Software ARR | Revenue | Leading | Yes (Stripe) |
| 3 | Gross Revenue Churn Rate (by tier) | Retention | Leading | Yes (Stripe) |
| 4 | US Invoiced Revenue (MTD) | Revenue | Leading | Yes (billing) |
| 5 | Hardware Units Shipped (AxioForce + Studio) | Hardware pipeline | Leading | Yes (ops) |
| 6 | Free Trial → Paid Conversion Rate | Growth engine | Leading | [DATA GAP] |
| 7 | Data Lake Engagement (takes/week) | Product engagement | Leading | Yes (backend) |
| 8 | Active Subscriber Count (net change) | Growth engine | Lagging (1-mo) | Yes (Stripe) |
| 9 | MLB Active Account Count | Enterprise anchor | Lagging | Yes (CRM) |
| 10 | Cash Runway (months at current burn) | Financial health | Lagging | Yes (liquidity model) |
3. KPI Definitions and Formulas
KPI 1: Net Revenue Retention (NRR)
Definition: Of software ARR from 12 months ago, what percentage is retained today including expansions and excluding new logos?
NRR = (ARR from existing cohort at Month T) / (ARR from same cohort at Month T-12)
× 100
Where: existing cohort ARR at T = prior ARR - churned ARR + expansion ARR (upsells/upgrades)
Why this matters: NRR > 100% means the existing customer base grows itself without new sales. NRR < 80% means the business is leaking water faster than it can add it. For a company aiming at Series A, investors will ask for this first. [source: industry benchmark]
Current estimated NRR: ARR grew from $500K (Oct 2024) to $674K (Sep 2025) = +35% gross growth rate. [source: customer-segments.md] But this includes new logos. True NRR is depressed by 47.7% Pro churn. Estimated current NRR: 70–80% — below acceptable SaaS benchmarks (>90%). January 2026 churn improvement (62% reduction vs Jan 2025) suggests NRR is improving. [source: canonical-facts.yaml, pro_churn]
Benchmark: Top-quartile B2B SaaS: 120%+. Acceptable floor: 90%+. [source: industry benchmark] SC current: ~75% (estimated). [source: analyst estimate] [DATA GAP]: Exact NRR requires cohort tracking not yet documented.
KPI 2: Monthly Software ARR (with MoM delta)
Definition: Annualized run rate of recurring software subscription revenue. Calculated as:
Software ARR = (Sum of all active subscription MRR) × 12
MoM Delta = (ARR_this_month - ARR_last_month) / ARR_last_month × 100
Segment by tier:
- Home ARR ($195/yr) [source: identity.md]
- Pro ARR ($600/yr) [source: identity.md]
- Pro+ ARR ($1,500/yr) [source: identity.md]
- OEM/bundled ARR (Full Swing, distributors)
- MLB/Enterprise ARR (custom)
Current baseline: ~$1.3M software ARR (2025E estimated from pitch deck). [source: fullswing-bundling-model.md] Target: $1.5M by Q3 2026 under base case scenario. [source: use-of-funds.md — M4 milestone]
KPI 3: Gross Revenue Churn Rate (by tier)
Definition: Percentage of ARR lost from existing subscribers due to cancellation or downgrade in a given period.
Gross Churn Rate (monthly) = MRR churned in month T / MRR at start of month T × 100
Annual Gross Churn Rate = 1 - (1 - Monthly Churn Rate)^12
Segmented by tier: Home, Pro, Pro+. Pro monthly subscribers vs. annual subscribers must be tracked separately — they churn at 2–3x the rate. [source: customer-segments.md]
Current benchmarks:
| Tier | Annual Churn | Monthly Churn | Benchmark | Status |
|---|---|---|---|---|
| Home | 35.5% [source: customer-segments.md] | 3.6% [source: analyst estimate] | 10–20% B2C SaaS [source: industry benchmark] | RED |
| Pro | 47.7% [source: canonical-facts.yaml] | 5.1% [source: analyst estimate] | 15–25% B2B SaaS [source: industry benchmark] | RED |
| Pro+ | 25.6% [source: customer-segments.md] | 2.4% [source: analyst estimate] | 10–15% enterprise [source: industry benchmark] | YELLOW |
KPI 4: US Invoiced Revenue (MTD)
Definition: Total value of invoices issued to US customers month-to-date in USD. Tracked at the rep level (Seath Lauer golf, Tucker Nathans baseball).
US Invoiced MTD = Sum of all USD invoices raised to US entities in current calendar month
Current run rate: $182K in March 2026 (vs. $179K in February). [source: business-kpis.md] The 2026 target is approximately $220–250K/month to hit $2.7–3.0M/year from US alone (55% of a $5.5M total at 73% NA mix). [source: analyst estimate based on canonical-facts.yaml] [DATA GAP]: Month-by-month 2025 US invoiced data not in KB to establish trend line.
KPI 5: Hardware Units Shipped (AxioForce + Studio Systems)
Definition: Count of physical units shipped per week/month, segmented by product line.
Monthly Units = Count of shipping events for:
- AxioForce Dual Force Plate sets
- Studio camera systems (new installations)
- Balance plate / pressure plate orders
Current baseline: AxioForce: first 4–8 units shipped March 2026; target 4 sets/week. [source: critical-context-updated.md, item 19] Studio systems: tracked via Sofie Nygaard order fulfillment. [DATA GAP]: Historical monthly unit counts not available in KB.
Why this matters as a leading indicator: Hardware shipments trigger (a) one-time hardware revenue and (b) software subscription starts within 30–60 days of setup. Hardware volume is the leading signal for software ARR 60 days hence.
KPI 6: Free Trial → Paid Conversion Rate
Definition: Percentage of free trial starts that convert to a paid subscription within 30 days.
Conversion Rate = (Paid conversions in period / Free trials started in period) × 100
Current data: 9 paying customers from free trial since March 9 ($2,794 total). [source: business-kpis.md] Trial start count is not documented. [DATA GAP]: This is the most critical missing metric. Without trial count, conversion rate cannot be calculated. Instrument this immediately — it drives all funnel optimization decisions.
Benchmark: B2B SaaS free trial conversion: 5–25% (depending on length, friction, product complexity). SC's 10-day no-credit-card trial accessing Pro tier is best practice. Target: >15%. [source: industry benchmark]
KPI 7: Data Lake Engagement (Swings/Takes Per Week)
Definition: Total new "takes" (swing recordings) added to the data lake per week. Proxy for active product usage.
Weekly Takes = New takes indexed in data lake in the past 7 days
Current baseline: 2.13M total takes; +22K/week current rate. [source: canonical-facts.yaml, data_lake_takes] 38,276 athletes, 1,381 contributors. [source: critical-context-updated.md, item 20]
Why it matters: Takes per week is a proxy for platform stickiness. A subscriber who records 0 takes in 60 days is a churn risk. Subscribers averaging >10 takes/week are high-retention. [DATA GAP]: Per-subscriber engagement data (takes per subscriber per week, segmented by tier) would enable cohort churn prediction.
KPI 8: Active Subscriber Count (Net Change)
Definition: Total active software subscribers at end of period, net of new additions and cancellations.
Net Subscriber Change = New subscribers - Churned subscribers
Subscriber Count (end of period) = Subscriber Count (start) + Net Change
Milestone: 2,000+ reached January 12, 2026. [source: canonical-facts.yaml, subscriber_count] Target: 2,500 by end of 2026 under base case.
KPI 9: MLB Active Account Count
Definition: Number of MLB franchises (out of 30) with at least one active Swing Catalyst installation and software subscription.
Current baseline: 22 active (23 ever; Brewers lost to Bertec). [source: canonical-facts.yaml, mlb_team_count] Target: 24+ by end of 2026.
Why it matters: This is the headline enterprise metric used in investor conversations. It signals product-market fit at the highest spending tier in baseball. Every new MLB team is a logo + ~$60K hardware + $3K ARR. [source: analyst estimate based on business-kpis.md]
KPI 10: Cash Runway (Months)
Definition: At current monthly burn rate, how many months of operating cash remains.
Cash Runway = Current Cash Balance / Average Monthly Net Cash Outflow
Where: Average Monthly Net Cash Outflow = 3-month rolling average of (cash out - cash in)
Current: ~1.74 MNOK cash as of March 2026. [source: canonical-facts.yaml, cash_position] Monthly burn: approximately 400–500 KNOK/month net (based on downsize model). [source: downsize-to-profitability-model.md] Runway at current rate: 3–5 months. This is the highest-priority alert trigger in the dashboard.
Note: Stripe Capital loan ($250K approved) and SkatteFUNN credit extend this runway. [source: financials.md]
4. Dashboard Layout and Information Hierarchy
Tier 1: CEO / Board View (Weekly Review, 1 Page)
┌─────────────────────────────────────────────────────────┐
│ SWING CATALYST — EXECUTIVE PULSE │
│ Week ending: [DATE] │
├─────────────┬──────────────┬──────────────┬─────────────┤
│ CASH RUNWAY │ SOFTWARE ARR │ US INVOICED │ NET SUBS │
│ [X months] │ [$Xk ARR] │ [MTD $Xk] │ [+/- X] │
│ [RAG] │ [+X% MoM] │ vs target │ [RAG] │
├─────────────┴──────────────┴──────────────┴─────────────┤
│ CHURN TREND (Pro + Home, 6 months) │
│ [Sparkline chart — monthly churn %, by tier] │
├─────────────────────────────────────────────────────────┤
│ MLB ACCOUNTS: 22/30 │ AXIOFORCE: X units this week │
│ DATA LAKE: +22K/wk │ FREE TRIAL CONV: X this period │
└─────────────────────────────────────────────────────────┘
Tier 2: Revenue Team View (Daily, 3 Sections)
Section A — Pipeline: US invoiced MTD vs. target (Seath + Tucker breakout), weighted pipeline by rep, days to close by stage.
Section B — Subscription: New subs today, churned subs today, net change, free trial conversions today.
Section C — Hardware: AxioForce units shipped this week, studio system orders in queue, estimated next shipment dates.
Tier 3: Product / Data Science View (Weekly)
Data lake takes trend, takes per active subscriber (engagement density), geographic breakdown of usage, AxioForce vs. legacy plate usage.
5. Visualization Types by KPI
| KPI | Visualization | Reasoning |
|---|---|---|
| Cash Runway | Single large number + gauge | Urgency requires a glance-readable number; color changes create alarm response |
| Software ARR | Line chart (12-month) + YoY delta | Trend matters more than point-in-time; show the trajectory |
| Gross Churn by Tier | Stacked bar (monthly, by tier) | Shows both level and mix; seasonal patterns visible |
| US Invoiced MTD | Progress bar vs. monthly target | Motivational; shows daily team progress |
| Hardware Units | Column chart (weekly, by product line) | AxioForce vs studio visibility; ramp pattern visible |
| Free Trial Conversion | Funnel chart + trend line | Funnel shows where drop-off occurs; trend shows if improving |
| Data Lake Takes | Area chart (weekly, cumulative overlay) | Cumulative shows moat-building; weekly shows current velocity |
| Net Subscribers | Waterfall chart (new – churned = net) | Waterfall makes new vs. lost immediately transparent |
| MLB Count | Number with sparkline | Static count + history shows momentum |
| NRR | Semi-annual cohort heat map | Revenue retention by cohort vintage reveals early churn vs. late churn |
6. Alert Thresholds (Green / Yellow / Red)
| KPI | GREEN (Healthy) | YELLOW (Watch) | RED (Act Now) |
|---|---|---|---|
| Cash Runway | >6 months | 3–6 months | <3 months |
| Software ARR MoM growth | >+3% | 0–3% | Negative |
| Pro Annual Churn Rate | <35% | 35–45% | >45% (current ~47.7%) |
| Home Annual Churn Rate | <25% | 25–35% | >35% (current ~35.5%) |
| US Invoiced MTD | >$200K | $150–200K | <$150K |
| AxioForce units shipped | >15/week | 5–15/week | <5/week |
| Free Trial Conversion | >15% | 8–15% | <8% |
| Data Lake Takes/week | >30K | 20–30K | <20K |
| MLB Active Accounts | >24 | 22–24 | <22 |
| NRR (quarterly) | >100% | 85–100% | <85% |
Alert delivery: CEO receives Red alerts immediately via Slack notification. Yellow alerts appear in weekly summary email. Green = no notification (silence is the signal).
7. Drill-Down Structure
Layer 1: Executive Headline
Single RAG per KPI. One page. No exceptions.
Layer 2: Trend Drill-Down
Click any KPI → 12-month trend line with annotations for key events (price changes, product launches, sales hires, competitor moves).
Layer 3: Segment Drill-Down
For churn: tier breakdown (Home vs Pro vs Pro+), subscription type (monthly vs annual), geography (US vs APAC vs EU).
For revenue: rep breakdown (Carl vs Seath vs Tucker), channel (direct vs distributor vs webshop), product line (hardware vs software).
Layer 4: Cohort Analysis
Monthly cohort survival curves for subscribers. Which cohorts churn fastest? Which months had the worst retention? Essential for identifying root causes.
8. Filter and Segmentation Options
| Dimension | Options |
|---|---|
| Tier | Home, Pro, Pro+, MLB/Enterprise, OEM |
| Geography | US, APAC, EU, Other |
| Channel | Direct (US), Direct (International), Webshop, Distributor, OEM |
| Subscription Type | Annual, Monthly |
| Time Period | MTD, QTD, YTD, TTM, Custom |
| Sport | Golf, Baseball, Multi-sport |
9. Comparison Framework
Actuals vs. Budget
2026 budget target: NOK 62.7M sales revenue. [source: financials.md] Monthly budget is approximately 5.2 MNOK/month. [source: analyst estimate based on financials.md] Display:
- Actual MTD vs. budget MTD (variance in NOK + %) [source: financials.md]
- Forecast to year-end using current run rate
Period-over-Period
- MoM: standard for most operational KPIs
- YoY: required for seasonal KPIs (revenue is meaningfully seasonal; compare April 2026 vs April 2025)
- QoQ: for hardware units, pipeline quality
SaaS Benchmarks
| Metric | SC Current | SaaS Median | Top Quartile |
|---|---|---|---|
| Annual Revenue Churn (B2B) | 47.7% (Pro) [source: canonical-facts.yaml] | 10–20% [source: industry benchmark] | <5% [source: industry benchmark] |
| NRR | ~75% (est.) [source: analyst estimate] | 100–110% [source: industry benchmark] | 120%+ [source: industry benchmark] |
| CAC | $603 [source: business-kpis.md] | ~$500 [source: industry benchmark] | ~$200 [source: industry benchmark] |
| LTV/CAC (Pro, 47.7% churn) | ~1.1x [source: analyst estimate] | 3x [source: industry benchmark] | 5x+ [source: industry benchmark] |
[DATA GAP]: LTV calculation requires confirmed CAC by tier and confirmed ARPU by tier. Current CAC ($603.25) is blended across all tiers. [source: business-kpis.md] Pro tier CAC is likely $800–1,200; Home tier is likely $200–400. [source: analyst estimate]
10. Refresh Frequency Recommendations
| KPI | Refresh | Source System | Owner |
|---|---|---|---|
| Cash Runway | Weekly (Monday) | Liquidity model GSheet | Erlend |
| Software ARR | Daily | Stripe | Marcus Guedes (automated) |
| Gross Churn | Weekly | Stripe | Marcus Guedes (automated) |
| US Invoiced MTD | Daily | HubSpot / billing | Seath, Tucker |
| Hardware Units | Daily | Ops/Sofie | Sofie Nygaard |
| Free Trial Conversion | Weekly | Stripe | Marcus / Frida (or replacement) |
| Data Lake Takes | Weekly | Backend API | Daniel Groos |
| Net Subscribers | Daily | Stripe | Marcus (automated) |
| MLB Accounts | Monthly | HubSpot | Tucker |
| NRR | Monthly (end of month) | Stripe + ARR model | Marcus / Erlend |
11. Tool Recommendation
Current tech stack (confirmed): NetSuite ERP (live Feb 2026), HubSpot CRM, Stripe payments, Zendesk support. [source: identity.md, financials.md]
Recommended stack
Option A: Stripe + Metabase (immediate, low cost)
- Metabase ($500/yr) connects directly to Stripe via PostgreSQL [source: analyst estimate]
- Build all 10 KPIs in 2–3 weeks
- Limitation: no CRM integration without custom ETL
- Recommended for immediate implementation (cash-constrained situation)
Option B: Stripe + HubSpot + Looker Studio (free, integrated)
- Google Looker Studio is free and connects to HubSpot and Google Sheets
- Marcus Guedes (HubSpot/NetSuite integration owner) can build connectors
- Limitation: requires someone to own the data pipeline
- Recommended as bridge solution while raising capital
Option C: Stripe + HubSpot + NetSuite → Fivetran → BigQuery → Looker (Series A standard)
- Fivetran syncs all sources; BigQuery stores; Looker provides enterprise-grade dashboards
- Cost: ~$15–25K/year [source: analyst estimate]
- Implementation: 6–10 weeks with Marcus and a data engineer
- Recommended post-Series A when cash allows
Immediate recommendation: Use Option B (Looker Studio). It is free, Marcus already owns HubSpot/NetSuite integrations, and it can be built in 2–3 weeks. It provides 80% of the value at 0% of the cost of Option C. [source: analyst estimate]
12. Exact Formulas and Calculation Definitions
ARR Calculation (Stripe-based)
-- Active subscriptions only (status = 'active' or 'trialing')
SELECT
SUM(
CASE
WHEN interval = 'month' THEN amount * 12
WHEN interval = 'year' THEN amount
ELSE 0
END
) / 100 AS arr_usd
FROM stripe_subscriptions
WHERE status IN ('active', 'trialing')
AND cancelled_at IS NULL
Gross Churn Rate (MRR-weighted)
-- Monthly calculation
SELECT
DATE_TRUNC('month', cancelled_at) AS churn_month,
SUM(mrr_at_cancellation) AS churned_mrr,
LAG(SUM(mrr_at_cancellation)) OVER (ORDER BY DATE_TRUNC('month', cancelled_at)) AS prior_mrr,
(churned_mrr / NULLIF(prior_start_mrr, 0)) * 100 AS gross_churn_pct
FROM subscription_events
WHERE event_type = 'cancellation'
GROUP BY 1
Cash Runway
Runway_months = Cash_balance / ABS(Avg_monthly_net_cash_outflow_3mo)
Where: Avg_monthly_net_cash_outflow = (Cash_T - Cash_T-3) / 3
If result is positive (company cash-flow positive): display "Cash flow positive"
If result is negative: display months remaining
Net Revenue Retention (NRR)
NRR = (Starting ARR cohort - Churned ARR from cohort + Expansion ARR from cohort)
/ Starting ARR cohort × 100
Track quarterly: Compare Q1 2026 cohort ARR at Q1 2027 vs Q1 2026 baseline
LTV / CAC Ratio
LTV = ARPU / Annual Churn Rate
= ($600 Pro avg) / 0.477 [source: canonical-facts.yaml, identity.md]
= $1,258 per Pro subscriber [source: analyst estimate]
CAC = $603.25 (2024, blended) [source: business-kpis.md]
LTV/CAC = $1,258 / $603 = 2.1x (BELOW the 3x benchmark for healthy SaaS) [source: analyst estimate]
Target to reach 3x: [source: analyst estimate]
Option A: Reduce churn to 35% → LTV = $1,714 → LTV/CAC = 2.8x (almost)
Option B: Increase ARPU to $800 avg → LTV = $1,677 → LTV/CAC = 2.8x
Option C: Reduce CAC to $420 → LTV/CAC = 3.0x at current ARPU/churn