task icon Task

Identify Burnout Risk

Analyze Slack activity and/or timesheet data to identify early signs of burnout risk

Requirements
Either Slack connection OR CSV with hours data (or both for richer analysis)
1

Determine available data sources.

Check for statePeople Directory - if present and < 7 days old, Slack signals are available.
Ask the user: "Do you have timesheet/hours data as CSV, or should I analyze Slack activity patterns?"

Three modes:

  1. Slack only: Use after-hours %, weekend activity, message patterns as burnout proxies
  2. CSV only: Use hours worked data for traditional burnout analysis
  3. Both: Combine for highest confidence

If neither Slack signals nor CSV are available, offer to run taskSetup Slack Signals first.

2

If using Slack signals (with or without CSV):

Read statePeople Directory and extract burnout-relevant metrics per person:

  • After-hours message percentage (messages outside 8am-6pm)
  • Weekend message count
  • Message frequency trend (increasing activity can signal overwork)

Slack-based burnout thresholds:

  • ๐Ÿ”ด High risk: After-hours > 25% OR 5+ weekend messages OR both > 15% and 3+ weekend
  • ๐ŸŸก Moderate risk: After-hours > 15% OR 3-4 weekend messages
  • ๐ŸŸข Healthy: After-hours < 15% AND < 3 weekend messages

Note: Slack patterns are proxies, not direct hours measurement. Someone messaging
at 10pm might be catching up briefly, not working a full evening.

3

If CSV hours data is provided:

Ask for the CSV path if not already provided. Common sources: Harvest, Toggl, Clockify, HRIS.

Establish for the subtask:

Then run taskParse and Interpret CSV to parse the data.

4

If CSV data was parsed, read stateManager Analytics Session Data and validate:

  1. Missing values: Flag rows with empty employee names or hours
  2. Invalid hours: Must be positive numbers
  3. Impossible values: > 168/week impossible, > 100/week suspicious
  4. Sample size: Count unique employees and weeks

If > 50% invalid, ask for cleaner data. Otherwise proceed with valid rows.

6

Analyze for burnout risk using available signals.

If CSV hours available, for each person calculate:

  • Average weekly hours
  • Trend (increasing, stable, decreasing)
  • Peak hours week
  • Consecutive high-hour weeks

CSV-based thresholds:

  • ๐Ÿ”ด High risk: 50+ hrs for 2+ consecutive weeks, OR 45+ with increasing trend
  • ๐ŸŸก Moderate risk: 45+ hrs for 2+ weeks, OR any 50+ hr week
  • ๐ŸŸข Healthy: Consistently under 45 hrs

If combining Slack + CSV: Use both signal sets. Someone with 45+ hours AND
high after-hours Slack activity is higher risk than either signal alone.
Note which signals contributed to each person's risk level.

7

Present the burnout risk assessment.

Include:

  1. Summary: employees analyzed, signals used, risk distribution
  2. High-risk individuals with specific signals that triggered
  3. Moderate-risk individuals
  4. Healthy count
  5. Data sources note: "Analysis based on [Slack patterns / hours data / both]"

For Slack-only analysis, add caveat:
"This analysis uses Slack activity patterns as burnout proxies. After-hours messaging
and weekend activity suggest overwork but aren't direct hours measurements.
For more precise analysis, add timesheet data."

8

Provide actionable recommendations:

For high-risk individuals:

  • 1:1 conversation starters
  • Workload review suggestions
  • PTO encouragement

For team-wide patterns:

  • Staffing conversations
  • Process improvements
  • Prioritization discussions

Remind: This is directional data. Have conversations to understand context.

                    To run this task you must have the following required information:

> Either Slack connection OR CSV with hours data (or both for richer analysis)

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 CONSECUTIVE read steps in a row, read them all at once (in parallel). Otherwise, do not read a file until you reach that step.

Add all steps to your todo list now and begin executing.

## Steps

1. **Determine available data sources.**

Check for `documents/knowledge/people/*.md` - if present and < 7 days old, Slack signals are available.
Ask the user: "Do you have timesheet/hours data as CSV, or should I analyze Slack activity patterns?"

**Three modes:**
1. Slack only: Use after-hours %, weekend activity, message patterns as burnout proxies
2. CSV only: Use hours worked data for traditional burnout analysis
3. Both: Combine for highest confidence

If neither Slack signals nor CSV are available, offer to run `skills/sauna/[skill_id]/references/recipes/manager.slack.setup.md` first.


2. **If using Slack signals (with or without CSV):**

Read `documents/knowledge/people/*.md` and extract burnout-relevant metrics per person:
- After-hours message percentage (messages outside 8am-6pm)
- Weekend message count
- Message frequency trend (increasing activity can signal overwork)

**Slack-based burnout thresholds:**
- ๐Ÿ”ด High risk: After-hours > 25% OR 5+ weekend messages OR both > 15% and 3+ weekend
- ๐ŸŸก Moderate risk: After-hours > 15% OR 3-4 weekend messages
- ๐ŸŸข Healthy: After-hours < 15% AND < 3 weekend messages

Note: Slack patterns are proxies, not direct hours measurement. Someone messaging
at 10pm might be catching up briefly, not working a full evening.


3. **If CSV hours data is provided:**

Ask for the CSV path if not already provided. Common sources: Harvest, Toggl, Clockify, HRIS.

Establish for the subtask:
- Output path: `session/manager-analysis-data.json`
- Column types to detect: employee name/ID, date, hours, project/category (optional)

Then run `skills/sauna/[skill_id]/references/recipes/stdlib.csv.interpret.md` to parse the data.


4. **If CSV data was parsed**, read `session/manager-analysis-data.json` and validate:

1. Missing values: Flag rows with empty employee names or hours
2. Invalid hours: Must be positive numbers
3. Impossible values: > 168/week impossible, > 100/week suspicious
4. Sample size: Count unique employees and weeks

If > 50% invalid, ask for cleaner data. Otherwise proceed with valid rows.


5. [Read Manager Diagnostics Guide]: Read the documentation in: `skills/sauna/[skill_id]/references/manager.diagnostics.guide.md` (Reference burnout risk thresholds and output format)

6. **Analyze for burnout risk using available signals.**

**If CSV hours available, for each person calculate:**
- Average weekly hours
- Trend (increasing, stable, decreasing)
- Peak hours week
- Consecutive high-hour weeks

**CSV-based thresholds:**
- ๐Ÿ”ด High risk: 50+ hrs for 2+ consecutive weeks, OR 45+ with increasing trend
- ๐ŸŸก Moderate risk: 45+ hrs for 2+ weeks, OR any 50+ hr week
- ๐ŸŸข Healthy: Consistently under 45 hrs

**If combining Slack + CSV:** Use both signal sets. Someone with 45+ hours AND
high after-hours Slack activity is higher risk than either signal alone.
Note which signals contributed to each person's risk level.


7. **Present the burnout risk assessment.**

Include:
1. Summary: employees analyzed, signals used, risk distribution
2. High-risk individuals with specific signals that triggered
3. Moderate-risk individuals
4. Healthy count
5. Data sources note: "Analysis based on [Slack patterns / hours data / both]"

**For Slack-only analysis**, add caveat:
"This analysis uses Slack activity patterns as burnout proxies. After-hours messaging
and weekend activity suggest overwork but aren't direct hours measurements.
For more precise analysis, add timesheet data."


8. **Provide actionable recommendations:**

For high-risk individuals:
- 1:1 conversation starters
- Workload review suggestions
- PTO encouragement

For team-wide patterns:
- Staffing conversations
- Process improvements
- Prioritization discussions

Remind: This is directional data. Have conversations to understand context.