Employee Feedback Analyzer
Analyze employee surveys, feedback, and reviews to identify themes, sentiment, and actionable insights.
This workflow processes anonymous feedback to surface organizational health metrics and improvement opportunities while maintaining privacy.
Implementation
1import { relay } from "@relayplane/workflows";23const result = await relay4 .workflow("employee-feedback")56 // Step 1: Categorize feedback themes7 .step("categorize-themes")8 .with("openai:gpt-4o")9 .prompt(`Categorize this employee feedback by theme:1011{{feedbackResponses}}1213Theme categories:14- Leadership & Management15- Compensation & Benefits16- Work-Life Balance17- Career Development18- Team Collaboration19- Company Culture20- Tools & Resources21- Communication22- Diversity & Inclusion23- Remote Work / Office2425For each response:26- Primary theme27- Secondary themes (if any)28- Specific sub-topic2930Return theme distribution summary.`)3132 // Step 2: Analyze sentiment33 .step("sentiment-analysis")34 .with("anthropic:claude-3.5-sonnet")35 .depends("categorize-themes")36 .prompt(`Analyze sentiment across feedback:3738Feedback: {{feedbackResponses}}39Themes: {{categorize-themes.output}}4041For each theme:42- Sentiment score (-1 to +1)43- Volume (number of mentions)44- Trend vs previous period (if available): {{previousData}}45- Key positive phrases46- Key negative phrases4748Also identify:49- Overall organization sentiment50- Most improved areas51- Declining areas (red flags)`)5253 // Step 3: Extract specific concerns54 .step("extract-concerns")55 .with("anthropic:claude-3.5-sonnet")56 .depends("categorize-themes", "sentiment-analysis")57 .prompt(`Extract specific concerns and suggestions:5859Feedback: {{feedbackResponses}}60Themes: {{categorize-themes.output}}61Sentiment: {{sentiment-analysis.output}}6263For top negative themes, identify:64- Root cause patterns65- Specific examples (anonymized)66- Frequency of mention67- Which teams/departments affected6869Also extract:70- Concrete employee suggestions71- Wins to celebrate72- Quick wins (easy fixes)7374Be specific enough to act on.`)7576 // Step 4: Generate recommendations77 .step("recommendations")78 .with("openai:gpt-4o")79 .depends("categorize-themes", "sentiment-analysis", "extract-concerns")80 .prompt(`Generate actionable recommendations:8182Analysis: {{extract-concerns.output}}83Sentiment: {{sentiment-analysis.output}}8485For each major issue:86- Recommended action87- Owner (HR, Leadership, Managers, specific team)88- Effort level (low/medium/high)89- Expected impact90- Success metric9192Prioritize by:931. Impact on retention942. Quick wins first953. Systemic issues that affect multiple themes`)9697 // Step 5: Generate executive report98 .step("executive-report")99 .with("anthropic:claude-3.5-sonnet")100 .depends("categorize-themes", "sentiment-analysis", "extract-concerns", "recommendations")101 .prompt(`Create executive feedback report:102103Themes: {{categorize-themes.output}}104Sentiment: {{sentiment-analysis.output}}105Concerns: {{extract-concerns.output}}106Recommendations: {{recommendations.output}}107108Survey: {{surveyName}}109Period: {{surveyPeriod}}110Response Rate: {{responseRate}}111112Format:113# Employee Feedback Report - {{surveyPeriod}}114115## Executive Summary116- Key metrics (eNPS, response rate)117- Top 3 wins118- Top 3 concerns119120## Sentiment Overview121- Overall score and trend122- By theme breakdown123124## Key Themes125126### 🟢 Positive Themes127- What employees love128129### 🟡 Neutral/Mixed130- Areas with polarized feedback131132### 🔴 Concerns133- Issues requiring attention134135## Recommended Actions136- Prioritized action plan137- Quick wins138- Strategic initiatives139140## Next Steps141- Follow-up timeline142- Communication plan143144Data-driven, actionable, balanced tone.`)145146 .run({147 feedbackResponses: surveyResponses,148 previousData: lastQuarterData,149 surveyName: "Q4 2024 Engagement Survey",150 surveyPeriod: "October-November 2024",151 responseRate: "78%",152 });153154// Send to HR leadership155await sendEmail({156 to: ["hr-leadership@company.com"],157 subject: "Q4 Employee Feedback Analysis",158 body: result.steps["executive-report"].output,159});160161// Create Jira initiatives for recommendations162const recommendations = JSON.parse(result.steps["recommendations"].output);163for (const rec of recommendations.filter(r => r.priority === "high")) {164 await createInitiative({165 title: rec.action,166 owner: rec.owner,167 epic: "Employee Experience",168 description: rec.details,169 });170}Anonymous Survey Integration
1// Culture Amp / Lattice integration2import { relay } from "@relayplane/workflows";34async function analyzeSurveyResults(surveyId: string) {5 // Fetch anonymous responses (no PII)6 const responses = await cultureAmp.surveys.getResponses(surveyId);78 // Process in aggregate - never analyze individual responses9 const result = await relay10 .workflow("employee-feedback")11 .run({12 feedbackResponses: responses.map(r => r.anonymousResponse),13 previousData: await getPreviousSurveyData(),14 surveyName: responses.surveyTitle,15 });1617 // Create dashboard18 await updateFeedbackDashboard({19 surveyId,20 themes: result.steps["categorize-themes"].output,21 sentiment: result.steps["sentiment-analysis"].output,22 recommendations: result.steps["recommendations"].output,23 });2425 return result;26}Team-Level Analysis
1// Analyze by team (requires min 5 responses for anonymity)2const teams = ["Engineering", "Sales", "Product", "Marketing"];3const teamReports = {};45for (const team of teams) {6 const teamResponses = responses.filter(r => r.department === team);78 // Skip if too few responses (anonymity protection)9 if (teamResponses.length < 5) {10 teamReports[team] = { status: "insufficient_responses" };11 continue;12 }1314 const analysis = await relay15 .workflow("employee-feedback")16 .run({17 feedbackResponses: teamResponses,18 surveyPeriod: "Q4 2024",19 });2021 teamReports[team] = {22 sentiment: analysis.steps["sentiment-analysis"].output,23 concerns: analysis.steps["extract-concerns"].output,24 };25}2627// Compare teams28await generateTeamComparison(teamReports);Sample Output
1# Employee Feedback Report - Q4 202423## Executive Summary4**Response Rate:** 78% (312/400 employees)5**eNPS:** 32 (up from 28 in Q3)6**Overall Sentiment:** +0.42 (Positive)78### Top Wins91. **Remote work flexibility** - 89% satisfaction rate102. **Team collaboration** - "Best team I've worked with" mentioned 47 times113. **Learning opportunities** - New L&D program rated highly1213### Top Concerns141. **Career progression clarity** - Unclear paths to promotion152. **Compensation transparency** - Want more market data163. **Meeting overload** - "Too many meetings" mentioned 34 times1718## Sentiment by Theme1920| Theme | Score | Trend | Volume |21|-------|-------|-------|--------|22| Team Collaboration | +0.72 | ↑ | 156 |23| Remote Work | +0.68 | → | 134 |24| Company Culture | +0.54 | ↑ | 89 |25| Work-Life Balance | +0.31 | ↓ | 78 |26| Career Development | -0.22 | ↓ | 112 |27| Compensation | -0.31 | → | 94 |2829## 🔴 Key Concerns3031### Career Development (-0.22)32**Root Causes:**33- No documented promotion criteria34- Limited visibility into growth opportunities35- Managers not trained on career conversations3637**Employee Quotes:**38- "I don't know what I need to do to get promoted"39- "My manager doesn't discuss my career goals"40- "No clear path from IC to management"4142**Affected Teams:** Engineering (35%), Product (28%), Sales (22%)4344### Meeting Overload45**Data:**46- Average 18 meetings/week per employee47- 34 mentions of "too many meetings"48- Peak meeting times: 10am-12pm, 2-4pm4950**Employee Quotes:**51- "No time for deep work"52- "Could this meeting be an email?"5354## Recommended Actions5556### Immediate (This Month)571. **Publish promotion criteria** - Define clear requirements for each level58 - Owner: HR + Department Heads59 - Effort: Medium60 - Impact: High61622. **Implement meeting-free focus time** - Block 9-11am Tue/Thu63 - Owner: Leadership64 - Effort: Low65 - Impact: Medium6667### Short-term (This Quarter)683. **Manager training on career conversations** - 2-hour workshop69 - Owner: L&D Team70 - Budget: $5,00071 - Metric: Post-training survey score >4.272734. **Compensation transparency initiative** - Share market data74 - Owner: Compensation Team75 - Timeline: February7677## Next Steps78- [ ] Share report with leadership team - Nov 2279- [ ] All-hands communication - Nov 2980- [ ] Action planning sessions by department - Week of Dec 281- [ ] Follow-up pulse survey - JanuaryPrivacy Best Practices
- Minimum response threshold: Only analyze groups of 5+ responses
- Remove identifiers: Strip names, dates, unique phrases
- Aggregate only: Never surface individual responses
- Secure storage: Encrypt feedback data at rest
- Limited access: Only HR and leadership see detailed reports
Impact: Companies using structured feedback analysis see 23% higher retention and 31% better eNPS scores on average.