Build Health Scoring Rubric
If the CSV path was not already provided, ask the user for it.
Best results with multiple signal types: usage metrics, CSAT/NPS, ticket counts,
renewal dates, engagement metrics. The output path is defined by Session Customer Success Data.
VALIDATION: If 0 rows, stop and tell user the CSV has no data. If <20 rows, note for warning.
Interpret columns semantically. Look for: usage metrics, scores (CSAT/NPS), ticket counts,
renewal dates, engagement metrics, customers. Write enriched output back to Session Customer Success Data
with: source, rowCount, columns, interpretations, detected (by type), possibleAnalyses, data array.
Build a health scoring rubric. Default weights (adjust based on available signals):
- Usage: 30% (logins, feature adoption, activity)
- NPS/CSAT: 25% (satisfaction scores)
- Support: 15% (inverse of ticket count/severity)
- Renewal: 15% (proximity, contract status)
- Engagement: 15% (meeting frequency, response rate)
If only 1-2 signal types available, redistribute weights proportionally and note limitations.
Define 1-10 scoring logic for each available factor.
Health tiers: Green (80-100), Yellow (60-79), Orange (40-59), Red (0-39).
Present the complete rubric using Health Scoring Rubric template.
Apply the rubric to the dataset:
- Calculate health score for each customer
- Show distribution across tiers
- List customers by tier (especially Orange and Red)
- Note any surprising results that suggest rubric adjustment
Add sample size warning if <20 rows.
Recommend next steps:
- Immediate actions for Red/Critical customers
- Monitoring cadence: Red=weekly, Orange=biweekly, Yellow=monthly, Green=quarterly
- Rubric refinements based on distribution (too many in one tier suggests adjustment)
To run this task you must have the following required information:
> CSV file with customer data including multiple health indicators (usage, satisfaction, support, renewal timing)
If you don't have all of this information, exit here and respond asking for any extra information you require, and instructions to run this task again with ALL required information.
---
You MUST use a todo list to complete these steps in order. Never move on to one step if you haven't completed the previous step. If you have multiple read steps in a row, read them all at once (in parallel).
Add all steps to your todo list now and begin executing.
## Steps
1. If the CSV path was not already provided, ask the user for it.
Best results with multiple signal types: usage metrics, CSAT/NPS, ticket counts,
renewal dates, engagement metrics. The output path is defined by `./documents/tmp/success-data.json`.
2. [Gather Arguments: Parse CSV] The next step has the following requirements for arguments, do not proceed until you have all the required information:
- `inputPath`: CSV file path from user
- `outputPath`: ui:session.success.data path
- `hasHeaders` (default: "true") - Whether first row is headers: true, false
- `delimiter` - Field delimiter (auto-detected if empty)
- Packages: papaparse
3. [Run Code: Parse CSV]: Call `run_script` with:
```json
{
"file": {
"path": https://sk.ills.app/code/stdlib.csv.parse/preview,
"args": [
"inputPath",
"outputPath",
"hasHeaders",
"delimiter"
]
},
"packages": ["papaparse"]
}
```
4. [Read CSV Column Interpretation Guide]: Read the documentation in: `./skills/sauna/[skill_id]/references/stdlib.csv.interpretation.md` (Semantic column type detection guidance)
5. [Read Session Customer Success Data]: Read the file at `./documents/tmp/success-data.json` and analyze its contents (Load parsed CSV data)
6. VALIDATION: If 0 rows, stop and tell user the CSV has no data. If <20 rows, note for warning.
Interpret columns semantically. Look for: usage metrics, scores (CSAT/NPS), ticket counts,
renewal dates, engagement metrics, customers. Write enriched output back to `./documents/tmp/success-data.json`
with: source, rowCount, columns, interpretations, detected (by type), possibleAnalyses, data array.
7. [Read Customer Success Analytics Guide]: Read the documentation in: `./skills/sauna/[skill_id]/references/success.analytics.guide.md` (Health scoring rubric output format and thresholds)
8. Build a health scoring rubric. Default weights (adjust based on available signals):
- Usage: 30% (logins, feature adoption, activity)
- NPS/CSAT: 25% (satisfaction scores)
- Support: 15% (inverse of ticket count/severity)
- Renewal: 15% (proximity, contract status)
- Engagement: 15% (meeting frequency, response rate)
If only 1-2 signal types available, redistribute weights proportionally and note limitations.
Define 1-10 scoring logic for each available factor.
Health tiers: Green (80-100), Yellow (60-79), Orange (40-59), Red (0-39).
Present the complete rubric using Health Scoring Rubric template.
9. Apply the rubric to the dataset:
1. Calculate health score for each customer
2. Show distribution across tiers
3. List customers by tier (especially Orange and Red)
4. Note any surprising results that suggest rubric adjustment
Add sample size warning if <20 rows.
10. Recommend next steps:
1. Immediate actions for Red/Critical customers
2. Monitoring cadence: Red=weekly, Orange=biweekly, Yellow=monthly, Green=quarterly
3. Rubric refinements based on distribution (too many in one tier suggests adjustment)