Helpful vote or "was this helpful?" mechanism is displayed
Why it matters
Helpful-vote mechanisms surface the reviews with the highest signal-to-noise ratio, so shoppers reach useful content faster and conversion climbs. Without votes, long-form detailed reviews sit next to one-line "love it" posts with no way to distinguish quality; community ranking is the cheapest moderation layer that exists. Vote data also feeds the "Most Helpful" sort (WCAG-adjacent discoverability) and trains future review-ranking models.
Severity rationale
Low because reviews remain readable without votes, but the sort-by-helpful path and community quality ranking are unavailable.
Remediation
Add a helpful_votes integer column to the reviews table, expose a POST route at api/reviews/[id]/helpful that increments the counter (rate-limited per user), and render a components/HelpfulVote.tsx button beneath each review displaying the current count:
const handleHelpful = async () => {
await fetch(`/api/reviews/${reviewId}/helpful`, { method: 'POST' })
setVotes(v => v + 1)
}
Block duplicate votes from the same user by storing a (user_id, review_id) join row.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Reviews & Social Proof Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
Taxons
History
- 2026-04-18·v1.0.0·Initial import from ecommerce-reviews·automated