This skill turns scattered ecommerce customer feedback — reviews, post-purchase surveys, support transcripts, return-reason codes, and social DMs — into a single prioritized improvement roadmap. The output is a ranked list of changes with frequency and severity evidence, a transparent priority score, a suggested owner, and a one-line rationale each. Use it when you have a pile of qualitative signal and need to decide what to fix first without it becoming a loudest-voice argument.
DecisionStrongAcceptableWeakSignal sources to include4+ independent sources (reviews, surveys, support, returns, social) cross-checked against each other2-3 sources covering both happy and unhappy pathsA single channel (e.g. only 5-star reviews or only the loudest tickets)Clustering granularityThemes map to one actionable owner + decision; 8-20 clusters for a mid-size storeA handful of broad buckets with sub-tags notedOne mega-bucket ("UX is bad") or 80 hyper-specific clusters nobody can act onPrioritization frameworkRICE or weighted impact/effort/urgency with documented weightsICE or a clean Impact/Effort 2x2Gut-feel ordering with no recorded scoresUrgency scoringTied to objective triggers (revenue at risk, safety, churn, legal, seasonal deadline)Relative high/med/low agreed by 2+ stakeholders"Everything is urgent" or urgency = whoever complained loudestOwner assignmentNamed person/team who controls the fix, accepts the item, has capacityA function (e.g. "Merch") with a follow-up to name a personUnassigned, or "everyone," or assigned to a team that can't actually ship itEvidence thresholdQuantified frequency + severity + at least 2 verbatim quotes per themeFrequency count + one quote"Customers hate this" with no count and no quoteSeverity rubricBlocker / Major / Minor / Cosmetic applied consistently with a written rubricSeverity tagged but rubric loosely appliedSeverity = personal annoyance levelReview cadenceRefreshed on a fixed cadence (e.g. monthly) with deltas vs last cycle trackedRefreshed each planning cycleOne-and-done; never revisitedSample-size handlingSmall clusters flagged as "monitor," not ranked as factsNote added when n is lowActing on n=2 as if it were a trend
Collect & normalize signals. Pull raw feedback from every available channel: reviews (on-site + marketplace), post-purchase NPS/CSAT survey free-text, support chat/email transcripts, return-reason codes, cancellation reasons, and social DMs/comments. Normalize into one table with columns: source, date, verbatim, product/category, customer_value (e.g. LTV tier or order value), and raw_tag. De-duplicate the same customer raising the same issue across channels so you don't double-count.
Cluster into themes. Group normalized rows into actionable themes using a consistent tagging taxonomy (see references/feedback-clustering-guide.md). Each theme should map to a single decision and owner. Separate symptom from root cause — "checkout is slow" and "PayPal button missing" may be the same root cause or two different ones; tag accordingly.
Quantify frequency & severity. For each theme, count distinct mentions (not raw rows) and assign a severity using a written rubric: Blocker (prevents purchase/use, safety, legal), Major (significant friction or churn driver), Minor (annoyance, workaround exists), Cosmetic (polish). Weight mentions by source reliability and customer value where it matters — a blocker reported by 12 high-LTV customers outranks a cosmetic gripe from 40 one-time buyers.
Score priority (impact / effort / urgency). Apply a single documented framework — RICE, ICE, or weighted impact/effort/urgency (see references/prioritization-frameworks.md). Estimate each factor from the data, not vibes: reach from mention frequency and traffic, impact from severity and revenue at risk, effort from engineering/ops sizing, urgency from objective triggers (seasonal deadlines, escalating trend, legal/safety). Show the math so the ranking is auditable.
Assign owners & rationale. Give every ranked item a named owner or team that actually controls the fix and has the capacity to take it. Write a one-line rationale that ties the score to evidence ("Ranked #1: 47 mentions, Major severity, ~$18k/mo returns attributable; low effort config change"). The owner should be able to read the row and start work.
Build the roadmap doc. Assemble the deliverable using references/output-template.md: exec summary, signal-source inventory, theme cluster table, prioritized roadmap table, and a parking-lot/monitor section for low-confidence or low-priority items. Keep verbatim quotes attached so stakeholders feel the customer pain, not just the number.
Set review cadence. Decide how often the roadmap refreshes (monthly is typical for an active store; quarterly minimum). On each refresh, recompute scores, track deltas vs last cycle, promote items out of the monitor list when they cross the evidence threshold, and close out shipped items with a note on whether the underlying complaints dropped.
Store: Lumen & Loft, a mid-size DTC home-lighting brand. ~9,000 orders/quarter, AOV $140. Pulled feedback from on-site reviews (Q1), post-purchase CSAT free-text, Gorgias support tickets, and return-reason codes.
Normalized & clustered themes (distinct mentions, 90-day window):
ThemeMentionsSeverityNotesBulbs not included / "needs separate bulb" surprise61MajorTop return reason; PDP doesn't state bulb type/inclusion clearlyDimmer compatibility unclear38MajorCustomers buy, then find their dimmer flickersShipping damage (glass shades)29BlockerArrives broken; immediate refund/replace costAssembly instructions confusing22MinorWorkaround exists (YouTube), but adds frictionColor temperature looks "yellower" than photos17MinorExpectation mismatch on PDP imageryWishlist/save-for-later missing9CosmeticNice-to-have, low signal
Scoring with RICE (Reach = est. customers affected/quarter; Impact 0.25-3; Confidence 0-1; Effort in person-weeks). Score = Reach × Impact × Confidence ÷ Effort.
ItemReachImpactConfEffortRICEAdd bulb-inclusion + bulb-type module to PDP1,40020.91(1400×2×0.9)/1 = 2,520Dimmer compatibility checker on PDP90020.83(900×2×0.8)/3 = 480Upgrade glass-shade packaging60030.92(600×3×0.9)/2 = 810Rewrite + illustrate assembly guide50010.82(500×1×0.8)/2 = 200Add accurate color-temp swatches to PDP40010.71(400×1×0.7)/1 = 280Wishlist feature3000.50.64(300×0.5×0.6)/4 = 22.5
Resulting ranked roadmap:
RankItemScoreOwnerRationale1PDP bulb-inclusion module2,520Merch / PDP teamHighest reach, low effort, directly cuts the #1 return reason2Glass-shade packaging upgrade810Ops / FulfillmentBlocker severity; broken arrivals are pure refund cost3Dimmer compatibility checker480Product/EngHigh-friction pre-purchase confusion; medium effort4Color-temp swatches280Merch / PhotoCheap expectation-setting fix; reduces "looks wrong" returns5Assembly guide rewrite200CX / ContentReal but lower-impact; workaround exists
Wishlist drops to the monitor list (n=9, low score). Note the bulb-inclusion fix and color-temp swatches together attack the return-rate problem from two angles.
Store: PaceForge, a running-apparel store. ~25,000 orders/quarter, AOV $65. Sources: Trustpilot + on-site reviews, NPS survey free-text, Instagram DMs, and return-reason codes. Here we use weighted impact/effort/urgency because a seasonal deadline (spring marathon season) makes urgency a first-class factor.
Weights agreed by team: Impact 50%, Urgency 30%, Effort 20% (inverted — low effort scores high). Each factor scored 1-5. Score = (Impact×0.5) + (Urgency×0.3) + (EffortInverse×0.2), all on a 5-point scale.
Clustered themes (distinct mentions, 90-day):
ThemeMentionsSeveritySizing runs small / inconsistent across styles188MajorReturns label costs $7 (customer-paid) frustration74MajorOut-of-stock on popular sizes during launches53MajorSweat-wicking claim doesn't match experience31MinorCheckout rejects some Apple Pay cards19BlockerApp push notifications too frequent14Cosmetic
Scoring (5-point factors; EffortInv = 6 − effort):
ItemImpactUrgencyEffortEffortInvWeighted ScorePer-style size guide + "true to size" review tags5433(5×.5)+(4×.3)+(3×.2)= 4.3Fix Apple Pay card rejection4524(4×.5)+(5×.3)+(4×.2)= 4.3Free returns for loyalty members4442(4×.5)+(4×.3)+(2×.2)= 3.6Size-level back-in-stock alerts4542(4×.5)+(5×.3)+(2×.2)= 3.9Clarify sweat-wicking copy + add tech spec2224(2×.5)+(2×.3)+(4×.2)= 2.4Notification frequency controls2133(2×.5)+(1×.3)+(3×.2)= 1.9
Resulting ranked roadmap (tie at 4.3 broken by severity — Apple Pay is a Blocker):
RankItemScoreOwnerRationale1Fix Apple Pay card rejection4.3Eng / PaymentsBlocker losing orders silently; max urgency before marathon-season traffic2Per-style size guide + fit tags4.3Merch + CX188 mentions, top return driver; urgent before peak; medium effort3Size-level back-in-stock alerts3.9Eng / GrowthCaptures demand lost at launch; high urgency for spring drops4Free returns for loyalty members3.6Finance + CXReal frustration but cost/effort high; pilot to one tier first5Sweat-wicking copy fix2.4ContentLow-cost expectation fix; do opportunistically
Notification controls go to the monitor list. Note the Apple Pay item had only 19 mentions but ranks #1 — severity and urgency, not raw count, carried it. This is exactly why frequency alone is a weak prioritizer.
references/output-template.md — Fill-in template for the finished roadmap: exec summary, signal inventory, theme cluster table, prioritized roadmap table, and parking-lot/monitor section.references/prioritization-frameworks.md — Formulas, numeric examples, and when-to-use guidance for RICE, ICE, Impact/Effort 2x2, weighted urgency scoring, and a Kano must-have/delighter lens.references/feedback-clustering-guide.md — How to normalize and cluster raw feedback: de-duping, tagging taxonomy, symptom vs root cause, source/value weighting, severity rubric, and small-sample handling.assets/quality-checklist.md — A pre-publish checklist across signal coverage, clustering, quantification, prioritization rigor, evidence, ownership, clarity, and cadence.