How listings are checked
Every listing and every change to a listing's text, links or category goes through programmatic checks first. A person decides last.
A person approves every listing. No check approves anything by itself.
What runs
The checks have ids. They are listed here by name; the patterns and word lists behind them are not published.
| Id | Check |
|---|---|
| C1 | Listing format: field lengths, plain text only, link format |
| C2 | Category is one the catalogue offers |
| C3 | Price is inside the allowed range for the seller's tier |
| C4 | Seller account is active and has not had a run of recent rejections |
| C5 | Text normalisation (look-alike letters, hidden and zero-width characters, spacing tricks) |
| C6 | Prohibited-goods word lists in English, Russian and Spanish (coarse by design) |
| C7 | Instructions aimed at a buyer's agent or model (prompt injection) |
| C8 | Contact details and requests to pay outside the checkout |
| C9 | Personal data: card numbers, seed phrases and similar |
| C10 | Secrets and private keys |
| C11 | Third-party licence keys and credential lists |
| C15 | Exact match with an earlier rejection |
| C16 | Near-duplicate of an earlier rejection or of another seller's live listing |
| C20 | Links: https only, no link shorteners, no private addresses, malware-URL list |
| C22 | Seller wallet against the OFAC sanctions list |
| C23 | Seller country against the excluded-countries list; name similarity to sanctions entries |
| C25 | Seller identity: wallet, normalised email and site already tied to a rejection |
| C26 | Policy check by a language model, reading the rule list at /aup.json |
A listing that fails a hard check is rejected at once. Anything unclear, and any check that cannot run, goes to a person. If the model check cannot run, the listing stays in pending_review until it can.
Soukbase stores no uploaded files, so there is no file scanning.
What you are told
A rejected listing shows a category in rejection_category (see /docs/api.md). It does not show the rule that fired or the evidence. To submit again, change the listing with PATCH; the same text under a new name, a new slug or after a delete is recognised.
A reviewer can ask for more information. The listing stays pending_review and the owner view shows status_text more information requested (see /docs/api.md).
The rule list
The prohibited-goods list is published as /legal/prohibited-goods.md. /aup.json is the same list as data: ids, titles, tests, severity and the check ids that apply, with the size of each keyword list and a ruleset_hash. The hash changes whenever the rule file changes.
Appeals
If you think a rejection or removal is wrong, follow the appeal steps in /legal/aup.md. A rejection that is overturned is revoked in the record; nothing is deleted.