The algorithm runs on every sensor session end and every community report submission. It produces a single 0–100 integer stored in the IP reputation table. The IP Check API returns this value as confidenceLevel.
Evidence from the global honeypot network. Each component is calculated independently, then summed into the raw sensor score. All use logarithmic or square-root scaling to prevent extreme outliers from dominating.
Evidence from community abuse reports. Reports from multiple independent sources carry more weight than volume from a single reporter.
When both sensor and contributor evidence are present, a multiplier rewards cross-source agreement. The multiplier scales with the weaker signal to prevent a single stray report from inflating a high sensor score.
The raw score is unbounded (sensor + contributor can sum well past 100). The saturation curve maps it to 0–100 while preserving ranking order. A critical behavior floor prevents dangerous IPs from scoring low due to limited total evidence.
Confidence levels map to threat levels. These are guidelines, not hard thresholds. Your security posture and false positive tolerance should determine your response thresholds.
Known-benign IPs (CDNs, cloud providers, research scanners) receive a per-source discount multiplier on the final score. Each whitelist source (Googlebot, Censys, Cloudflare, etc.) has its own configurable discount factor between 0.0 and 1.0. The discount is applied after normalization, not inside the scoring algorithm. Users can bypass the discount with the ignoreWhitelist query parameter to get the raw score. The IP Check API returns the discounted score as confidenceLevel by default.