01 — THE CONTROL ROOM FOR YOUR CONTENTevery message inspected, annotated, classified

Content
enters.
Bad actors
don't.

Your moderators stop wading through spam. They only see what the pipeline could not decide on its own.

[ JOIN THE WAITLIST ]

ModShield is a content moderation API that scores every post, signup and message sent to your community through eight detection engines — ML, rules, trust and identity reputation — and returns an explainable verdict in under 100 ms: allow, review or block.

EXPLAINABLE CONTENT MODERATION API-FIRST · FAIL-OPEN · SHADOW MODE
DETECTION PIPELINE · LIVE TRACE
INCOMING MESSAGE1/4 · lang=en
"Great post! Check my profile for more tips — link in bio 🔗"
RAW INPUT· · ·
TOKENIZE· · ·
ML CLASSIFY· · ·
RULES ENGINE· · ·
TRUST ENGINE· · ·
VERDICT· · ·
02 — THREE POSSIBLE VERDICTSevery decision is explained, not just handed down

ALLOW

Clean content, trusted author, on-topic. Passes without friction.
"Muy buen artículo — explicación clarísima de los pasos de migración. Me lo guardo."
score
7
confidence
0.93
action
allow

REVIEW

Ambiguous signals. Held for a moderator before publishing.
"Great post! Check my profile for more tips — link in bio 🔗"
SELF_PROMOTIONFIRST_POST_LINK
score
55
confidence
0.41
action
send_to_review

BLOCK

High-confidence spam. Rejected before it reaches the community.
"Je vends des comptes vérifiés, offre limitée, contactez-moi en DM"
COMMERCE_OFFERURGENCY_TRIGGEROFFSITE_REDIRECT
score
94
confidence
0.96
action
block
03 — WHO IT'S FOR

Built for the people who clean up after the spammers.

ModShield is aimed at teams that already moderate by hand and can no longer keep up — not at sites that want a black box making decisions for them.

COMMUNITY FORUMS

Volunteer moderators spend their evenings deleting the same account-selling posts, and a wave of signups at 3am goes unanswered until morning.

Flarum, Discourse, phpBB — connector or REST API
SAAS WITH USER-GENERATED CONTENT

Comments, profiles and contact forms are an open door, and a keyword blocklist blocks your real customers as often as the spammers.

REST API, one call per event
TEAMS UNDER A COMPLIANCE DUTY

You have to justify a removal to a user, a client or a regulator — and "the filter said so" is not an answer.

Machine-readable reasons, full audit trail, shadow mode
04 — 8 DETECTION ENGINES IN SERIESfail-open — an outage degrades the score, never the traffic

Every message runs a full chain before a decision.

The engines run in sequence and enrich each other. Each stage can add reasons. The final decision reflects the whole chain, not a single signal.

01
FEATURE EXTRACTION
Structural & normalized-text features merged onto the event before scoring.
40+ features
02
ML CLASSIFIER
fastText multilingual spam model with keyword-heuristic stub fallback. Fail-open.
multilingual fastText
03
TOPIC FIT
Per-community relevance — off-topic content, unusual posting profile, unseen domains.
per-community
04
RULES ENGINE
Tenant-authored rules applied after ML. Gives communities direct policy control.
tenant-defined
05
TRUST ENGINE
Per-actor approval, spam, and false-positive history weighted over time.
decays over time
06
IDENTITY REPUTATION
Cross-tenant HMAC-hashed identifier and IP directory. Corroborated, then decayed.
cross-tenant
07
SCORING ENGINE
Combines ML + rules + trust + reputation into a single numeric score.
weighted combine
08
DECISION ENGINE
Maps score against SitePolicy thresholds. Emits verdict, action, severity, and reasons.
per-site policy
Private beta open — reserve your spot.JOIN THE WAITLIST →
05 — ONE ENDPOINT. ONE EXPLAINABLE RESPONSE.

POST.
Get a verdict.
Know why.

One API call returns not just a verdict — but the score breakdown and every reason that contributed to the decision. Your moderation team can audit, override, and train from day one.

AUTHENTICATION
API key per site
FORMAT
JSON, REST
LATENCY TARGET
< 100ms p95
ON ML FAILURE
Fail-open, reason logged
REQUEST
POST /api/v1/check HTTP/1.1
Host: api.modshield.net
X-Api-Key: ms_live_Kx9vTmL4pRqN8hZ2
Content-Type: application/json
{
"event_id": "post-842",
"platform": "flarum",
"event_type": "post.created",
"actor": { "external_id": "usr_4f2a9c" },
"content": { "body": "Je vends des comptes vérifiés,
offre limitée, contactez-moi en DM" }
}
RESPONSE
HTTP/1.1 200 OK
Content-Type: application/json
{
"decision_id": "dec_9f31c2",
"score": 94,
"computed_verdict": "block",
"effective_action": "block",
"assessment": "violating",
"severity": "high",
"confidence": 0.96,
"shadow": false,
"reasons": [
"COMMERCE_OFFER",
"OFFSITE_REDIRECT",
"URGENCY_TRIGGER",
"VELOCITY_BURST"
],
"model_version": "fasttext-multilingual-v1"
}

06 — WHAT MATTERS

< 100ms
p95 latency target
8
Engines in series on every message
100%
Decisions with machine-readable reasons
0
Traffic blocked when the ML model is down

The latency figure is the engineering target we build and test against during the private beta, measured on our own infrastructure — not a contractual SLA. Measured production numbers will be published once beta volume is representative. The other three are properties of the design: eight engines, a reason attached to every decision, and no traffic blocked when the model is unavailable.

07 — FAIL-OPEN BY DESIGN

An outage never blocks your traffic.

If the ML model is unavailable, ModShield degrades the quality of the score — never availability. Every degradation is recorded in reasonsJson with the exact reason.

ML CLASSIFIERstub fallback · score=0.5DOWN
TOPIC FITtopic_fit=0.71OK
RULES ENGINE1 rule matchedOK
TRUST ENGINEtrust_score=+0.2OK
DECISION ENGINEreason: ml_unavailableDEGRADED
VERDICTREVIEW (degraded)

08 — QUESTIONS

What happens to content ModShield flags?

Nothing you haven't asked for. Each site has a mode: in shadow mode decisions are recorded but never enforced, so you can compare them against what your moderators would have done. When you switch to enforcement, the verdict drives the action your connector takes.

How much will it cost?

Private beta access is free, and no figure is published yet: the tiers are being sized against real beta usage rather than guessed in advance. Pricing will be announced before general availability, waitlist members first, and nobody is charged for anything they used during the beta.

Do you store my users' personal data?

Emails, usernames, phone numbers and link domains are hashed with HMAC-SHA256 before storage, using a secret pepper held by your instance, and reputation is built on those hashes rather than the raw values. IP addresses are handled separately: they are never stored on individual events, and an address is only recorded when it earns reputation of its own or arrives from a blocklist you or a public feed supplied.

Which languages does detection support?

The shipped model is a fastText classifier trained on English, French and Chinese examples rather than an English-only ruleset. Coverage is strongest in those three languages; elsewhere the reputation, velocity and rules signals still apply, and you can add rules for language-specific patterns.

Where does the sub-100ms figure come from?

It is the engineering target the API is built and load-tested against, measured on our own infrastructure, not a contractual SLA and not a number taken from customer production traffic — there is none yet. Your own client measures the round-trip, and the dashboard reports observed model latency for your traffic, so you can check the claim rather than take it — and we publish measured p95 figures once beta volume makes them meaningful.

Which platforms does ModShield work with?

An official Flarum connector is in private beta. Any other platform — Discourse, phpBB, a custom forum or any site with user-generated content — integrates through the REST API: one POST call per piece of content, one JSON response with the verdict, score and reasons.

What happens if the ML model goes down?

Nothing blocking: ModShield is fail-open by design. If the model is unavailable, the other engines — rules, reputation, velocity — keep working. Score quality degrades, availability never does, and every degradation is logged with its exact reason.

How long does integration take?

One endpoint to call. With the Flarum connector, minutes: a composer install and an API key. Through the REST API, plan about a day to wire your events — posts, signups, messages — and test everything in shadow mode before enforcing anything.

How do I get access?

ModShield is in private beta. Join the waitlist with your email — telling us your platform and what you need to protect helps us prioritize your access. We open access progressively, first come first served.

Can I try it without affecting my community?

Yes — that's what shadow mode is for. Send real traffic, get real decisions, enforce nothing. The reports show you exactly what would have been blocked.

Protect your community. Explain every decision.

PRIVATE BETA — JOIN THE WAITLIST
YOUR PLATFORM — OPTIONAL
WHAT NEEDS PROTECTING? — OPTIONAL

We store your email address to contact you about ModShield access, and nothing else. No newsletter, no third parties, unsubscribe by replying. Privacy policy

Private beta access is free. Pricing is published before general availability, and waitlist members hear it first.

SEE THE FAQ →
DEPLOY IN MINUTES
# 1. Install the Flarum connector
composer require modshield/flarum-connector
# 2. Add your site API key
php flarum modshield:configure \
--key=ms_live_Kx9vTmL4pRqN8hZ2
# 3. Every post is now checked.

Connectors are in private beta — API access ships first, connectors follow.