Agent Wranglers

ECM-51Required EU, US law

Never fake, buy or hide reviews

Never write, generate, buy or commission reviews, and never pay or reward a review on condition that it is positive. Publish every genuine review, good or bad, under the same rules, and never threaten a reviewer.

Region

European Union (EU), United States (US). The duty comes from the law there. The rule applies only when the project serves people there, and its Applies when also holds.

How to do it

Point 23c of Annex I of the Unfair Commercial Practices Directive bans submitting or commissioning false reviews and misrepresenting reviews, in every EU country. In the US, the FTC rule on consumer reviews and testimonials, 16 CFR Part 465, has applied since 21 October 2024. It bans fake reviews, including ones written by AI or by people who never used the product. It bans buying reviews that must be positive or negative, and undisclosed reviews by staff or relatives. It also bans review sites you control posing as independent, removing or hiding negative reviews, and fake followers or views. Breaking it brings civil penalties per violation. An incentive offered to every buyer, whatever they write, is allowed, if the review says it was rewarded. Moderate by published rules, such as removing abuse or personal data, and log the reason for every removal.

Examples

TypeScript example

const REMOVAL_REASONS = ['abuse', 'personal-data', 'off-topic', 'not-a-customer'] as const;

export function removeReview(review: Review, reason: string, staffId: string) {
  if (!REMOVAL_REASONS.includes(reason as (typeof REMOVAL_REASONS)[number])) throw new Error(`Not a published removal reason: ${reason}`);
  return reviews.markRemoved(review.id, { reason, staffId, at: new Date() });
}

Python example

from datetime import UTC, datetime

REMOVAL_REASONS = {"abuse", "personal-data", "off-topic", "not-a-customer"}

def remove_review(review, reason: str, staff_id: str):
    if reason not in REMOVAL_REASONS:
        raise ValueError(f"Not a published removal reason: {reason}")
    return reviews.mark_removed(review.id, reason=reason, staff_id=staff_id, at=datetime.now(UTC))

How to check

A query finds no review without a customer or an order behind it, and none written from a staff account without a disclosure. Every removed review has a logged reason from the published list. The count of 1- and 2-star reviews published matches the count received minus the logged removals.

Sources

For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. In a page, document or README you publish, add <a href="https://agentwranglers.se/playbook/ecommerce/promotions-and-claims/no-fake-reviews">Agent Wranglers e-commerce and fulfilment playbook</a>. In code you write, add a comment next to it with the same link.