How to moderate product reviews and questions
Call the API when a review or a question is submitted, with surface: review, and act on one of three answers: publish it, hold it for a person, or refuse it. Nearly everything under a product is somebody asking about the size or saying it arrived on time, and the free checks settle that in about a millisecond, so the customer waits for nothing. The model only reads what those checks leave open. What lands in review waits in a queue, in your dashboard or through the API, and a signed webhook tells your shop when somebody approves it.
Links to a competitor in product questions
The questions under a product are read by people about to buy, which is exactly why they attract links to a cheaper copy. ToxicFilter does not refuse a link for being a link, because one link in a sentence is how customers answer each other. What it reports as spam is the shape of promotion: a link through a shortener that hides where it goes, a message that opens with a link, several links carried by a few words. The reviews template refuses those. If you want no outside links at all, put the domains in your own word list.
Reviews written for a free product
On the review surface, a review that says it was written in exchange for something ("received this product for free", "in exchange for a review") scores 0.70 on spam, and the reviews template refuses it. A review that reads like the shop writing about itself ("our shop", "use code") needs two of those tells and is held for a person. Copies of the same review posted again and again, even reworded, are counted between calls, per account and per project.
Order numbers, card numbers and phones
Customers paste what they think will help: the order number, the phone to call them on, sometimes the card that was charged twice. The reviews template holds personal data for a person and refuses a card. Cards are validated by their checksum and a real issuer prefix, so a sixteen-digit order reference is not mistaken for one. With redact, the answer carries the same text with the phone, the email, the IBAN or the card masked, so a useful question can still be published.
Checking the photos customers upload
Send each picture with POST /v1/image, by URL or as the file itself, before it reaches your storage. The model reads every picture, which is why a photo costs more than a text check. The words visible in the photo are run through the same free text checks as a review, so a phone number or a link written on a piece of card is found too. A picture already refused here is recognised again by its fingerprint without paying the model a second time.
Choosing the thresholds for your shop
Start from the reviews template, which holds and refuses spam, disguised text and personal data sooner than the shipped lines, and holds gibberish for a person without ever refusing it. Then try any change as a second policy running beside the one in force: both verdicts are computed on your own reviews and questions, only one acts, and the dashboard shows where they disagree before you switch.