The engineering bottleneck with assembled stacks
Community managers moderate in the rear-view mirror: the message fans out instantly, the harm is screenshotted, and moderation means deleting copies while apologising. Pre-publication scoring exists in vendor dashboards, but the quarantine queue, the appeals, and the evidence trail end up rebuilt in the product anyway — usually as an afterthought with no record of why anything was decided.
Architecture on the Software Lifecycle Cloud
The websocket route (functions only, by design) receives the message; before fanout, the handler calls the classifier and writes the outcome. Scores below the threshold deliver immediately, scores above it park the message in a quarantine table visible to moderators, and the sender sees a held state rather than a silent disappearance. Released messages fan out from the same handler, so ordering stays sane.
Held, not vanished
The user experience of good moderation is a message that is visibly under review, with an appeal that reaches a person. The quarantine table is that experience’s backend: each row is the message, its scores, its state, and later its appeal outcome. Community norms get tuned against that record — which phrases the model over-flags, which it misses — instead of against vibes in a vendor console.
- Scoring costs 2 credits per 1,000 tokens with sentiment-multilingual-v1; most chat lines cost a fraction of a credit
- Quarantined messages are rows moderators work, with the releasing decision recorded beside the score
- Repeat-offender views are keyed reads over the same table — no separate trust-and-safety database
Latency honesty
Pre-fanout scoring adds a model call to the message path. For ordinary chat that is tens of milliseconds of function plus inference time; for a high-velocity firehose it is a real budget to measure. The architecture makes the trade consciously: messages wait a blink so the community does not pay in screenshots.
Frequently asked questions
sentiment-multilingual-v1 at 2 credits per 1,000 tokens covers tone in many languages. Communities with specific policy classifiers declare a custom inference endpoint and call it from the same handler; the quarantine and appeal machinery is unchanged.
Whatever your client shows for the held state — the backend returns the quarantine state rather than a fanout confirmation. Being visibly held, with an appeal path, is measurably fairer-feeling than silent deletion, and the record supports the appeal.
Yes. Releasing is a workflow decision on the quarantine row: the message fans out, the decision and reviewer are recorded, and the sender’s appeal history stays attached to the same table for the next decision.
Related capabilities, architectures, and comparisons
Ship your stack on the Software Lifecycle Cloud.
Closed preview on dedicated European infrastructure. Bring a repository or start from a blueprint.