← Quick tools · Markdown: /docs/trust-methodology.md

Trust risk signals: method and measured error rates

Signals only; a site with low observed risk can still be malicious. Not a safety certification.

Applies to the quick checks url-trust, site-check (its trust part), site-verdict, verdict-card and domain-lookalike, output format trust/2. None of them ever answers "safe" or "legit". They report:

Signals used

What we do NOT check

Evaluation data

Results file: results-2026-10-30.json (harness eval/trust/run.mjs, created 2026-10-30). Snapshot recorded 2026-10-30T07:01 to 2026-10-30T14:41 UTC; every target fetched once through the same guarded fetchers the paid tools use, at most one HTTP request per second, then replayed offline.

Targets by bucket: phish_certpl 300 (reachable 39); phish_certpl_fresh3d 237 (reachable 62); top_1k 150 (reachable 107); long_tail_100k_1m 100 (reachable 71); mid_1k_100k 150 (reachable 100).

Known-bad sites that were unreachable or answered an HTTP error at recording time (taken down) are reported separately and never counted as correct detections. Known-good sites that could not be fetched (API hosts, CDNs, bot walls) are also excluded from the rates.

Thresholds and confidence bands were fitted on one half of the reachable targets (seeded split 130, fit n=180) and every rate below is measured on the other, held-out half (n=199).

Measured error rates (held-out half)

ToolThresholds (elevated / high)False positives: good flagged elevated or highFalse negatives: live bad rated low_observed_riskPrecision of "elevated or high"RecallRated unknown (of reachable targets; unreachable ones are excluded above)
url-trust9 / 446.6% (95% CI 3.5%-12.0%; 9/137)38.7% (95% CI 27.6%-51.1%; 24/62)80.8% (95% CI 67.5%-89.6%; 38/47)61.3% (95% CI 48.9%-72.4%; 38/62)0.0% (95% CI 0.0%-1.9%; 0/199)
site-verdict36 / 635.5% (95% CI 2.7%-10.9%; 7/127)37.0% (95% CI 24.5%-51.4%; 17/46)80.6% (95% CI 65.0%-90.3%; 29/36)63.0% (95% CI 48.6%-75.5%; 29/46)0.0% (95% CI 0.0%-2.2%; 0/173)
domain-lookalike15 / 40 (defaults kept, see notes)0.7% (95% CI 0.1%-4.0%; 1/137)100.0% (95% CI 94.2%-100.0%; 62/62)0.0% (95% CI 0.0%-79.3%; 0/1)0.0% (95% CI 0.0%-5.8%; 0/62)0.0% (95% CI 0.0%-1.9%; 0/199)

Rates are k/n with Wilson 95% intervals. Precision depends on how many bad sites are in the mix, so it is not your precision.

By bucket (all reachable targets, fitted thresholds)

ToolBucketnlow_observed_riskelevatedhighunknown
url-trustphish_live101386120
url-trusttop_1k107105200
url-trustlong_tail_100k_1m7162630
url-trustmid_1k_100k10091810
url-trustphish_dead_answered111009102
site-verdictphish_live81304560
site-verdicttop_1k9997110
site-verdictlong_tail_100k_1m6454820
site-verdictmid_1k_100k9689610
site-verdictphish_dead_answered51400
domain-lookalikephish_live101101000
domain-lookaliketop_1k107105200
domain-lookalikelong_tail_100k_1m7171000
domain-lookalikemid_1k_100k100100000
domain-lookalikephish_dead_answered436436000

Score threshold curve (all reachable targets)

If "flagged" meant risk score >= t:

Tooltgood flagged (FPR)live bad flagged (TPR)
url-trust0100.0%100.0%
url-trust107.2%62.4%
url-trust205.8%52.5%
url-trust302.9%4.0%
url-trust402.2%2.0%
url-trust500.0%2.0%
url-trust600.0%0.0%
url-trust700.0%0.0%
url-trust800.0%0.0%
url-trust900.0%0.0%
url-trust1000.0%0.0%
site-verdict0100.0%100.0%
site-verdict1066.8%98.8%
site-verdict2033.6%79.0%
site-verdict3025.1%71.6%
site-verdict403.5%56.8%
site-verdict501.9%49.4%
site-verdict601.9%14.8%
site-verdict700.8%3.7%
site-verdict800.0%0.0%
site-verdict900.0%0.0%
site-verdict1000.0%0.0%
domain-lookalike0100.0%100.0%
domain-lookalike101.1%7.9%
domain-lookalike200.7%0.0%
domain-lookalike300.7%0.0%
domain-lookalike400.0%0.0%
domain-lookalike500.0%0.0%
domain-lookalike600.0%0.0%
domain-lookalike700.0%0.0%
domain-lookalike800.0%0.0%
domain-lookalike900.0%0.0%
domain-lookalike1000.0%0.0%

ROC AUC (score only): url-trust 0.812, site-verdict 0.867, domain-lookalike 0.534.

Notes from this run

Known failure modes

Reproduce

The harness is part of Lordevo's shop source tree (eval/trust/, not public): node eval/trust/run.mjs replays the frozen snapshot offline and rewrites the results file this page is built from; --live-refresh records a new snapshot (opt-in).

Signals only; a site with low observed risk can still be malicious. Not a safety certification.