How scoring works
Botardo assigns every form session a score from 0 to 100. Learn what drives that number.
Every form submission gets a score from 0 (definitely human) to 100 (definitely a bot). Here's how Botardo arrives at that number.
Signal layers
Botardo evaluates sessions across three independent signal layers. Each layer produces a sub-score; the final score is a weighted combination.
Behavioral baseline
Mouse movement, keystroke cadence, scroll patterns, and focus timing are compared against a per-device behavioral model. Deviations from natural human interaction push the score up.
Network signals
IP reputation, data-center ranges, known proxy exits, Tor relays, and hosting ASNs. Most legitimate users submit from residential or mobile addresses.
Environment fingerprint
Browser feature availability, canvas rendering, WebGL renderer strings, and font enumeration. Headless browsers leave a distinct fingerprint even when they spoof common user-agent strings.
Score thresholds
Botardo doesn't make the block/allow decision for you — that's your call based on your risk tolerance. These are the defaults most customers use:
| Score range | Suggested action | Typical use |
|---|---|---|
| 0–40 | Allow | No friction |
| 41–70 | Challenge | CAPTCHA or honeypot |
| 71–100 | Block | Silently drop the submission |
**Tip:** Start with logging-only mode (`data-mode="passive"`) for a week before enabling blocking. You'll learn your baseline false-positive rate before it affects real users.
Confidence levels
Alongside the score, Botardo returns a confidence field: "high", "medium", or "low". Confidence reflects how much signal was available for this session.
A score of 80 with "low" confidence is less actionable than 80 with "high" confidence. Consider loosening thresholds or routing to a challenge step when confidence is low.