Mail and Document Fraud Prevention
Use the ScamVerify™ API to detect fake court notices, toll letters, IRS scams, and utility shutoff notices through AI-powered document analysis and entity verification.
Mail fraud targeting vulnerable populations has escalated dramatically. Government impersonation scams generated $789 million in losses in 2023, and elder fraud losses reached $2.4 billion, a 4x increase over 5 years. Organizations that serve these populations need automated tools to verify suspicious documents before victims act on them. The ScamVerify™ Document Analysis API provides AI-powered document scanning with multi-source entity verification to catch fraudulent mail at the point of intake.
The Problem
In March 2026, a wave of fake court summons targeted residents across Virginia, Maryland, Ohio, Pennsylvania, Colorado, and Washington D.C. The documents looked authentic, complete with case numbers, judge names, legal citations, and court addresses. Victims were instructed to call a phone number or visit a URL to "resolve" their case, where they were pressured into making payments via gift cards or wire transfers.
These documents are increasingly sophisticated. AI-generated scam letters now include proper formatting, official-looking seals, and plausible legal language. Traditional visual inspection by caseworkers is no longer reliable. The signals that distinguish a real court order from a fake one are verifiable facts: Does this judge exist? Is this address a real courthouse? Does this statute actually apply?
How ScamVerify™ Helps
The ScamVerify™ Document Analysis API accepts a photo or PDF of a suspicious document and runs a multi-stage verification pipeline:
- Vision AI extraction identifies the document type and extracts all structured entities (addresses, official names, legal citations, phone numbers, URLs, dollar amounts, dates)
- Address verification checks each address against the Smarty API for deliverability and CMRA (Commercial Mail Receiving Agency) status. A court using a UPS Store mailbox is a strong fraud signal.
- Institution verification looks up claimed institutions through Google Places to confirm they exist at the stated address
- Official verification checks named judges against the CourtListener database of federal and state judges
- Citation verification validates legal statute references through the GovInfo API for federal statutes
- AI synthesis combines all verification results into a single risk score, verdict, and plain-English explanation
Code Example: Document Intake Processor
import requests
import os
from pathlib import Path
SCAMVERIFY_API_KEY = os.environ["SCAMVERIFY_API_KEY"]
BASE_URL = "https://scamverify.ai/api/v1"
def analyze_document(file_path: str) -> dict:
"""
Analyze a suspicious document image or PDF.
Accepts JPG, PNG, WebP, HEIC, or PDF (max 4.5 MB).
"""
path = Path(file_path)
mime_types = {
".jpg": "image/jpeg",
".jpeg": "image/jpeg",
".png": "image/png",
".webp": "image/webp",
".heic": "image/heic",
".pdf": "application/pdf",
}
mime = mime_types.get(path.suffix.lower(), "application/octet-stream")
with open(file_path, "rb") as f:
response = requests.post(
f"{BASE_URL}/document/analyze",
headers={
"Authorization": f"Bearer {SCAMVERIFY_API_KEY}",
},
files={"file": (path.name, f, mime)},
)
response.raise_for_status()
return response.json()
def process_intake_batch(file_paths: list[str]) -> list[dict]:
"""
Process a batch of document images from an intake form.
Returns results sorted by risk score (highest first).
"""
results = []
for file_path in file_paths:
try:
result = analyze_document(file_path)
results.append({
"file": file_path,
"document_type": result["document_type"],
"risk_score": result["risk_score"],
"verdict": result["verdict"],
"explanation": result["explanation"],
"red_flags": result["red_flags"],
"entity_verifications": result["entity_verifications"],
"recommended_action": result["recommended_action"],
"needs_escalation": result["risk_score"] >= 60,
})
except requests.HTTPError as e:
results.append({
"file": file_path,
"error": str(e),
"needs_escalation": True,
})
# Sort by risk score, highest first
results.sort(
key=lambda r: r.get("risk_score", 0),
reverse=True,
)
return results
# Usage: process documents from an elder care intake form
intake_files = [
"/uploads/intake/court-summons-scan.jpg",
"/uploads/intake/irs-notice.png",
"/uploads/intake/toll-letter.pdf",
]
results = process_intake_batch(intake_files)
for r in results:
if r.get("needs_escalation"):
print(f"ESCALATE: {r['file']} - Score: {r.get('risk_score', 'N/A')}")
print(f" Verdict: {r.get('verdict', 'error')}")
print(f" Action: {r.get('recommended_action', 'Review manually')}")Entity Verification Flow
When a suspicious document is uploaded, ScamVerify™ extracts and verifies every entity it finds. Here is a typical verification chain for a fake court summons:
Document image uploaded
|
v
Vision AI extracts:
- Address: "1200 Legal Center Blvd, Suite 400, Arlington, VA"
- Judge: "Hon. Margaret R. Thompson"
- Citation: "18 U.S.C. § 1341"
- Phone: "(703) 555-0147"
- URL: "pay-court-fines.com"
|
v
Entity verification fan-out:
├── Smarty: Address is a CMRA (mailbox store) ← RED FLAG
├── Google Places: No courthouse at this address ← RED FLAG
├── CourtListener: No judge named "Margaret R. Thompson" ← RED FLAG
├── GovInfo: 18 U.S.C. § 1341 is the mail fraud statute (ironic, but valid)
├── Phone lookup: VoIP number, high-risk carrier ← RED FLAG
└── URL lookup: Domain registered 3 days ago ← RED FLAG
|
v
AI synthesis: risk_score 94, verdict "scam"
"This document claims to be a court summons but contains multiple
fraud indicators. The return address is a commercial mailbox, the
named judge does not exist in federal or state court records, and
the payment phone number is a disposable VoIP line."Risk Scoring for Document Fraud
| Signal | Weight | Description |
|---|---|---|
| CMRA address (mailbox store) | High | Real courts and government agencies do not use UPS Stores or PO Box services as their official address |
| Non-existent official | High | Named judge, officer, or agent not found in CourtListener or other databases |
| Payment pressure language | Medium | Urgency phrases like "immediate arrest," "respond within 24 hours," or "avoid penalties" |
| Spelling and grammar errors | Medium | Misspelled agency names, inconsistent formatting, wrong state abbreviations |
| Known scam pattern match | High | Document matches patterns from previously confirmed scam campaigns (e.g., fake toll notices, IRS impersonation) |
| Mismatched institution | High | Claimed institution does not exist at the stated address per Google Places verification |
| Invalid legal citations | Medium | Referenced statutes do not exist or do not apply to the claimed jurisdiction |
| VoIP callback number | Medium | Phone number on the document uses a high-risk VoIP carrier |
| New domain for payment URL | High | Payment or "resolution" URL registered within 30 days |
Document images may contain personally identifiable information (PII) including names, addresses, Social Security numbers, and financial account numbers. ScamVerify™ does not store the original image after analysis. The extracted text entities and verification results are retained for caching (24 hours) and audit purposes. Organizations handling document images must comply with their own data retention policies and applicable regulations (HIPAA, state privacy laws, elder abuse reporting requirements).
Best Practices for Document Fraud Prevention
- Train staff to photograph documents, not scan them. Phone cameras produce higher-quality images than flatbed scanners for this purpose. Ensure the entire document is visible with good lighting and minimal glare.
- Implement intake forms with file upload. Add a document upload field to existing case management or complaint intake forms. Route uploaded images through the ScamVerify™ API before the case is assigned to a caseworker.
- Set up alerts for high-risk verdicts. Any document with a risk score of 60 or above should trigger an immediate alert to a supervisor. Documents scoring 80 or above should be flagged for law enforcement reporting.
- Verify before advising. Do not tell a client their document is fake based on visual inspection alone. Use the API verification results, which check verifiable facts (judge existence, address legitimacy, statute validity), to support your assessment.
- Report confirmed scams. When a document is confirmed fraudulent, file reports with the FTC (reportfraud.ftc.gov), your state Attorney General, and local law enforcement. The ScamVerify™ analysis provides structured evidence for these reports.
- Track patterns across your organization. Log all document analysis results to identify scam campaigns targeting your service area. Multiple clients receiving similar fake court notices likely indicates a coordinated campaign.
Related
- Document Analysis API Reference for full request and response schemas
- URL Verification API Reference for checking URLs found in documents
- Phone Lookup API Reference for verifying callback numbers on documents
- Government and Elder Fraud Protection for related agency integration patterns
Healthcare Claims Fraud Detection
Use the ScamVerify™ API to detect fraudulent healthcare claims through document analysis, provider phone verification, and multi-channel cross-referencing.
Parking and QR Code Safety
Use the ScamVerify™ API to verify QR codes on parking meters, restaurant menus, and public signage before customers are redirected to malicious payment pages.