Skill

Calculate Customer Health Scores

A customer health score expert that builds weighted, multi-dimensional scoring models to predict churn risk and flag at-risk accounts early.


78
Spark score
out of 100
Updated 11 days ago
Version 1.0.0
Models

Add to Favorites

Why it matters

Proactively manage customer success by calculating dynamic health scores. Predict churn risk and identify expansion opportunities using multi-dimensional data.

Outcomes

What it gets done

01

Implement weighted scoring models for product adoption, relationship health, and business outcomes.

02

Calculate scores using basic weighted, advanced time-decay, and trend momentum methodologies.

03

Segment customers into risk categories (Healthy, At Risk, High Risk, Critical) with actionable insights.

04

Integrate with CRM and support systems to automate health score updates and alerts.

Install

Add it to your toolbox

Run in your project directory:

curl -fsSL https://spark.entire.vc/get/vb-health-score-calculator | bash

Overview

Health Score Calculator

A customer health score expert that builds weighted, multi-dimensional scoring models combining usage, engagement, support, and outcome data, with time-decay and momentum options and predictive-accuracy validation. Use it when building or refining a health-scoring model - metric weights, risk bands, and recommended actions - rather than a one-off risk flag.

What it does

Designs, implements, and optimizes customer health scoring systems that predict customer behavior, flag at-risk accounts, and drive proactive customer success. Scores combine four dimensions - product adoption (feature usage, login frequency, engagement depth), relationship health (support ticket volume and sentiment, NPS, stakeholder engagement), business outcomes (goal achievement, ROI realization, expansion indicators), and behavioral patterns (usage trends, seasonal variation, cohort comparisons) - as weighted composite scores normalized to a 0-100 scale, weighting critical metrics higher, applying decay functions to time-sensitive data, and ranking customers by percentile within their cohort rather than on raw values alone. It implements both a basic weighted model (usage, engagement, support, and outcome sub-scores combined by fixed weights) and an advanced time-decay model that applies exponential decay to historical metrics and computes a trend-momentum factor comparing a customer's most recent week against the prior week. Adoption metrics are computed via percentile-ranked SQL over a 30-day event window (feature breadth, engagement frequency, engagement depth, core-feature adoption), and support health is scored from ticket volume, resolution time, CSAT, and escalation rate. Scores are banded into risk categories - Healthy, At Risk, High Risk, Critical - each mapped to a recommended action, with priority further adjusted for high-value accounts.

When to use - and when NOT to

Use it to build or refine a customer health scoring model - defining metric weights, choosing between a static weighted model and a time-decay/momentum model, wiring up percentile-based adoption and support scoring, and setting the risk bands and recommended actions a CSM team acts on.

Inputs and outputs

Input is raw customer usage, engagement, support, and outcome data. Output is a normalized 0-100 health score, a risk category and priority (adjusted for account value), a recommended action per category, and validation tooling - validate_health_score_accuracy - that measures the score's predictive accuracy against actual churn/retention outcomes using accuracy, precision, and recall at different score thresholds.

Integrations

Implemented in Python with numpy for time-decay and momentum calculations and scikit-learn (accuracy_score, precision_recall_curve) for validating score accuracy against real outcomes, plus SQL PERCENT_RANK for percentile-based adoption scoring directly against a product-events table.

Who it's for

For customer success and CS-ops teams building or maintaining a health-scoring system. It also covers implementation practices (data-freshness checks, statistical outlier detection, validating calculations against known outcomes, gradual rollout of scoring changes), reporting (executive dashboards, cohort-based comparisons, alerts when a score moves more than 20 points), and where to extend it further: automated weight optimization against churn correlation, anomaly detection, time-series predictive scoring, NLP-based support-ticket sentiment analysis, and segmentation by industry, lifecycle stage, account tier, or geography.

def calculate_health_score(customer_data):
    # Normalize metrics to 0-100 scale
    usage_score = normalize_usage_metrics(customer_data['usage'])
    engagement_score = normalize_engagement_metrics(customer_data['engagement'])
    support_score = normalize_support_metrics(customer_data['support'])
    outcome_score = normalize_outcome_metrics(customer_data['outcomes'])
    
    # Apply weights (should sum to 1.0)
    weights = {
        'usage': 0.35,
        'engagement': 0.25,
        'support': 0.20,
        'outcomes': 0.20
    }
    
    health_score = (
        usage_score * weights['usage'] +
        engagement_score * weights['engagement'] +
        support_score * weights['support'] +
        outcome_score * weights['outcomes']
    )
    
    return min(100, max(0, health_score))

FAQ

Common questions

Discussion

Questions & comments · 0

Sign In Sign in to leave a comment.