| from __future__ import annotations | |
| from typing import List | |
| from shield.models.evidence import Evidence | |
| def collect_phone_evidence(phone: str | None) -> List[Evidence]: | |
| if not phone: | |
| return [] | |
| digits = "".join(ch for ch in phone if ch.isdigit()) | |
| if len(digits) < 10: | |
| return [Evidence( | |
| source="phone_intelligence", | |
| category="identity_risk", | |
| risk_score=35, | |
| weight=0.45, | |
| confidence=0.75, | |
| explanation="Phone number is too short to be a reliable identity signal", | |
| )] | |
| if len(set(digits[-7:])) <= 2: | |
| return [Evidence( | |
| source="phone_intelligence", | |
| category="identity_risk", | |
| risk_score=30, | |
| weight=0.35, | |
| confidence=0.68, | |
| explanation="Phone number has a synthetic-looking repeated digit pattern", | |
| )] | |
| return [] | |
Xet Storage Details
- Size:
- 906 Bytes
- Xet hash:
- 62e56aa053cac3a8ce2558c55cbb5e47f3a6bd05243e4d374b9363e645df40f5
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.