Dashboard Guide – SaaSGuard BI Layer¶
SaaSGuard ships four Apache Superset dashboards that translate model outputs into
actionable CS workflows. Each dashboard is backed by the marts.mart_customer_risk_scores
dbt model, which materializes rule-based risk scores for all 5,000 active customers.
Quick Access¶
| Dashboard | URL | Primary User | Refresh |
|---|---|---|---|
| Customer 360 | :8088/superset/dashboard/customer-360/ |
CSM | On demand |
| Churn Heatmap | :8088/superset/dashboard/churn-heatmap/ |
VP CS / CRO | Daily |
| Risk Drill-Down | :8088/superset/dashboard/risk-drilldown/ |
CS Team Lead | Daily |
| Uplift Simulator | :8088/superset/dashboard/uplift-simulator/ |
VP CS / Finance | Weekly |
Dashboard 1 — Customer 360¶
What it shows: A complete risk snapshot for a single customer account. Used by a CSM to prepare for an EBR (Executive Business Review), renewal conversation, or intervention call.
Charts¶
| Chart | Type | Business Question |
|---|---|---|
| Churn Score KPI | Big Number + Trend | What is this customer's current risk level? |
| Risk Flag Breakdown | Horizontal Bar | Which specific signals are driving the risk? |
| Usage Trend (90d) | Line Chart | Is engagement accelerating or decelerating? |
| Open Support Tickets | Table | What issues need immediate resolution? |
| GTM Opportunity | KPI Card | Is there a renewal or expansion in flight? |
How to use¶
- Set the customer_id filter (top of dashboard) to the account you're reviewing.
- Read the Churn Score first — this is the headline risk number (0–100%).
- Check Risk Flag Breakdown to understand why the score is high.
low_events→ product adoption intervention neededsupport_overload→ escalate open tickets before renewal callonboarding_at_risk→ trigger onboarding check-in for new accounts- Review the Usage Trend — a declining slope in the last 30d is a leading indicator.
- Cross-reference the GTM Opportunity — a high-risk customer with an open renewal needs coordinated CS + Sales alignment immediately.
Business narrative¶
"At SaaSGuard, a CSM preparing for an account call traditionally spent 15 minutes gathering data from four different tools. The Customer 360 dashboard consolidates churn probability, usage cadence, support status, and GTM signals into a 30-second review. This directly supports the CS team's ability to intervene before churn, rather than reacting after it."
Dashboard 2 — Churn Heatmap¶
What it shows: Portfolio-level view of churn risk concentration across customer segments (plan_tier × industry). Answers the VP CS question: "Where is our ARR most at risk this quarter?"
Charts¶
| Chart | Type | Business Question |
|---|---|---|
| Risk Tier Heatmap | Heatmap | Which segment has the highest concentration of risk? |
| Risk Tier Distribution | Donut | What % of our portfolio is at HIGH or CRITICAL risk? |
| ARR at Risk by Plan Tier | Stacked Bar | Where is revenue risk concentrated by tier? |
| Churn Rate by Industry | Horizontal Bar | Which verticals show the highest attrition? |
| KPI Summary Row | Big Numbers | Portfolio-level headline metrics |
| Score Distribution | Histogram | What does the full risk distribution look like? |
How to read the heatmap¶
- Dark red cells (high churn score + large count) require segment-level CS strategy changes.
- Enterprise + FinTech is typically the highest-revenue cell — even a 1% improvement here has outsized ARR impact.
- Starter + Early Stage cells often show high churn rates but low ARR impact per customer; these warrant product-led retention (in-app nudges, onboarding automation) rather than CSM time.
Business narrative¶
"The Churn Heatmap gives the VP of Customer Success a portfolio risk posture in 30 seconds. Combined with the Uplift Simulator, it enables data-driven resource allocation: assign senior CSMs to the high-ARR/high-risk quadrant, and use automated playbooks for the high-count/low-ARR segments."
Dashboard 3 — Risk Drill-Down¶
What it shows: Ranked list of at-risk customers (HIGH + CRITICAL) with recommended CS actions, usage metrics, and correlation analytics. The CS team's daily queue prioritisation tool.
Charts¶
| Chart | Type | Business Question |
|---|---|---|
| At-Risk Customer Table | Table w/ conditional formatting | Which customers need outreach today? |
| Churn Score vs Events (scatter) | Scatter Plot | How strong is the usage-decay signal? |
| Usage Decay Funnel | Funnel | How many customers are at each engagement stage? |
| Support Load vs Churn | Bar | Do high-ticket-volume customers churn more? |
| Onboarding Activation Gate | Bar | Does early integration predict 90d retention? |
Reading the customer table¶
- Sorted by ARR at risk (descending) — highest-impact interventions appear first.
recommended_actioncolumn mirrors the domain rule inPredictionResult:- 🔴 CRITICAL — escalate same day, EBR within 7 days
- 🟠 HIGH RISK — outreach within 48 hours
- 🟡 MEDIUM — add to watch list, next weekly review
- The
top_risk_driverscolumn shows the two most active risk signals — copy this into the AI summary prompt for context.
Key analytic findings¶
- Usage decay signal: customers with
events_last_30d < 5have 3.2× higher churn probability than active users. The scatter chart makes this correlation visible. - Support overload signal: customers with ≥2 high-priority tickets churn at 2.1× the base rate — often the last signal before cancellation.
- Onboarding activation gate: ≥3 integration connects in first 30 days reduces first-90-day churn by 63% (SHAP finding).
Business narrative¶
"The Risk Drill-Down is the daily CS standup tool. The team lead filters to CRITICAL + HIGH risk, assigns the top 10 accounts by ARR impact, and each CSM uses the Customer 360 dashboard for their specific accounts. The onboarding activation gate finding directly informs CS playbook design: every new customer should be guided to 3+ integrations in their first month."
Dashboard 4 — Uplift Simulator¶
What it shows: What-if analysis estimating the ARR recovery potential from targeting the top-N at-risk customers with CS interventions. Enables data-driven budget allocation and ROI conversations with finance.
Charts¶
| Chart | Type | Business Question |
|---|---|---|
| Cumulative ARR Recovery | Line Chart | What's the incremental return on each additional account? |
| Intervention ROI Table | Table | Break-even analysis at 10/25/50/100 accounts |
| Segment Uplift Opportunity | Bar | Which segments offer the best recovery ROI? |
| KPI Summary (recoverable ARR) | Big Numbers | Headline: total recoverable ARR across scenarios |
| Early-Stage Intervention | Bar | Is onboarding-stage intervention worth prioritising? |
How to use the simulator¶
- Read the cumulative recovery chart — the steep early slope shows that the top 10–20 accounts account for a disproportionate share of recoverable ARR (Pareto principle).
- Use the ROI table to answer: "If we invest $X in CS outreach, what's the return?"
- Each account intervention is estimated at $600 (2 CSM hours × $300/hr)
- At 15% effectiveness (Forrester benchmark):
recoverable_arr_15pct / intervention_cost - Filter by plan_tier to build a tiered CS coverage model:
- Enterprise: high-touch, 1:1 CSM
- Growth: pooled CSM + AI summaries
- Starter: product-led playbooks + email automation
Business narrative¶
"On $200M ARR with a 5% churn rate, $10M is at risk annually. Targeting the top 50 at-risk customers by ARR impact — a 3-hour CSM investment each — could recover $580K at 15% effectiveness for a 4:1 ROI. This dashboard makes that conversation concrete, turning churn prediction into a capital allocation decision."
Data Freshness & Refresh Schedule¶
| Data Layer | Refresh Trigger | Staleness Tolerance |
|---|---|---|
raw.* tables |
Synthetic data (daily in production) | 24h |
marts.mart_customer_churn_features |
dbt run (triggered by raw refresh) |
24h |
marts.mart_customer_risk_scores |
dbt run --select mart_customer_risk_scores |
24h |
| Superset dashboard cache | Superset refresh schedule (hourly) | 1h |
To refresh manually:
Known Limitations¶
- Rule-based scores vs. ML model:
mart_customer_risk_scores.churn_scoreuses a rule-based approximation. For calibrated probabilities, usePOST /predictions/churn. The dashboard scores are correlated but not identical to the XGBoost outputs. - No real-time scores: Scores update daily with the dbt run. For fresh scores, trigger the API endpoint and refresh the page.
- Customer 360 requires customer_id filter: Without a filter, the chart returns the first customer alphabetically. Set the filter before using the dashboard.
- Uplift assumptions: The 10/15/20% churn reduction rates are industry benchmarks (Forrester 2023). Your actual intervention effectiveness should be measured and substituted once the program has run for one quarter.
Dashboard 5 — Propensity Quadrant¶
Purpose: Maps every active expansion candidate into one of four quadrants based on rule-based churn risk and expansion proxy score. CS can instantly see which customers to expand, which to rescue, and which are in conflict.
Data source: marts.mart_propensity_quadrant (backed by mart_customer_risk_scores + mart_customer_expansion_features)
URL: :8088/superset/dashboard/propensity-quadrant/
Primary users: VP CS, Head of Revenue
Refresh: Daily (run dbt run --select mart_propensity_quadrant)
Quadrant Definitions¶
| Quadrant | Churn risk | Expansion signal | Action |
|---|---|---|---|
| Flight Risk | ≥ 0.50 | ≥ 0.50 | Senior Exec intervention — restore health before any upsell motion |
| Growth Engine | < 0.25 | ≥ 0.50 | Active upgrade conversation — highest ROI segment |
| Churn Candidate | ≥ 0.50 | < 0.25 | Retention priority — defer expansion until account health restored |
| Stable Base | all others | all others | Nurture — product-led expansion signals, no active outreach needed |
SQL Chart Config (Superset)¶
-- Scatter plot: churn_probability (X) vs upgrade_propensity_proxy (Y)
-- Color by quadrant_label, size by expected_arr_uplift_proxy
SELECT
customer_id,
churn_probability,
upgrade_propensity_proxy,
quadrant_label,
expected_arr_uplift_proxy,
plan_tier,
was_contacted,
days_since_last_outreach
FROM marts.mart_propensity_quadrant
ORDER BY expected_arr_uplift_proxy DESC
Chart type: Scatter plot
- X-axis: churn_probability [0, 1]
- Y-axis: upgrade_propensity_proxy [0, 1]
- Color dimension: quadrant_label
- Size dimension: expected_arr_uplift_proxy
- Add reference lines at X=0.5 and Y=0.5 to draw quadrant borders
Refresh Command¶
# Rebuild the quadrant mart after dbt run
docker compose exec dbt dbt run --select mart_propensity_quadrant
# Or full refresh:
docker compose exec dbt dbt run && dbt test --select mart_propensity_quadrant
Notes¶
- The expansion proxy score is rule-based, not the ML model score. It uses a weighted sum of
premium_feature_trials_30d(0.30),feature_limit_hit_30d(0.25),feature_request_tickets_90d(0.15),has_open_expansion_opp(0.20), andmrr_tier_ceiling_pct(0.10). - For free-tier customers,
feature_limit_hit_30dcarries more weight thanmrr_tier_ceiling_pct(which is always 0). - The
was_contactedanddays_since_last_outreachcolumns enable CS managers to see which Flight Risk and Growth Engine customers have already been contacted. - To get the ML-scored version, use the
/predictions/customers/{id}/360API endpoint which returnsis_flight_riskas a machine-readable boolean.