← Velvet Rack

Content Moderation Policy

Owner: Poor Dude Holdings LLC Applies to: listings, show episodes, and seller profiles on Velvet Rack

Velvet Rack carries user-generated content: sellers write listing titles and descriptions, upload photos of their own clothing, and record video for shows. This document sets out what is not allowed, how it gets reported, and what happens next. It is referenced by the Google Play submission because Play requires a moderation policy and an in-app reporting mechanism for apps carrying user content.

What is not allowed

Category Covers
Counterfeit or misrepresented goods Replica designer items, or a piece described as something it is not — wrong brand, wrong condition, wrong size to induce a sale
Prohibited items Anything illegal to sell, unsafe, recalled, or outside a clothing resale marketplace: weapons, drugs, animal products restricted by law, counterfeit currency, medical devices
Sexual or explicit content Nudity or sexual content in listing photos or show video. Modelled clothing is fine; this is about explicit material
Harassment and hate Abuse, threats, or content targeting a person or group
Scams and fraud Attempts to move payment off-platform, listings for goods the seller does not have, or fabricated provenance
Spam Repetitive listings, irrelevant content, or bulk posting to flood the feed

Moving payment off-platform deserves specific mention: it is the most common marketplace scam, it strips the buyer of every protection the platform provides, and it is treated as fraud rather than as a policy technicality.

How content gets reported

Any signed-in user can report a listing, an episode or a seller from inside the app — "Report this listing" on a listing, "Report this episode" on a show. The reporter picks a reason, optionally adds detail, and the report enters the moderation queue.

Implementation: packages/convex/convex/reports.ts.

How reports are handled

The queue (reports.queue) is admin-only and ordered oldest first, so the report that has waited longest is answered first. Reviewers work it from Account & data → Open the report queue in the app, which shows how long each report has been waiting in days rather than as a timestamp — the commitment below is measured in days, so that is the number a reviewer needs at a glance.

A reviewer closes a report as actioned or dismissed, with a written reason. Taking content down is part of that same call, so a decision cannot be recorded and then not carried out. A written reason is required on any takedown: appeals are answered from this record, and "actioned" on its own tells an appellant nothing.

Target response times. Reports are reviewed within 3 business days. Content that is reported for sexual content, harassment, or an immediate safety risk is prioritised ahead of the queue order.

What "taken down" means

Reported listings and episodes are archived, not deleted. Orders and show product tags reference those rows, so deleting one would break the record of sales that already happened. An archived listing disappears from the feed, from search, and from its public URL.

Suspending a seller's account is deliberately not a side effect of closing a report. Locking someone out of a marketplace mid-sale has consequences for their buyers as well, so it is a separate, deliberate act.

Appeals

A seller whose content is taken down may appeal by writing to the support address in packages/shared/src/brand.ts. Appeals are reviewed by someone other than the original reviewer where the team size allows it. The review trail (content_reports.reviewedBy and resolution) is retained after the content itself is gone, so an appeal can be answered from the record rather than from memory.

Proactive measures

Stated plainly, because a policy that overclaims is worse than one that does not:

Automated scanning is the obvious next investment, and its absence should be weighed when deciding how large the marketplace can grow before the review burden outpaces the people doing it.

Related