0–100 phone rating — explainable risk score
A single 0–100 score (0 = block, 100 = trust) combining HLR, 12 antifraud signals, fraud-ring clusters and behavioural fingerprints. Per-signal contribution so you can show the user why we said no — required for EU/UK regulatory transparency.
What goes into the score
- Live carrier verdict (HLR + MNP — VOIP / disposable carriers drag the score down)
- Public-board appearance — number listed on SMS-receive sites
- Service diversity — count of distinct OTP services the number has signed up to
- Cross-source presence — number appears in >1 country's index
- Historical OTP volume + spam ratio
- OTP-code collision rate (same code received from different services in short window)
- Cluster membership — Neo4j community detection on fraud-ring graph
- Telegram presence + account age
- Behavioural fingerprint match against known attack signatures
- Geo inconsistency (number country vs typical sender countries)
Per-signal contribution
Every response includes a contributions array listing which signals pushed the score up or down by how much, so you can render an audit trail in your fraud-review dashboard. This is what EU's Digital Services Act and UK Online Safety Act mean by "explainable automated decision".
Endpoint
GET /api/v1/numbers/{phone}/rating — returns score, recommendation (allow / warn / block) and per-signal contributions in ~50 ms.