CSAT Score Analysis
Output format:
# CSAT Analysis: [Data Source/Period]
## Summary
- **Average Score:** [X.X] / [Scale]
- **Response Rate:** [X%] (if available)
- **Period:** [Date range]
- **Sample Size:** [N responses]
## Distribution
| Score | Count | Percentage |
|-------|-------|------------|
| [5/10] | [N] | [X%] |
| [4/9] | [N] | [X%] |
| ... | ... | ... |
## Trends
[If date data available: describe score trend over time]
## Outliers & Patterns
- **Top performers:** [Customers/segments with highest scores]
- **At-risk:** [Customers/segments with lowest scores]
- **Notable pattern:** [Any interesting correlation]
## Key Themes (if feedback text available)
### Positive
- [Theme 1]: [Example quote]
- [Theme 2]: [Example quote]
### Negative
- [Theme 1]: [Example quote]
- [Theme 2]: [Example quote]
## Recommendations
1. [Action based on data]
2. [Action based on data]Support Ticket Analysis
Output format:
# Support Ticket Analysis: [Period]
## Summary
- **Total Tickets:** [N]
- **Period:** [Date range]
- **Avg Resolution Time:** [X days/hours] (if available)
- **Ticket Trend:** [Up/Down/Flat] vs previous period
## Top Issues (by frequency)
| Rank | Issue/Category | Count | % of Total | Trend |
|------|---------------|-------|------------|-------|
| 1 | [Issue] | [N] | [X%] | [↑/↓/→] |
| 2 | [Issue] | [N] | [X%] | [↑/↓/→] |
| 3 | [Issue] | [N] | [X%] | [↑/↓/→] |
| 4 | [Issue] | [N] | [X%] | [↑/↓/→] |
| 5 | [Issue] | [N] | [X%] | [↑/↓/→] |
## By Priority/Severity (if available)
| Priority | Count | Avg Resolution |
|----------|-------|----------------|
| Critical | [N] | [X days] |
| High | [N] | [X days] |
| Medium | [N] | [X days] |
| Low | [N] | [X days] |
## Customer Concentration
- **High-ticket customers:** [Top N customers with most tickets]
- **Pattern:** [Are certain segments over-represented?]
## Root Cause Summary
[2-3 sentences on underlying causes for top issues]
## Recommended Actions
1. [Action for top issue]: [Expected impact]
2. [Action for pattern]: [Expected impact]
3. [Proactive measure]: [Expected impact]Churn Risk Detection
Output format:
# Churn Risk Analysis: [Data Source/Period]
## Methodology
[1-2 sentences on signals used: usage drop, login frequency, support interactions, etc.]
## High-Risk Customers
| Customer | Risk Signals | Last Active | ARR/Value | Recommendation |
|----------|-------------|-------------|-----------|----------------|
| [Name] | [Signal 1, Signal 2] | [Date] | [$X] | [Action] |
| [Name] | [Signal 1, Signal 2] | [Date] | [$X] | [Action] |
| ... | ... | ... | ... | ... |
## Risk Summary
- **High Risk:** [N customers] ([X% of base], [$X ARR at risk])
- **Medium Risk:** [N customers] ([X% of base], [$X ARR])
- **Healthy:** [N customers] ([X% of base])
## Common Risk Patterns
1. **[Pattern]:** [N customers] — [Description]
2. **[Pattern]:** [N customers] — [Description]
3. **[Pattern]:** [N customers] — [Description]
## Recommended Actions
1. [Immediate outreach to high-risk segment]
2. [Process change to address pattern]
3. [Monitoring/alert to catch earlier]Health Scoring Rubric
Output format:
# Health Score Rubric: [Segment/All Customers]
## Scoring Components
| Factor | Weight | Source | Scoring Logic |
|--------|--------|--------|---------------|
| Usage | [X%] | [Column/metric] | [How to score 1-10] |
| NPS/CSAT | [X%] | [Column/metric] | [How to score 1-10] |
| Support | [X%] | [Ticket count] | [How to score 1-10] |
| Renewal | [X%] | [Days to renewal] | [How to score 1-10] |
| Engagement | [X%] | [Meeting/response rate] | [How to score 1-10] |
**Total Weight:** 100%
## Score Thresholds
| Range | Label | Color | Action |
|-------|-------|-------|--------|
| 80-100 | Healthy | 🟢 Green | Monitor, identify expansion |
| 60-79 | Needs Attention | 🟡 Yellow | Proactive check-in |
| 40-59 | At Risk | 🟠 Orange | Intervention required |
| 0-39 | Critical | 🔴 Red | Escalate immediately |
## Sample Scores (Applied to Data)
| Customer | Usage | NPS | Support | Renewal | Engagement | **Total** | **Status** |
|----------|-------|-----|---------|---------|------------|-----------|------------|
| [Name] | [X] | [X] | [X] | [X] | [X] | **[X]** | [Color] |
| [Name] | [X] | [X] | [X] | [X] | [X] | **[X]** | [Color] |
| ... | ... | ... | ... | ... | ... | ... | ... |
## Distribution
- **Healthy:** [N] ([X%])
- **Needs Attention:** [N] ([X%])
- **At Risk:** [N] ([X%])
- **Critical:** [N] ([X%])
## Notes
- [Any data gaps or assumptions made]
- [Recommended adjustments based on segment]Analysis Guidelines
See Data Analytics Guidelines for complete analysis principles. Key points for CS data:
- ARR impact: Always quantify risk in revenue terms, not just customer counts
- Health context: Scores are relative; note what "healthy" looks like for this segment
- Churn signals: Distinguish between usage decline and support-driven churn indicators
Threshold Definitions
Use these defaults unless the user specifies otherwise:
| Metric | Threshold | Definition |
|---|---|---|
| High-ticket customer | >1 ticket in period | Customers with 2+ tickets warrant attention |
| Small sample warning | <20 rows | Flag that results may not be statistically significant |
| Inactive customer | >30 days since last login | At-risk signal for churn detection |
| Renewal urgency | <30 days to renewal | Requires immediate attention |
| Low usage | <25th percentile of cohort | Relative to segment, not absolute |
Edge Case Handling
Missing Expected Columns
If a required column type is not detected:
- List what columns ARE available
- Ask the user which column to use for that analysis dimension
- If no suitable column exists, note that analysis dimension will be skipped
Empty or Sparse Data
- Headers only (0 rows): "The CSV contains only headers with no data rows. Please provide a file with data."
- <20 rows: Include warning: "Note: Small sample size (N rows) — results may not be statistically significant."
- Many null values: Report: "X% of rows have missing values in [column]. These were excluded from calculations."
Open Tickets (No Resolution Time)
For tickets without resolution dates:
- Exclude from resolution time averages
- Report separately: "X tickets remain open and are excluded from resolution time calculations."
- Include in volume counts
Date Calculations
- Use current date for "days since" calculations (state the reference date used)
- For renewal proximity: "days until renewal" should be calculated from analysis date
- Past renewal dates: Flag as "renewal date has passed — may need data update"
Data Format Handling
The parsed CSV may be returned as either:
- Raw array:
[{row1}, {row2}, ...] - Wrapped format:
{"data": [{row1}, {row2}, ...], "source": "...", ...}
Handle both: if the JSON has a data property containing an array, use that; otherwise treat the root as the data array.