Features
Risk Scoring
How Janus scores each verification from 0 (human) to 100 (bot).
Every verification produces a risk score from 0 (human) to 100 (bot). The score is built from multiple independent signals, processed through the built-in engine, then through any registered plugins.
Base score: 50
Every verification starts at 50 (neutral). Signals add or subtract from this base. The final score is clamped to 0-100.
Signal categories
Default thresholds
Prop
Type
All thresholds are configurable per site in the dashboard under Site Settings → Risk Thresholds.
Extending with plugins
After the built-in engine runs, plugins execute in priority order. Each plugin can adjust the score by up to ±50 points and add custom anomalies.
const myPlugin: RiskPlugin = {
name: 'ip-blocklist',
priority: 10,
async evaluate(ctx) {
const blocked = await db.isBlocked(ctx.ipAddress);
return blocked
? { scoreAdjustment: 40, anomalies: ['ip_blocklisted'] }
: { scoreAdjustment: 0 };
},
};