name: csat-nps-analysis
description: "Analyse CSAT / NPS / CES survey results and turn the score into actions. Use when asked to analyse NPS, CSAT, or CES data, compute an NPS score, interpret survey verbatims, or build a voice-of-customer readout. Produces a readout — the computed score, the trend & benchmark, themed analysis of the comments (what drives promoters vs. detractors), and prioritised actions. Includes a stdlib NPS/CSAT calculator."
CSAT / NPS Analysis Skill
A satisfaction score on its own is a vanity number — the value is in why it's that number and what to
do. This skill computes the score correctly (NPS is %promoters − %detractors, not an average), reads the
verbatims for the themes driving promoters and detractors, and turns it into a prioritised action list —
so a survey becomes a roadmap, not a slide.
Required Inputs
Ask for these only if they aren't already provided:
- The metric & data — NPS (0–10 ratings), CSAT (e.g. 1–5 or % satisfied), or CES; the response counts/distribution.
- The verbatims — open-text comments (the gold; paste what you have).
- Context — segment, time period, and the prior score for trend.
Output Format
[CSAT / NPS / CES] Readout: [segment, period]
1. The score — computed (use the helper for NPS/CSAT): the headline number, the distribution (promoters/passives/detractors for NPS), the trend vs. last period, and the benchmark (industry/your target). State the formula — NPS is a net of percentages, not an average.
2. What's driving it — theme the verbatims:
- Promoters love: the 2–3 recurring reasons people rate high (protect/amplify these).
- Detractors hurt by: the 2–3 recurring pains (these are your fix list).
- Passives need: what would move them up.
Quote a representative comment per theme.
3. Segments — where the score is notably worse/better (plan, tenure, channel), if the data allows — the average hides this.
4. Actions — prioritised: the highest-frequency × highest-impact detractor themes first, each with an owner and the metric it should move. A score with no actions is wasted.
Programmatic Helper
scripts/nps.py (stdlib only) computes NPS / CSAT from the rating distribution:
# NPS from 0-10 counts (11 numbers, ratings 0..10):
python3 scripts/nps.py nps 12 5 8 ...
# CSAT % satisfied (ratings 4-5 on a 1-5 scale):
python3 scripts/nps.py csat 2 3 10 40 55
python3 scripts/nps.py nps "...counts..." --json
Quality Checks
Anti-Patterns
Based On
Voice-of-customer practice — correct NPS/CSAT/CES computation, verbatim theming, and action prioritisation.
Example Trigger Phrases
- "Analyse NPS."
- "Compute an NPS score."
- "Interpret survey verbatims."
- "Build a voice-of-customer readout."