// diagnose
Review Mining
Use when the user wants to turn public reviews - G2, Capterra, app stores, Reddit threads, support tickets - into customer research: what people complain about and praise, where a competitor is weak, why people switched, what features they ask for, and the words happy customers use. Also use when the user mentions review mining, voice of customer, G2 reviews, competitor reviews, "what do people say about X", review analysis, or wants copy that uses the buyer's own language. Counts reviews rather than quotes, reads sentiment from star ratings only, and says how much of the text its coding reached.
npx skills add sarojkjha/aaj-marketing-skills --skill review-miningClaude Code
/plugin marketplace add sarojkjha/aaj-marketing-skills/plugin install aaj-marketing-skills@aajOpenAI Codex
codex plugin marketplace add sarojkjha/aaj-marketing-skillscodex plugin add aaj-marketing-skills@aajClaude or ChatGPT — no install
Add this as a custom connector:
https://aaj-engines-mcp.sarojkjha10.workers.dev/mcp// when to use it
Use when the user wants to turn public reviews - G2, Capterra, app stores, Reddit threads, support tickets - into customer research: what people complain about and praise, where a competitor is weak, why people switched, what features they ask for, and the words happy customers use. Also use when the user mentions review mining, voice of customer, G2 reviews, competitor reviews, "what do people say about X", review analysis, or wants copy that uses the buyer's own language. Counts reviews rather than quotes, reads sentiment from star ratings only, and says how much of the text its coding reached.
// what you give
Reviews of your product and one or more competitors, each with the product name, the star rating, the text and optionally the source, the date and your own theme coding
// what you get
Per product, each theme's share of reviews with a 95% interval and its praise and complaint counts; the opportunities where a rival is complained about and you are not; the theme to fix first; every switching sentence and feature ask; the phrases happy reviewers use; coverage of the coding; and a verdict
Engine spec
// decision it supports
What do buyers praise and complain about in our reviews and our rivals', and where can we claim an advantage with proof?
// inputs
Reviews of your product and one or more competitors, each with the product name, the star rating, the text and optionally the source, the date and your own theme coding
// output
Per product, each theme's share of reviews with a 95% interval and its praise and complaint counts; the opportunities where a rival is complained about and you are not; the theme to fix first; every switching sentence and feature ask; the phrases happy reviewers use; coverage of the coding; and a verdict
// acts or analyzes
Analyzes onlyMakes no network calls, writes no files and changes nothing in your tools.
// where your information goes
| How you run it | Where your inputs go |
|---|---|
| Skill installed in your agent, or the local MCP server | The engine runs on your machine and AAJ receives nothing. Your AI agent still sends what you give it to its model provider (Anthropic, OpenAI and so on), under your own account's terms. |
| Hosted MCP server | Your agent's model provider, as above, plus AAJ's server on Cloudflare, which receives the engine inputs over HTTPS, runs them in memory and keeps no copy. Cloudflare keeps error logs (no inputs) for up to 7 days. |
No engine needs customer names, emails or other personal data; leave them out.
// limitations
- Reviews over-represent the delighted and the furious, so theme shares describe reviewers, not the market. It flags a single source; use two before generalising.
- Sentiment comes from the star rating only. A review with no rating is a mention, and a complaint inside a 4- or 5-star review counts as praise for that theme.
- The default word list covers twelve software themes and matches words, not meaning. Below 60% coverage or in a specialist category, add a lexicon or code by hand.
- Under 10 reviews of a product the intervals are too wide to compare. An opportunity is a lead to prove, not a claim the engine has checked.
// review before acting
// setup
npx skills add sarojkjha/aaj-marketing-skills --skill review-mininghttps://aaj-engines-mcp.sarojkjha10.workers.dev/mcpAgents listed: Claude Code, Cursor, OpenAI Codex, Windsurf, Cline. Tested and recorded: Claude Code.
Review Mining
Your competitors' customers have already written your research. Every G2 page, app-store listing and Reddit thread about your category holds hundreds of people saying, unprompted, what annoys them, what they pay for, why they left one product for another and what they wish existed. Most startups read five of these and remember the angry one. This skill counts all of them.
The engine codes each review into themes, counts how many reviews raise each theme (never how many times), splits praise from complaint using the star rating only, and compares your product with each rival theme by theme. It also pulls out every sentence where someone switched products or asked for a feature, and the phrases your happy reviewers use, which are better headline material than anything a brainstorm produces.
When to use
The user wants to know what buyers in a category care about, where a competitor is weak, or what language to use, and has (or can collect) public reviews. Also before writing a comparison page, a battlecard or a positioning statement, as evidence for the claims in them.
Do not use it for your own interview notes; customer-interview-synthesis codes those with severity.
Do not use it to size demand; reviews are written by the unusually pleased and the unusually angry.
Before you start
- Read the brand/product context first. Pull your product name, the competitor set and the
buyer from
.agents/product-marketing.md. If none exists, ask for the product and two or three rivals. - Collect reviews, 30 or more per product if you can. Copy them from the review site with the star rating, the source and the date. Keep the full text; do not summarise.
- Decide who codes. The engine's word list covers twelve themes common to software reviews and
reports how many reviews it failed to code. For a category with its own vocabulary (clinics,
schools, logistics), add themes with
lexiconor code by hand withthemeson each review. - Respect the source's terms. Copy by hand or export what the site allows; do not scrape where the terms forbid it, and do not republish a reviewer's text without the site's permission.
Method
Count reviews, not quotes. A theme raised three times in one review is one review.
Sentiment is the star rating. Four or five stars is praise, one or two is a complaint, three is mixed, no rating is a mention only. The engine never infers tone from words, because "the support is unbelievable" goes both ways.
Compare like with like. Each product's theme shares carry a 95% Wilson interval; with fewer than 10 reviews of a product (an engine rule) the intervals are too wide to compare it with another.
Opportunity rule. A theme is an opportunity when a rival's complaint share is at least 20% and yours is at least 10 points lower, with 10 or more reviews each (engine rules, stated so you can argue with them). An opportunity is a claim you can make with proof, not a claim the engine makes for you.
Fix first. Your own theme with the most complaints, needing at least two.
Switching sentences and feature asks are found by phrase ("switched from", "moved to", "wish", "no way to"), kept whole, and tagged with the product and the rating.
Buyer language. Two- and three-word phrases that appear in at least two of your praise reviews, and separately in at least two rival complaints. The first list is headline material; the second is the pain your comparison page should name.
Workflow
Step 1 - Paste the reviews with product, rating, source and date. Run the engine.
Step 2 - Read the coverage line. Below 60% coded (engine rule) the word list did not fit the
category: add lexicon entries from the uncoded reviews, or code by hand, and re-run.
Step 3 - Spot-check ten lexicon-coded reviews. A word list matches words, not meaning.
Step 4 - Take the opportunities into comparison-pages and objection-handling, each with
the rival quote the engine attached as the evidence behind the claim.
Step 5 - Take fix-first to the product team with its quotes, and the feature asks grouped by theme.
Step 6 - Take the praise phrases into positioning-statement and aaj-copywriting. Test them
against your current headline with the Five-Second Message Test.
Run the tool
node resources/review-miner.js --demo
node resources/review-miner.js '{"product":"Fieldnote","reviews":[{"product":"Fieldnote","rating":5,"text":"Easy to use."}]}'
node resources/review-miner.js --help
run({ product, reviews, lexicon }) returns per-product theme tables with intervals, opportunities,
fix-first, switching sentences, feature asks, buyer language, coding coverage, findings and a verdict.
Deterministic, offline, no dependencies.
Present the result
- The verdict and the coverage line (how many reviews were coded by hand, by the word list, and not at all).
- Your product: top themes with share, interval and praise/complaint split; fix-first with a quote.
- Each rival: the same table, and the opportunities with the rival quote.
- Switching sentences, grouped by direction (to you, away from you, between rivals).
- Feature asks grouped by theme.
- Buyer language, both lists, with the review count behind each phrase.
- What to do next, in the order of the workflow.
Guardrails & common mistakes
- Never quote a share from fewer than 10 reviews. Say "3 of 7 mention pricing", not "43%".
- Never read tone from the text. If the rating is missing, it is a mention.
- Never publish a reviewer's words as your testimonial. A G2 review is G2's and the reviewer's;
use it as research, and get consent before it appears in your marketing (
claims-and-proof-check). - Reviews are not the market. They over-represent the delighted and the furious, and review sites differ in who writes. Two sources minimum before generalising; the engine flags one source.
- The word list is a start, not a finding. Code by hand for anything you will put in a deck.
- A rival's complaint is an opportunity only if you are better there, provably. Claim it with the evidence, or do not claim it.
Related AAJ resources
- Turning the top pattern into a persona: https://aajconsult.com/tools/persona-builder
- Putting rival weaknesses into a battlecard with proof: https://aajconsult.com/tools/battlecard-builder
- Keeping the competitor facts current: https://aajconsult.com/templates/competitor-research-grid
- Where reviews fit in a research plan: https://aajconsult.com/playbooks/market-research-playbook
Related skills
customer-interview-synthesis- the same counting discipline for your own interviewspositioning-statement- where the praise phrases gocomparison-pagesandobjection-handling- where the opportunities go, with their quotesaaj-copywriting- scoring copy that uses the buyer's languagewin-loss-analysis- the switching story from your own closed deals
// faq
// install
npx skills add sarojkjha/aaj-marketing-skills --skill review-mining// worked example
Get the worked example for Review Mining
One email. The filled-in config, the output, and how to read it.
// human in the loop
Need a human in the loop?
AAJ builds the strategies, tools, and playbooks these skills are made of — with engagements for growth-stage and enterprise teams.
