Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Mine public reviews, app stores, and forums for unmet needs, competitor weaknesses, and switching triggers — with quoted evidence. Use when you want customer voice without waiting on interviews.
.claude/skills/deanpeters-voice-of-customer-miner/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 18% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 21% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 59% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 99% | 0% |
| case-20 | ✗→✓ | ▲ Improved | 42% | 0% |
Mine public customer voice — review sites, app stores, Reddit and practitioner forums, community boards — for unmet needs, competitor weaknesses, and switching triggers: search plan → source sweep → verbatim capture → need themes → so what → next-step options. This bridges competitive intelligence and discovery: it delivers customers' exact words without waiting on an interview cycle. But public voice skews toward the angry and the vocal, so every theme it surfaces is a hypothesis to validate, never a verdict — the output's last stop is always a real conversation.
Works best with: the product(s) or competitor(s) to mine — yours, a rival's, or a set — and the decision this should inform. Also useful: a theme to focus on (onboarding, pricing, reliability) if you have one; otherwise the sweep runs open.
Input supplied inline with the invocation — text after the skill name, a pasted context dump, or an appended ARGUMENTS: line — counts as answers already given. Use it against the question budget; don't re-ask.
Arriving empty-handed? That works too. The skill opens with at most 3 questions (whose voice, what decision, theme or open sweep) and proceeds on labeled assumptions if they go unanswered.
Example invocation: Mine voice-of-customer for [Competitor A] and [Competitor B], focus on onboarding — informs whether our Q1 bet is a migration tool.
autonomous-investigationcontract — question budget of 3, search-plan gate, Fact/Inference/Assumption labels, Just Enough Mode, stable schema, 4-option Final Step. Discipline: OSINT's review-and-community layer (see intelligence-collection-disciplines).
data where my team works" is the underlying need. Theming by need is the same solution-free discipline as JTBD and painstorming — and it's what makes themes portable into discovery.
persona language: the exact words customers use become interview probes and positioning copy. Never fabricate quotes, ratings, review counts, or reviewer roles.
stores over-represent update anger. Note the bias per source — public voice is evidence with a known skew, not ground truth.
vivid. Say which; one articulate ranter is not a theme.
discovery-interview-prep instead; you need your users' voice on a private area → mine your own tickets and research; statistical confidence required → this is qualitative theming.
representative verbatims, how observation will be separated from interpretation. Continue unless revised.
practitioner forums, community boards, social threads — capturing short real quotes with URLs and noting each source's bias.
~~~markdown
Products mined: | Decision supported: | Sources swept: | As-of date:
For each of the top 3-5 themes:
Each bullet: label, confidence, URL where relevant. ~~~
A copy/paste fill-in version of this schema, with quality checks, lives in template.md.
discovery-interview-prep)battle-card-builder)opportunity-solution-tree)Accept 1, 2, 3, 4, 1 and 2, Verbose Mode, or a custom path.
A theme done right (fictional product, illustrative verbatims):
> ### Theme: getting historical data out at contract end > - Frequency: recurring — 9 reviews across two sites plus a forum thread, past 6 months > - Verbatim: "export took three support tickets and still dropped custom fields" — G2-style review, URL] > - Verbatim: "we stayed a year longer than we wanted because leaving meant losing our audit trail" — forum thread, URL] > - Who says it: ops managers at 50-200-person firms — Inference (reviewer titles where shown) > - Reading: exit friction is functioning as involuntary retention — Inference; a rival with > effortless migration turns this from their moat into their churn event.
Notice the theme name contains no feature ("export tool") — it names the need, so discovery can explore solutions the reviews never imagined.
See examples/sample.md for a complete worked mining run (fictional FSM-software market) where frequency honesty caps a vivid theme at low confidence and each source's bias becomes a reading instruction. examples/sample-industrial.md shows the thin-voice case — what honest mining looks like when the market barely posts reviews.
hands your roadmap to the loudest UI complaint.
real excerpt at a real URL — this domain's do-not-invent list exists because fabricated customer quotes are both tempting and toxic.
discipline: recurring, concentrated, or isolated — say which.
the satisfied-and-silent majority never posts. Bias notes per source are mandatory.
"assumptions to validate in real interviews" section is the bridge to discovery — use it.
autonomous-investigation (Workflow) — the governing protocolintelligence-collection-disciplines (Component) — OSINT review-mining sources and bias tradecraftjobs-to-be-done (Component) — the solution-free framing themes should land indiscovery-interview-prep (Interactive) — where the validation happensopportunity-solution-tree (Interactive) — structures the opportunity hypothesesbattle-card-builder (Workflow) — consumes the weak pointsmarket-intelligence/voice-of-customer-miner-prompt.md in thehttps://github.com/deanpeters/product-manager-prompts repo.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 30,152 | 18,791 | -38% | 1 | 1 | 0% | 4,580 | 5,391 | +18% | 0 | 0 | — |
case-02 | pass→pass | 31,925 | 23,286 | -27% | 1 | 1 | 0% | 4,705 | 5,872 | +25% | 0 | 0 | — |
case-03 | fail→pass | 28,370 | 51,437 | +81% | 1 | 1 | 0% | 4,522 | 5,489 | +21% | 0 | 0 | — |
case-04 | fail→fail | 3,818 | 23,481 | +515% | 1 | 1 | 0% | 658 | 6,253 | +850% | 0 | 0 | — |
case-05 | pass→pass | 9,227 | 8,611 | -7% | 1 | 1 | 0% | 1,577 | 3,580 | +127% | 0 | 0 | — |
case-06 | fail→fail | 10,637 | 20,447 | +92% | 1 | 1 | 0% | 1,831 | 5,429 | +197% | 0 | 0 | — |
case-07 | fail→fail | 15,822 | 8,627 | -45% | 1 | 1 | 0% | 2,695 | 3,482 | +29% | 0 | 0 | — |
case-08 | fail→fail | 7,782 | 12,984 | +67% | 1 | 1 | 0% | 1,323 | 4,321 | +227% | 0 | 0 | — |
case-09 | fail→pass | 19,050 | 15,399 | -19% | 1 | 1 | 0% | 2,900 | 4,614 | +59% | 0 | 0 | — |
case-10 | pass→pass | 10,748 | 8,243 | -23% | 1 | 1 | 0% | 1,739 | 3,396 | +95% | 0 | 0 | — |
case-11 | fail→pass | 9,841 | 6,779 | -31% | 1 | 1 | 0% | 1,604 | 3,193 | +99% | 0 | 0 | — |
case-20 | fail→pass | 16,139 | 9,689 | -40% | 1 | 1 | 0% | 2,650 | 3,769 | +42% | 0 | 0 | — |
case-12 | pass→pass | 14,065 | 5,881 | -58% | 1 | 1 | 0% | 2,353 | 3,035 | +29% | 0 | 0 | — |
case-13 | pass→pass | 11,626 | 23,445 | +102% | 1 | 1 | 0% | 2,147 | 6,534 | +204% | 0 | 0 | — |
case-14 | pass→pass | 15,171 | 15,131 | -0% | 1 | 1 | 0% | 2,364 | 4,409 | +87% | 0 | 0 | — |
case-15 | pass→pass | 12,071 | 10,995 | -9% | 1 | 1 | 0% | 1,900 | 3,867 | +104% | 0 | 0 | — |
case-16 | fail→pass | 9,832 | 3,399 | -65% | 1 | 1 | 0% | 1,635 | 2,768 | +69% | 0 | 0 | — |
case-17 | pass→pass | 5,165 | 2,814 | -46% | 1 | 1 | 0% | 827 | 2,518 | +204% | 0 | 0 | — |
case-18 | fail→fail | 7,991 | 7,912 | -1% | 1 | 1 | 0% | 1,386 | 3,420 | +147% | 0 | 0 | — |
case-19 | fail→pass | 11,817 | 11,039 | -7% | 1 | 1 | 0% | 1,903 | 3,929 | +106% | 0 | 0 | — |
case-21 | fail→pass | 10,177 | 8,770 | -14% | 1 | 1 | 0% | 1,572 | 3,515 | +124% | 0 | 0 | — |
case-22 | fail→pass | 18,386 | 9,294 | -49% | 1 | 1 | 0% | 3,744 | 3,573 | -5% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +41 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.