genuine_score in [0, 1] — higher means more likely a genuine, live capture — and applies one rule:
The score is calibrated
Raw model probabilities shift when models are retrained. SpoofSense remaps every model’s output so that the decision boundary always sits at 0.5: a threshold you tune today keeps meaning the same thing after a model update, and thresholds are comparable across products. Model internals (architecture, raw per-class probabilities) are deliberately not exposed.Where the threshold comes from
Highest priority wins:- Per-request override —
threshold(orthresholdson unified) in the request body. - Organization default — set per product in the console (Dashboard → Settings).
- Platform default —
0.5.
Tuning guidance
- Start at the default
0.5and only move after measuring on your own traffic. - For verification sessions, thresholds are fixed server-side at session creation — the client can never loosen them.
- On
/v1/unified_detection, the overalldecisionis"real"only if every product’s check passes its own threshold; the per-product outcomes are inchecks.
Unified response