Voice of customer synthesizer
Aggregate customer feedback from multiple sources — support tickets, NPS comments, Slack messages, G2 reviews, call transcripts, survey responses — into a unified VoC report with theme clustering, sentiment analysis, trend detection, and actionable recommendations for product, marketing, and CS teams.
How to use it
- Hit Copy SKILL.md — or use the Claude Code line below to get every file.
- Claude: ⋯ → Download .md, then Customize → Skills → Add → Upload skill.
ChatGPT: make a Project and paste it into Instructions.
Neither? Paste it at the top of a new chat — it works for that chat. - Describe your job in plain words. The AI follows the skill from there.
npx degit gooseworks-ai/goose-skills/skills/research/composites/voice-of-customer-synthesizer#main ~/.claude/skills/voice-of-customer-synthesizerFor one project only, change the path to .claude/skills/voice-of-customer-synthesizer. This skill also uses run_skill.py — copying SKILL.md alone won't be enough. See the folder on GitHub.
Not working?
- Check which app you pasted it into — the steps above name the right one.
- Some skills need the paid tier of Claude or ChatGPT.
Paste into Claude, ChatGPT or Cursor.
Show the full text313 lines
Voice of Customer Synthesizer
Turn scattered customer feedback into a single source of truth. Aggregates signals from every source you have, clusters them into themes, and produces a report that product, marketing, and CS teams can actually act on.
Built for: Startups where customer feedback lives in 6 different places and nobody has time to synthesize it. The founder says "what are customers saying?" and nobody has a clear answer. This skill produces that answer.
When to Use
- "What are our customers saying?"
- "Synthesize customer feedback from last quarter"
- "Build a VoC report for the product team"
- "What themes are coming up in customer feedback?"
- "Aggregate feedback from all our channels"
Phase 0: Intake
Feedback Sources (provide all you have)
- Support tickets — Export from support tool (CSV: customer, date, subject, description, tags, resolution)
- NPS/CSAT survey responses — Scores + verbatim comments
- Slack messages — Customer channel messages, feedback channels
- G2/Capterra reviews — Will scrape if product is listed (provide product name or URL)
- Call/meeting transcripts — Customer call recordings or notes
- Churn exit survey responses — Why did customers leave?
- Feature request log — Internal tracker of what customers have asked for
- Social mentions — Twitter/LinkedIn/Reddit threads mentioning your product
- Email threads — Notable customer emails (praise or complaints)
- In-app feedback — Any in-product feedback submissions
Configuration
- Time period — What window to analyze? (Last 30 days, quarter, 6 months)
- Product name — For review scraping and context
- Report audience — Who's reading this? (Product team, exec team, CS team, all)
- Focus areas — Any specific themes to pay attention to? (e.g., "onboarding experience", "pricing feedback", "mobile app")
Phase 1: Data Collection
1A: Internal Data Processing
From the provided inputs, normalize all feedback into a standard format:
SOURCE | DATE | CUSTOMER | SEGMENT | FEEDBACK_TEXT | SENTIMENT | CATEGORY
Sentiment classification per item:
- Positive — Praise, satisfaction, delight
- Neutral — Feature request, question, observation
- Negative — Complaint, frustration, disappointment
- Critical — Churn threat, escalation, anger
1B: External Review Scraping (if applicable)
If product is on review platforms:
Chain: review-site-scraper for G2, Capterra, Trustpilot
Filter: reviews from the target time period
Extract: rating, review text, reviewer role/company size, date, pros, cons.
1C: Social Listening (if applicable)
Search: "[product name]" feedback OR review OR "switched to" OR "stopped using"
Search: "[product name]" site:reddit.com OR site:twitter.com
Phase 2: Theme Clustering
Group all feedback items into themes using a bottom-up approach:
Clustering Method
- Read all feedback items
- Identify recurring topics (mentioned by 3+ customers or in 3+ sources)
- Group into theme clusters
- Rank by frequency AND severity
Theme Template
THEME: [Name — e.g., "Onboarding Complexity"]
FREQUENCY: [N mentions across M sources]
SENTIMENT: [Predominantly positive/neutral/negative]
TREND: [↑ Growing / → Stable / ↓ Declining vs prior period]
REPRESENTATIVE QUOTES:
- "[Exact quote]" — [Source, Customer segment, Date]
- "[Exact quote]" — [Source, Customer segment, Date]
- "[Exact quote]" — [Source, Customer segment, Date]
CUSTOMER SEGMENTS AFFECTED:
- [Segment 1: e.g., "New customers in first 30 days"]
- [Segment 2: e.g., "Enterprise accounts"]
ROOT CAUSE HYPOTHESIS:
[1-2 sentences: Why is this coming up? What's the underlying issue?]
IMPACT:
- On retention: [High/Medium/Low]
- On expansion: [High/Medium/Low]
- On acquisition: [High/Medium/Low]
Phase 3: Analysis
3A: Sentiment Overview
Overall Sentiment Distribution:
Positive: [N] items ([X%]) ████████░░
Neutral: [N] items ([X%]) ████░░░░░░
Negative: [N] items ([X%]) ██░░░░░░░░
Critical: [N] items ([X%]) █░░░░░░░░░
3B: Source Comparison
| Source | Volume | Avg Sentiment | Top Theme |
|---|---|---|---|
| Support tickets | [N] | [Pos/Neg score] | [Theme] |
| NPS comments | [N] | [Score] | [Theme] |
| G2 reviews | [N] | [Score] | [Theme] |
| Slack | [N] | [Score] | [Theme] |
| Calls | [N] | [Score] | [Theme] |
Insight: Different sources often reveal different stories. Support tickets skew negative (problems). Reviews skew bipolar (love/hate). Calls reveal nuance. Note where themes appear across sources for highest confidence.
3C: Segment Analysis
| Customer Segment | Dominant Sentiment | Top Request | Key Pain |
|---|---|---|---|
| [New customers] | [Sentiment] | [Request] | [Pain] |
| [Power users] | [Sentiment] | [Request] | [Pain] |
| [Enterprise] | [Sentiment] | [Request] | [Pain] |
| [Churned] | [Sentiment] | [Request] | [Pain] |
3D: Trend Detection
Compare against prior period (if available):
| Theme | Prior Period | This Period | Trend | Alert |
|---|---|---|---|---|
| [Theme 1] | [N mentions] | [N mentions] | [↑X%] | [New/Growing/Stable/Declining] |
| [Theme 2] | ... | ... | ... | ... |
New themes this period: [Themes that weren't present before] Resolved themes: [Themes that decreased significantly — things you fixed]
Phase 4: Recommendations
For Product Team
| Priority | Theme | Recommendation | Evidence Strength |
|---|---|---|---|
| P0 | [Theme] | [Specific action] | [N mentions, M sources, includes churn signals] |
| P1 | [Theme] | [Action] | [Evidence] |
| P2 | [Theme] | [Action] | [Evidence] |
For CS/Support Team
| Action | Theme | Expected Impact |
|---|---|---|
| [Create help article for X] | [Theme] | Deflect ~[N] tickets/month |
| [Add onboarding step for Y] | [Theme] | Reduce confusion for new users |
| [Proactive outreach to segment Z] | [Theme] | Prevent churn in at-risk segment |
For Marketing Team
| Action | Theme | Opportunity |
|---|---|---|
| [Use this proof point in messaging] | [Positive theme] | "[Customer quote ready for marketing]" |
| [Address this objection on website] | [Negative theme] | Counter common concern pre-sale |
| [Build case study around X] | [Positive theme] | [N] customers mentioned this win |
Phase 5: Output Format
# Voice of Customer Report — [Period]
Sources analyzed: [list]
Total feedback items: [N]
Date range: [start] — [end]
---
## Executive Summary
[3-5 sentences: What are customers saying? What's the overall sentiment?
What's the single most important thing to act on?]
---
## Sentiment Overview
Positive: [X%] | Neutral: [X%] | Negative: [X%] | Critical: [X%]
Net Sentiment Score: [calculated — % positive minus % negative]
vs Prior Period: [+/- X points]
---
## Top Themes (Ranked by Impact)
### 1. [Theme Name] — [Sentiment] — [N mentions]
**Summary:** [2-3 sentences]
**Key quotes:**
> "[Quote]" — [Source]
> "[Quote]" — [Source]
**Recommended action:** [What to do]
**Owner:** [Product / CS / Marketing]
### 2. [Theme Name] — ...
### 3. [Theme Name] — ...
[Continue for top 5-8 themes]
---
## What Customers Love (Preserve These)
| Strength | Evidence | Marketing Opportunity |
|----------|---------|----------------------|
| [Feature/experience] | "[Quote]" — [N mentions] | [How to use in messaging] |
---
## What Customers Want (Feature Requests)
| Request | Frequency | Segments | Product Priority |
|---------|-----------|----------|-----------------|
| [Feature] | [N mentions] | [Who wants it] | [P0/P1/P2] |
---
## What Causes Pain (Fix These)
| Pain Point | Severity | Churn Risk | Recommended Fix |
|-----------|----------|------------|----------------|
| [Issue] | [High/Med/Low] | [Yes/No] | [Action] |
---
## Trends vs Prior Period
[What's getting better, what's getting worse, what's new]
---
## Team-Specific Action Items
### Product Team
1. [Action] — [Evidence]
### CS Team
1. [Action] — [Evidence]
### Marketing Team
1. [Action] — [Evidence]
---
## Appendix: All Themes Detail
[Full theme cards with all quotes and analysis]
Save to voc-report-[YYYY-MM-DD].md in the current working directory.
Scheduling
Run monthly or quarterly:
0 8 1 */3 * python3 run_skill.py voice-of-customer-synthesizer --client <client-name>
Cost
| Component | Cost |
|---|---|
| Review scraping (via review-site-scraper) | ~$0.50-1.00 |
| Web search (social mentions) | Free |
| All analysis and synthesis | Free (LLM reasoning) |
| Total | Free — $1 |
Tools Required
- Optional:
review-site-scraperfor G2/Capterra/Trustpilot reviews - Optional:
twitter-mention-trackerfor social mentions - Optional:
reddit-post-finderfor community feedback - All analysis is pure LLM reasoning on provided data
Trigger Phrases
- "What are customers saying?"
- "Build a VoC report"
- "Synthesize our customer feedback"
- "Run voice of customer analysis"
- "Customer feedback summary for [period]"
| 1 | |
| 2 | name voice-of-customer-synthesizer |
| 3 | description > |
| 4 | Aggregate customer feedback from multiple sources — support tickets, NPS comments, |
| 5 | Slack messages, G2 reviews, call transcripts, survey responses — into a unified VoC |
| 6 | report with theme clustering, sentiment analysis, trend detection, and actionable |
| 7 | recommendations for product, marketing, and CS teams. Chains review-site-scraper for public |
| 8 | review data. |
| 9 | tags [research] |
| 10 | |
| 11 | |
| 12 | # Voice of Customer Synthesizer |
| 13 | |
| 14 | Turn scattered customer feedback into a single source of truth. Aggregates signals from every source you have, clusters them into themes, and produces a report that product, marketing, and CS teams can actually act on. |
| 15 | |
| 16 | **Built for:** Startups where customer feedback lives in 6 different places and nobody has time to synthesize it. The founder says "what are customers saying?" and nobody has a clear answer. This skill produces that answer. |
| 17 | |
| 18 | ## When to Use |
| 19 | |
| 20 | "What are our customers saying?" |
| 21 | "Synthesize customer feedback from last quarter" |
| 22 | "Build a VoC report for the product team" |
| 23 | "What themes are coming up in customer feedback?" |
| 24 | "Aggregate feedback from all our channels" |
| 25 | |
| 26 | ## Phase 0: Intake |
| 27 | |
| 28 | ### Feedback Sources (provide all you have) |
| 29 | **Support tickets** — Export from support tool (CSV: customer, date, subject, description, tags, resolution) |
| 30 | **NPS/CSAT survey responses** — Scores + verbatim comments |
| 31 | **Slack messages** — Customer channel messages, feedback channels |
| 32 | **G2/Capterra reviews** — Will scrape if product is listed (provide product name or URL) |
| 33 | **Call/meeting transcripts** — Customer call recordings or notes |
| 34 | **Churn exit survey responses** — Why did customers leave? |
| 35 | **Feature request log** — Internal tracker of what customers have asked for |
| 36 | **Social mentions** — Twitter/LinkedIn/Reddit threads mentioning your product |
| 37 | **Email threads** — Notable customer emails (praise or complaints) |
| 38 | **In-app feedback** — Any in-product feedback submissions |
| 39 | |
| 40 | ### Configuration |
| 41 | **Time period** — What window to analyze? (Last 30 days, quarter, 6 months) |
| 42 | **Product name** — For review scraping and context |
| 43 | **Report audience** — Who's reading this? (Product team, exec team, CS team, all) |
| 44 | **Focus areas** — Any specific themes to pay attention to? (e.g., "onboarding experience", "pricing feedback", "mobile app") |
| 45 | |
| 46 | ## Phase 1: Data Collection |
| 47 | |
| 48 | ### 1A: Internal Data Processing |
| 49 | |
| 50 | From the provided inputs, normalize all feedback into a standard format: |
| 51 | |
| 52 | |
| 53 | SOURCE | DATE | CUSTOMER | SEGMENT | FEEDBACK_TEXT | SENTIMENT | CATEGORY |
| 54 | |
| 55 | |
| 56 | Sentiment classification per item: |
| 57 | **Positive** — Praise, satisfaction, delight |
| 58 | **Neutral** — Feature request, question, observation |
| 59 | **Negative** — Complaint, frustration, disappointment |
| 60 | **Critical** — Churn threat, escalation, anger |
| 61 | |
| 62 | ### 1B: External Review Scraping (if applicable) |
| 63 | |
| 64 | If product is on review platforms: |
| 65 | |
| 66 | |
| 67 | Chain: review-site-scraper for G2, Capterra, Trustpilot |
| 68 | Filter: reviews from the target time period |
| 69 | |
| 70 | |
| 71 | Extract: rating, review text, reviewer role/company size, date, pros, cons. |
| 72 | |
| 73 | ### 1C: Social Listening (if applicable) |
| 74 | |
| 75 | |
| 76 | Search: "[product name]" feedback OR review OR "switched to" OR "stopped using" |
| 77 | Search: "[product name]" site:reddit.com OR site:twitter.com |
| 78 | |
| 79 | |
| 80 | ## Phase 2: Theme Clustering |
| 81 | |
| 82 | Group all feedback items into themes using a bottom-up approach: |
| 83 | |
| 84 | ### Clustering Method |
| 85 | |
| 86 | Read all feedback items |
| 87 | Identify recurring topics (mentioned by 3+ customers or in 3+ sources) |
| 88 | Group into theme clusters |
| 89 | Rank by frequency AND severity |
| 90 | |
| 91 | ### Theme Template |
| 92 | |
| 93 | |
| 94 | THEME: [Name — e.g., "Onboarding Complexity"] |
| 95 | FREQUENCY: [N mentions across M sources] |
| 96 | SENTIMENT: [Predominantly positive/neutral/negative] |
| 97 | TREND: [↑ Growing / → Stable / ↓ Declining vs prior period] |
| 98 | |
| 99 | REPRESENTATIVE QUOTES: |
| 100 | - "[Exact quote]" — [Source, Customer segment, Date] |
| 101 | - "[Exact quote]" — [Source, Customer segment, Date] |
| 102 | - "[Exact quote]" — [Source, Customer segment, Date] |
| 103 | |
| 104 | CUSTOMER SEGMENTS AFFECTED: |
| 105 | - [Segment 1: e.g., "New customers in first 30 days"] |
| 106 | - [Segment 2: e.g., "Enterprise accounts"] |
| 107 | |
| 108 | ROOT CAUSE HYPOTHESIS: |
| 109 | [1-2 sentences: Why is this coming up? What's the underlying issue?] |
| 110 | |
| 111 | IMPACT: |
| 112 | - On retention: [High/Medium/Low] |
| 113 | - On expansion: [High/Medium/Low] |
| 114 | - On acquisition: [High/Medium/Low] |
| 115 | |
| 116 | |
| 117 | ## Phase 3: Analysis |
| 118 | |
| 119 | ### 3A: Sentiment Overview |
| 120 | |
| 121 | |
| 122 | Overall Sentiment Distribution: |
| 123 | Positive: [N] items ([X%]) ████████░░ |
| 124 | Neutral: [N] items ([X%]) ████░░░░░░ |
| 125 | Negative: [N] items ([X%]) ██░░░░░░░░ |
| 126 | Critical: [N] items ([X%]) █░░░░░░░░░ |
| 127 | |
| 128 | |
| 129 | ### 3B: Source Comparison |
| 130 | |
| 131 | | Source | Volume | Avg Sentiment | Top Theme | |
| 132 | |--------|--------|---------------|-----------| |
| 133 | | Support tickets | [N] | [Pos/Neg score] | [Theme] | |
| 134 | | NPS comments | [N] | [Score] | [Theme] | |
| 135 | | G2 reviews | [N] | [Score] | [Theme] | |
| 136 | | Slack | [N] | [Score] | [Theme] | |
| 137 | | Calls | [N] | [Score] | [Theme] | |
| 138 | |
| 139 | **Insight:** Different sources often reveal different stories. Support tickets skew negative (problems). Reviews skew bipolar (love/hate). Calls reveal nuance. Note where themes appear across sources for highest confidence. |
| 140 | |
| 141 | ### 3C: Segment Analysis |
| 142 | |
| 143 | | Customer Segment | Dominant Sentiment | Top Request | Key Pain | |
| 144 | |-----------------|-------------------|-------------|----------| |
| 145 | | [New customers] | [Sentiment] | [Request] | [Pain] | |
| 146 | | [Power users] | [Sentiment] | [Request] | [Pain] | |
| 147 | | [Enterprise] | [Sentiment] | [Request] | [Pain] | |
| 148 | | [Churned] | [Sentiment] | [Request] | [Pain] | |
| 149 | |
| 150 | ### 3D: Trend Detection |
| 151 | |
| 152 | Compare against prior period (if available): |
| 153 | |
| 154 | | Theme | Prior Period | This Period | Trend | Alert | |
| 155 | |-------|-------------|-------------|-------|-------| |
| 156 | | [Theme 1] | [N mentions] | [N mentions] | [↑X%] | [New/Growing/Stable/Declining] | |
| 157 | | [Theme 2] | ... | ... | ... | ... | |
| 158 | |
| 159 | **New themes this period:** [Themes that weren't present before] |
| 160 | **Resolved themes:** [Themes that decreased significantly — things you fixed] |
| 161 | |
| 162 | ## Phase 4: Recommendations |
| 163 | |
| 164 | ### For Product Team |
| 165 | |
| 166 | | Priority | Theme | Recommendation | Evidence Strength | |
| 167 | |----------|-------|---------------|-------------------| |
| 168 | | P0 | [Theme] | [Specific action] | [N mentions, M sources, includes churn signals] | |
| 169 | | P1 | [Theme] | [Action] | [Evidence] | |
| 170 | | P2 | [Theme] | [Action] | [Evidence] | |
| 171 | |
| 172 | ### For CS/Support Team |
| 173 | |
| 174 | | Action | Theme | Expected Impact | |
| 175 | |--------|-------|----------------| |
| 176 | | [Create help article for X] | [Theme] | Deflect ~[N] tickets/month | |
| 177 | | [Add onboarding step for Y] | [Theme] | Reduce confusion for new users | |
| 178 | | [Proactive outreach to segment Z] | [Theme] | Prevent churn in at-risk segment | |
| 179 | |
| 180 | ### For Marketing Team |
| 181 | |
| 182 | | Action | Theme | Opportunity | |
| 183 | |--------|-------|------------| |
| 184 | | [Use this proof point in messaging] | [Positive theme] | "[Customer quote ready for marketing]" | |
| 185 | | [Address this objection on website] | [Negative theme] | Counter common concern pre-sale | |
| 186 | | [Build case study around X] | [Positive theme] | [N] customers mentioned this win | |
| 187 | |
| 188 | ## Phase 5: Output Format |
| 189 | |
| 190 | |
| 191 | # Voice of Customer Report — [Period] |
| 192 | Sources analyzed: [list] |
| 193 | Total feedback items: [N] |
| 194 | Date range: [start] — [end] |
| 195 | |
| 196 | |
| 197 | |
| 198 | ## Executive Summary |
| 199 | |
| 200 | [3-5 sentences: What are customers saying? What's the overall sentiment? |
| 201 | What's the single most important thing to act on?] |
| 202 | |
| 203 | |
| 204 | |
| 205 | ## Sentiment Overview |
| 206 | |
| 207 | Positive: [X%] | Neutral: [X%] | Negative: [X%] | Critical: [X%] |
| 208 | |
| 209 | Net Sentiment Score: [calculated — % positive minus % negative] |
| 210 | vs Prior Period: [+/- X points] |
| 211 | |
| 212 | |
| 213 | |
| 214 | ## Top Themes (Ranked by Impact) |
| 215 | |
| 216 | ### 1. [Theme Name] — [Sentiment] — [N mentions] |
| 217 | **Summary:** [2-3 sentences] |
| 218 | **Key quotes:** |
| 219 | > "[Quote]" — [Source] |
| 220 | > "[Quote]" — [Source] |
| 221 | **Recommended action:** [What to do] |
| 222 | **Owner:** [Product / CS / Marketing] |
| 223 | |
| 224 | ### 2. [Theme Name] — ... |
| 225 | |
| 226 | ### 3. [Theme Name] — ... |
| 227 | |
| 228 | [Continue for top 5-8 themes] |
| 229 | |
| 230 | |
| 231 | |
| 232 | ## What Customers Love (Preserve These) |
| 233 | |
| 234 | | Strength | Evidence | Marketing Opportunity | |
| 235 | |----------|---------|----------------------| |
| 236 | | [Feature/experience] | "[Quote]" — [N mentions] | [How to use in messaging] | |
| 237 | |
| 238 | |
| 239 | |
| 240 | ## What Customers Want (Feature Requests) |
| 241 | |
| 242 | | Request | Frequency | Segments | Product Priority | |
| 243 | |---------|-----------|----------|-----------------| |
| 244 | | [Feature] | [N mentions] | [Who wants it] | [P0/P1/P2] | |
| 245 | |
| 246 | |
| 247 | |
| 248 | ## What Causes Pain (Fix These) |
| 249 | |
| 250 | | Pain Point | Severity | Churn Risk | Recommended Fix | |
| 251 | |-----------|----------|------------|----------------| |
| 252 | | [Issue] | [High/Med/Low] | [Yes/No] | [Action] | |
| 253 | |
| 254 | |
| 255 | |
| 256 | ## Trends vs Prior Period |
| 257 | |
| 258 | [What's getting better, what's getting worse, what's new] |
| 259 | |
| 260 | |
| 261 | |
| 262 | ## Team-Specific Action Items |
| 263 | |
| 264 | ### Product Team |
| 265 | 1. [Action] — [Evidence] |
| 266 | |
| 267 | ### CS Team |
| 268 | 1. [Action] — [Evidence] |
| 269 | |
| 270 | ### Marketing Team |
| 271 | 1. [Action] — [Evidence] |
| 272 | |
| 273 | |
| 274 | |
| 275 | ## Appendix: All Themes Detail |
| 276 | |
| 277 | [Full theme cards with all quotes and analysis] |
| 278 | |
| 279 | |
| 280 | Save to `voc-report-[YYYY-MM-DD].md` in the current working directory. |
| 281 | |
| 282 | ## Scheduling |
| 283 | |
| 284 | Run monthly or quarterly: |
| 285 | |
| 286 | |
| 287 | 0 8 1 */3 * python3 run_skill.py voice-of-customer-synthesizer --client <client-name> |
| 288 | |
| 289 | |
| 290 | ## Cost |
| 291 | |
| 292 | | Component | Cost | |
| 293 | |-----------|------| |
| 294 | | Review scraping (via review-site-scraper) | ~$0.50-1.00 | |
| 295 | | Web search (social mentions) | Free | |
| 296 | | All analysis and synthesis | Free (LLM reasoning) | |
| 297 | | **Total** | **Free — $1** | |
| 298 | |
| 299 | ## Tools Required |
| 300 | |
| 301 | **Optional:** `review-site-scraper` for G2/Capterra/Trustpilot reviews |
| 302 | **Optional:** `twitter-mention-tracker` for social mentions |
| 303 | **Optional:** `reddit-post-finder` for community feedback |
| 304 | All analysis is pure LLM reasoning on provided data |
| 305 | |
| 306 | ## Trigger Phrases |
| 307 | |
| 308 | "What are customers saying?" |
| 309 | "Build a VoC report" |
| 310 | "Synthesize our customer feedback" |
| 311 | "Run voice of customer analysis" |
| 312 | "Customer feedback summary for [period]" |
| 313 |