From customer-insight
Use when customer reviews, support tickets, app store feedback, or other review-like text must be converted into STP analysis through a review scoring workflow upstream and statistical scripts downstream.
How this skill is triggered — by the user, by Claude, or both
Slash command
/customer-insight:review-mining-stpThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill converts review text into `Segmentation -> Targeting -> Positioning -> Strategy` outputs through a strict workflow contract.
agents/openai.yamlreferences/01-router-and-gates.mdreferences/02-segmentation.mdreferences/03-targeting.mdreferences/04-positioning.mdreferences/05-output-contract-and-quality-rules.mdreferences/06-end-to-end-examples.mdreferences/07-traceability-evidence-matrix.mdreferences/08-verification-scenarios.mdrequirements.txtscripts/run_review_mining_stp.pyscripts/stp_runner/__init__.pyscripts/stp_runner/constants.pyscripts/stp_runner/io.pyscripts/stp_runner/positioning.pyscripts/stp_runner/reporting.pyscripts/stp_runner/router.pyscripts/stp_runner/segmentation.pyscripts/stp_runner/targeting.pyscripts/stp_runner/validation.pyThis skill converts review text into Segmentation -> Targeting -> Positioning -> Strategy outputs through a strict workflow contract.
review scoring workflow: reads raw reviews, infers scored items, assigns theory tags, and preserves verbatim review text.scripts: accept scored artifacts only and perform statistical analysis plus report assembly.The review scoring workflow is an upstream workflow boundary, not a requirement to use any specific API, service, or orchestration tool.
The scripts are tools, not the main workflow. They do not read raw reviews, decide how to score them, or define the scoring process.
Use this skill when:
Do not use this skill when:
Attribute extraction and theory annotation should draw from these four theory families. Additional families may be added when the corpus clearly warrants it, but every attribute must map to at least one family.
product_positioning)Subtheories:
attributes — physical or verifiable product properties (e.g. ANSI certification, lens material, weight)functions — what the product does in use (e.g. anti-fog, side coverage, UV blocking)benefits — perceived value or outcome the customer gains (e.g. confidence, style, value for money)usage_context_service_experience — context of use, service touchpoints, post-purchase experiencemaslow)Subtheories:
physiological — sensory comfort, physical ease, visual clarity during usesafety — protection from harm, certification compliance, structural durabilitybelongingness — fitting into a community, sports group, or professional identityesteem — status signalling, brand prestige, professional image displayself_actualization — enabling personal performance goals, empowerment, achievementpurchase_motivation)Subtheories:
functional — driven by performance, fit, ergonomics, multi-scenario utilitysecurity — driven by safety standards, brand trust, durability assurance, after-sales protectionrelational — driven by customer service quality, gifting intent, repeat purchase loyaltywom_motivation)Subtheories:
altruistic — sharing to genuinely help other buyers (tips, warnings, balanced reviews)social_identity — sharing to signal group membership (sports community, professional role)self_enhancement — sharing to display expertise or superior knowledgeemotional_expression — sharing driven by strong positive or negative emotionWhen extracting attributes from the full corpus:
theory_annotations listing all applicable family + subtheory pairs.attribute_extraction_summary.theory_gap.The discovery pass is a dedicated read-through of the full corpus before any scoring begins. Its sole output is the frozen attribute catalog. Execute it in four stages:
Read every review in the corpus. For each review, note any concern, praise, complaint, or observation the reviewer expresses about the product or their experience. Do not score yet. Collect these as raw signals in a working list. Signals can be short phrases or paraphrases — they do not need to be final attribute names yet.
Examples of raw signals:
Group raw signals that represent the same underlying customer concern or product dimension. Each cluster becomes one candidate attribute. Apply these rules:
mention_count.For each candidate attribute, assign theory_annotations by working through all four theory families in order:
product_positioning — ask: does this attribute describe a physical property (attributes), a functional capability (functions), a perceived benefit or outcome (benefits), or a usage context / service touchpoint (usage_context_service_experience)? Assign all that apply.
maslow — ask: which need does concern about this attribute reflect?
physiological: physical sensation, visual comfort, weight, pressure on facesafety: protection level, certification, structural durability, after-sales securitybelongingness: fitting into a community, professional group, sport teamesteem: brand status, professional image, visible identityself_actualization: enabling personal goals, performance achievement, empowermentpurchase_motivation — ask: what drives someone to care about this at the point of purchase?
functional: performance, fit, ergonomics, multi-use utilitysecurity: standards compliance, brand trust, warranty, durability assurancerelational: customer service, gifting intent, loyalty and repeat purchasewom_motivation — ask: why would a reviewer write about this attribute?
altruistic: to warn or help other buyerssocial_identity: to signal membership in a group (sport, profession, military)self_enhancement: to display expertise or superior product knowledgeemotional_expression: because strong feeling (delight or frustration) compels them to writeAn attribute may carry multiple families and multiple subtheories. There is no maximum. However, every attribute must carry at least one family, and the full catalog must cover all four families.
Before scoring begins:
target_minimum (at least 30 when corpus supports it).attribute_key to each attribute (snake_case, e.g. anti_fog_performance, hinge_durability). Keys must not change after freezing.plain_language_definition for each attribute — one sentence describing what the attribute measures and what a high vs low signal looks like in a review.example_review_id and example_quote per attribute from the raw corpus. The quote must be verbatim.attribute_catalog.csv and review_foundation.json -> dimension_catalog before any scoring row is written.No attribute may be added, removed, or renamed after the catalog is frozen. If a gap is found during scoring, record it in attribute_extraction_summary.shortfall_reason and complete scoring with the frozen catalog as-is.
The review scoring workflow is the main process. It is responsible for:
review_text so later report evidence can quote the real source textTheme names and theme count are not fixed. They come from the corpus, not from a hardcoded taxonomy.
This skill uses two distinct scoring axes applied to different units of analysis:
Applied per review (or per customer). Measures how prominently the attribute features in a given review.
0: the attribute is absent from the review — no relevant content at all1–3: the attribute is mentioned slightly or indirectly4: the review is neutral, ambiguous, or tangential on this attribute5–6: the review clearly and explicitly addresses this attribute7: the review strongly emphasises this attribute as a central concernDependency rule: when salience = 0, the attribute is treated as absent for this review and must not be included in any per-review analysis. Only reviews with salience ≥ 1 are counted as mentioning the attribute.
Applied per product (aggregated across all reviews for that product). Measures the overall quality or performance of the product on this attribute as judged by its reviewers.
0: extremely poor — near-universal negative evaluation1–3: below average — more negative than positive mentions4: below average leaning negative — complaints outweigh praise5: mixed or neutral — roughly equal positive and negative signals6–7: above average — more positive than negative, with some complaints8–9: strong — predominantly positive, only minor issues noted10: exceptional — near-universal praise with no notable complaintsThis score is a product-level aggregate, not a per-review score. It is computed or estimated after all reviews for a product have been read, and represents the overall quality positioning of the product on that attribute.
Column naming:
<attribute_key>_salience<attribute_key>_qualityIf upstream information is incomplete, the review scoring workflow may produce MissingDataOutput.
The scripts start only after scoring is already complete. Their responsibilities are:
The scripts do not:
If prerequisites are missing, the scripts return MissingPrerequisiteOutput.
review_scoring_table.csvRequired columns:
review_idunit_idbrandproductreview_textAll inferred attributes must appear as salience columns (Axis A, per review):
<attribute_key>_salienceEach salience column must follow these rules:
0–70 means the attribute is absent from this reviewOptional metadata columns may include:
profile_*channelratingThe table is per-review. If no stable person-level identity exists, unit_id may default to review_id.
product_quality_scorecard.csvNew artifact replacing the per-review valence axis. Required columns:
productbrandn_reviews — number of reviews used to compute the scores<attribute_key>_quality column per attribute (Axis B, 0–10)This is the product × attribute quality matrix. Each cell is the product-level quality score for that attribute, estimated from all reviews of that product.
review_foundation.jsonRequired keys for the scripts:
dimension_catalogtheme_mappingattribute_extraction_summarypeople_insightsproduct_triggerscontext_scenariossystem1_system2_splitmaslow_keywordsOptional audit metadata:
scoring_rubricEach dimension_catalog item must include:
columnlabelthemeattribute_groupsalience_columnquality_columnstat_rolesplain_language_definitiontheory_annotationsattribute_group must use one of:
attribute_functionbenefit_usebrand_personalitybrand_imagetheory_annotations must map each scored item to at least one theory family plus subtheory. The four default families for this skill are:
product_positioning (subtheories: attributes, functions, benefits, usage_context_service_experience)maslow (subtheories: physiological, safety, belongingness, esteem, self_actualization)purchase_motivation (subtheories: functional, security, relational)wom_motivation (subtheories: altruistic, social_identity, self_enhancement, emotional_expression)Additional theory families may be used when the corpus clearly calls for them. Any added family must be documented in review_foundation.json with its name, rationale, and subtheory list.
attribute_extraction_summary must record:
target_minimumactual_countshortfall_reasontheory_gap — list any of the four theory families with zero attribute coverageattribute_catalog.csvRequired columns:
attribute_keylabelthemeattribute_groupdefinitionsource_typemention_countsalience_columnquality_columnexample_review_idexample_quotetheory_families — comma-separated list of applicable theory families from the four permittedtheory_subtheories — comma-separated list of applicable subtheoriesThe catalog is the script-facing bridge from upstream attribute extraction into downstream statistics and report evidence.
analysis_context.json
analysis_goalcomparison_axesscope_limitsbrands.jsonideal_point.jsonfull: starts from canonical scored artifacts and emits the three statistical intermediatesfull canonical input requires review_scoring_table.csv + product_quality_scorecard.csv + review_foundation.json + attribute_catalog.csv + analysis_context.json + brands.json + ideal_point.jsonsegmentation: uses review_foundation.json + segmentation_variables.csvtargeting: uses segment_profiles.json + targeting_dataset.csvpositioning: uses positioning_scorecard.csv + brands.json + ideal_point.jsoncustom: runs only requested downstream modulesGenerated intermediate artifacts in full mode:
segmentation_variables.csvtargeting_dataset.csvpositioning_scorecard.csvsalience columns (Axis A) across reviews to identify customer concern patternsfactor_analysis -> K-means>5% guardrailcluster_threshold, reruns_performed, and final_kSystem 1 / System 2, Maslow, cluster share, and consumer-portrait outputsdimension_catalog.stat_rolesanalysis_context.comparison_axes to override the default comparison axessalience columns (Axis A) as customer-side driversquality columns (Axis B) as product-side performance indicatorsANOVA / regression for continuous outcomeschi-square / logistic regression for binary outcomespairwise_comparison_table when ANOVA significance justifies post-hoc comparisonpriority_segments, secondary_segments, and deprioritized_segmentsstat_roles containing positioningquality columns (Axis B) from product_quality_scorecard.csv as the primary product positioning featuressalience columns (Axis A) to weight attributes by customer concern levelfactor_analysisMDS when similarity-based input is explicitly requestedperceptual_map_figure + perceptual_map_coordinate_table + perceptual_map_method + perceptual_map_interpretation as the public positioning-map contractMDSdynamic_scorecard_summary with distance, gap, reliability, and validity sectionsThe final report must contain an Attribute Extraction Summary that shows:
target_minimumactual_countshortfall_reasontheory_gap — any of the four theory families with zero coverageEach major report section must contain:
What this section is doingAxis modeling summary — specify whether Axis A (salience), Axis B (quality), or both are usedStatistical methods usedTheories used — must name specific families and subtheories from the four permittedTheme coverage summaryTheory coverage summaryPlain-language explanationEvidence quotesEach major report section must also contain a non-empty findings list.
Each finding must contain:
finding_idfinding_statementbusiness_implicationaxes_used — salience, quality, or bothmethods_usedtheories_usedthemes_usedsubtheories_usedreproducibilitystatistical_resultsplain_language_explanationevidence_quotesEach reproducibility package must contain:
input_artifactsinput_columnsfilterspreprocessinganalysis_stepsdecision_ruleEach statistical_results package must contain:
method_familytest_or_modelsample_sizestatisticdegrees_of_freedomp_valueeffect_sizecoefficientconfidence_intervalresult_directionaxis_breakdownEvidence-quote rules:
review_scoring_table.csv.review_textreview_idThe goal is to make the report readable for non-specialists while keeping every key claim traceable to real review text and reproducible from the emitted statistical artifacts.
The final report should visibly show:
not_evidenced in the current datasetproduct as the product field name.salience 0–7.quality 0–10.valence as a column name — it is replaced by quality in this skill.review_text for evidence quoting.product_positioning, maslow, purchase_motivation, wom_motivation. Additional families may be introduced when the corpus clearly warrants it, provided they are documented with name, rationale, and subtheory list in review_foundation.json.python -m pip install -r requirements.txtpython scripts/run_review_mining_stp.py --run-mode <mode> --input-dir <artifacts> --output-dir <o>python scripts/validate_review_mining_stp.py --run-mode <mode> --output-dir <o>npx claudepluginhub timlai666/skills --plugin customer-insightGuides collaborative design exploration before implementation: explores context, asks clarifying questions, proposes approaches, and writes a design doc for user approval.
Creates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.
Synthesizes the current conversation into a structured spec (PRD) and publishes it to the project issue tracker with a ready-for-agent label, without interviewing the user.