Observer

What Observer does.

Observer reads every message in your community, flags what needs a human, and gives your team the context to act — with every action logged. Here’s each part of the system.

Plugin & ingestion

The sensors that feed Observer. A self-installed Minecraft plugin and a centrally-hosted Discord bot, both built around the same EventEnvelope schema.

  • +Minecraft plugin (paper-api 1.21+, Folia-supported, Apache 2.0)
  • +Discord bot (we run it, you invite it)
  • +WebSocket transport · per-server auth · auto-reconnect
ingest
Discord survival.example.gg · 6 channels 412/min
Discord creative.example.gg · 4 channels 187/min
Minecraft survival-main 1240/min
[discord] #general gm gm
[discord] #off-topic anyone got tips for the boss
[minecraft] events.example.gg wb wb wb
[discord] #tech-help joined the game
[discord] #lfg ty :)
[minecraft] creative.example.gg haha
[discord] #off-topic lol
[discord] #voice-chat @server you up
[minecraft] survival-main.example.gg ping
[discord] #lfg any good builds
[discord] #general thanks!
[minecraft] minigames.example.gg see u tomorrow
[discord] #voice-chat wait what
[discord] #tech-help ?
[minecraft] events.example.gg lmaoooo
[discord] #general gn
12,847 messages last hour · classifier processed 100% ↓ 14 surfaced
/moderation/queue 14 in queue
live
K
@kraken99 Discord, #general
AI screening · 2m
@everyone come join my server, free diamonds
severe spam conf 98%
FJ
@flame_jr Discord, #general
AI screening · 38m
lmao you're so dumb get out
moderate harassment conf 74%
BD
@bored_dude Discord, #off-topic
AI screening · 1h
this game sucks and the devs are lazy honestly
mild incivility conf 62%

The moderation queue

The product's main surface. Every flagged event lands here, sorted by severity, ready for a human.

  • +Filter by severity, category, source, age
  • +Inline context: message + surrounding thread
  • +One-click actions: ack, mute, ban, escalate

Audit log

Every state change recorded, immutably. Actor, action, target, before, after, timestamp. The compliance evidence layer underneath everything else.

  • +Append-only · content-hashed IDs
  • +Reversals fork as nested entries
  • +Default 90d retention · tunable per-org
/audit append-only
A user amelia decision_executed ban 22:14
OB system Observer actor_score_recomputed +53 19:31
CL bot classifier run_completed batch 18:14

classify request · Haiku 4.5 · 87ms

lmao you're so dumb get out, no one wants you here
moderate harassment toxicity conf 74%

reasoning → Personal attack directed at a T1 new account in response to a low-stakes question. Not a generic slur; targeted incivility. Below auto-action threshold; held for human review.

AI screening

Every incoming event is classified with severity, categories, and confidence. Haiku for the bulk of the queue, Sonnet for context, Opus for edge cases.

  • +Severity: mild · moderate · severe
  • +Categories: spam, harassment, scams, doxxing, child-safety, self-harm crisis, custom
  • +Reasoning trace per classification · feeds appeals retraining

Long-form pattern detection

Detects threats that span messages, days, or accounts: grooming, raid coordination, multi-account scams, slow-burn harassment. Long-form reads the whole conversation, not single messages.

  • +Cross-account fingerprinting (creation cluster, IP, structural similarity)
  • +Configurable look-back window (default 5 days)
  • +Auto-escalates flagged patterns to senior-reviewer queue

@ada_92@minecraft_pop · 5 days

11 messages
A
ada_92 day 3
you sound young, how old r u? im 16
A
ada_92 day 4
don't tell anyone we talk lol
A
ada_92 day 5
lets switch to snapchat, more private

Long-form pattern detected

Grooming-pattern across 11 messages, 5 days: age inquiry · isolation · platform pivot.

A

@ada_92

account 4d old · 5th acct (fingerprint match)

ActorRiskScore

88 high
0 · calm 25 · watch 50 · elevated 75 · high
  • long-form pattern grooming + 40
  • fingerprint matches 4 banned + 16
  • DM ratio 94% (high) + 14
  • flag count 1 in 30d + 18

Trust & ActorRiskScore

A live 0–100 risk score per actor, recomputed hourly, with a transparent component breakdown. Pair with severity thresholds for auto-action policies.

  • +Components: flag count, age, DM ratio, fingerprint, list matches
  • +Component weights tunable per-org
  • +Auto-action thresholds at severity × score grid

Transparency & compliance

DSA Article 24 reports, COPPA-age tooling, UK OSA risk-assessment templates, per-user DSR workflows. Generated from your audit log, not assembled by hand.

  • +Automated transparency report generation
  • +User-self-serve DSR (access + erasure with grace period)
  • +Auditor read-only view across audit log + decisions
/reports/transparency/2026-Q2 DSA Article 24

Notices received

1,284

+18% vs Q1

Median resolution

4min

SLA: <24h

Auto vs manual

89%

auto · 11% human-reviewed

Appeals · reversal rate

14/47

29.8% reversed

hash: 0x8c2d…7af1 download · PDF
/appeals/r-…8c2d in review
FJ

user · 22:16 · appeal opened

"was a princess bride quote in #off-topic"

OB

system · 22:16 · context pulled

3 messages before, 3 after, + #off-topic last hour for tone.

A

senior · 22:19 · resolved · reversal

"yeah this was a movie quote. reversing."

SLA: 3min · trust restored · false-positive context logged

Appeals workflow

User-facing appeal portal. Senior-reviewer queue with SLA tracking. Audit-log forks per appeal. Reversals feed back as active-learning signal into the classifier.

  • +Public appeal portal (your URL, your brand)
  • +Reviewer SLA dashboards
  • +Active learning: every reversal improves the model

Custom rules engine

Deterministic rules alongside the LLM. For the cases where you know exactly what you want banned and don't want to wait for a model to learn it.

  • +Regex + structural matchers
  • +List-based catch terms (per-channel scoping)
  • +Runs in parallel with AI screening · highest severity wins
/rules/custom.yaml 12 active
rules:
  - name: ip-grab-bait
    match:
      regex: "grabify\\.link|iplogger\\.com"
    severity: severe
    action: ban

  - name: staff-impersonation
    match:
      structural: { username_contains: ["mod", "admin"] }
      and: { account_age_lt: "24h" }
    severity: severe
    action: escalate

  - name: channel-only-server-link
    match:
      list: server-invite-domains
      channels: ["#general", "#announcements"]
    severity: moderate
    action: delete

Studio

For studios running multiple communities. Multi-server roll-up, team roles, SSO/SAML, audit federation, priority support, and BYO Anthropic API key.

  • +Multiple communities under one org
  • +WorkOS SSO/SAML · team roles · audit federation
  • +BYO Anthropic key (skip credit markup)
studio.example.gg 4 communities

community 1

survival.example.gg

14 in queue · 4 severe

community 2

creative.example.gg

3 in queue · 0 severe

community 3

events.example.gg

1 in queue · 0 severe

community 4

discord.example.gg

7 in queue · 2 severe

SSO: workos · roles: 3 · members: 8 federated audit · /audit/org

Bring Observer to your community.

The private beta is free, with full access while we refine Observer with a small group of operators. We’ll help you get set up on the onboarding call.