shipwithjev

Blog / Recipes / FIG. 78

Screen Product Reviews Before They Publish

A review moderation workflow with Jev: screen every product review before it publishes, filter fakes and policy breaks, send unsure ones to a human.

A product review can be spam, a competitor, a customer service complaint that belongs in a ticket, or a perfectly legitimate one-star review you are legally and ethically obliged to keep. A review moderation workflow sorts those before anything goes live. Jev, TypeSafe AI's decision model, makes it cheap enough to screen every review instead of spot-checking.

Why review integrity matters for conversion, and how it fits with catalog and listing work, is covered in Jev for ecommerce. This page is the setup.

What it costs, roughly

There's no public receipt for review screening specifically, so borrow from the nearest one: 500 emails classified for 3.5 cents, as reported (build). Reviews are usually shorter than emails. Even with four questions per review, a shop getting a few hundred reviews a day is looking at pocket change, though your actual bill depends on current pricing at docs.typesafe.ai.

On the integration side, a community Magento 2 module already asks Jev typed questions about orders, customers, products, and reviews, storing answers and confidence in the admin (build). If you're on Magento, start there.

The recipe

  1. Hold new reviews in a pending state. Most platforms support moderation queues. Turn it on so reviews wait for a verdict before publishing. If your platform can't hold reviews, run the check right after publish and unpublish on failure, which is worse but workable.

  2. Write a four-question battery. Keep each one narrow:

    • "Is this review about the product itself, rather than shipping, support, or another product? YES / NO / UNCLEAR"
    • "Does this review contain spam, links, promotional content, or text unrelated to any product? YES / NO / UNCLEAR"
    • "Does this review contain personal data such as a phone number, address, or full name of a staff member? YES / NO / UNCLEAR"
    • "Does this review contain hate, harassment, or explicit content? YES / NO / UNCLEAR"

    Notice what's missing: "Is this review negative?" Negative reviews are not a moderation category. Suppressing honest criticism is a trust problem and, in many places, a legal one (not legal advice; check the rules where you sell).

  3. Run the check on submission.

# pseudocode, not real API syntax
on review_submitted(r):
    text    = r.title + "\n" + r.body
    verdict = {q.name: jev.choose(q.text, text, ["YES", "NO", "UNCLEAR"]) for q in REVIEW_QUESTIONS}
    decide(r, verdict)

Per ecosystem documentation, the model is typesafe-ai/jev via the Vercel AI Gateway with per-choice probabilities.

  1. Map verdicts to three outcomes.

    • Publish: all checks confidently clean.
    • Hold for human: any UNCLEAR, any low-confidence answer, or a personal-data flag.
    • Reject with a reason: confident spam or abuse, with a notice to the reviewer where your platform supports it.

    Off-topic reviews (shipping complaints, support issues) get routed to your support queue rather than deleted. They're signal, just filed in the wrong place.

  2. Review the held queue daily. It should be small. If it isn't, one of your questions is too vague.

The fake review filter problem

Here's the honest objection: "Can this catch fake reviews?" Partially. Text-only screening catches the obvious ones: templated praise, off-topic promotion, reviews that describe a different product. It can't see that ten reviews came from the same IP or that the reviewer never bought the item.

So treat the Jev check as one layer. Pair it with the signals your platform already has: verified purchase, account age, review velocity per product. A reasonable question to add is "Does this review describe specific details of using the product? YES / NO / UNCLEAR", since vague generic praise is a common fake-review pattern. It's a signal for the held queue, not grounds for rejection on its own.

Moderation rules that keep you out of trouble

Rejection is reversible, but make it visible. Log every rejection with the verdict and confidence so you can audit and restore. Reviewers who feel censored tell people.

No lone-verdict account actions. Banning a customer or flagging an order as fraud is far heavier than rejecting a review. Those need a human.

Same pattern, other surfaces. Q&A sections, seller listings, and community posts use the same machinery; AI content moderation covers the broader stack.

Frequently asked questions

Can Jev detect fake product reviews?

It can flag text patterns common in fake reviews, like generic praise or off-topic promotion, but it can't see purchase history or account signals. Combine its verdicts with verified-purchase and velocity checks, and route suspects to a human.

Should I auto-reject negative reviews?

No. Negative reviews are not a moderation category, and suppressing them damages trust and may break consumer protection rules where you sell (not legal advice). Screen for spam, abuse, and privacy issues instead.

How much does it cost to screen every review?

Builder-reported classification costs run to fractions of a cent per item, such as 500 emails for 3.5 cents as reported. Check Jev for ecommerce for other store workloads priced the same way.

What about reviews with images?

This recipe covers text. Image screening is a different question; see AI content moderation and TypeSafe AI's docs for what's currently supported.

Numbers throughout are as reported by the build authors, not verified by shipwithjev. Code-shaped examples are pseudocode; the official docs live at docs.typesafe.ai.