Use Case · Trust

Chat moderation on the Software Lifecycle Cloud

Chat moderation on KERNSTACK intercepts a message before it fans out: a function scores it — sentiment-multilingual-v1 costs 2 credits per 1,000 tokens, and custom endpoints cover stricter classifiers — clean messages pass through the websocket route, and flagged messages are quarantined in a table where a moderator’s decision, and any appeal, are recorded as workflow steps.

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.