Scoring
Every completed verification receives a composite score (0–100) that drives the automated decision. The score combines identity verification results with compliance screening.
Score formula
The overall verification score is a weighted sum of 6 component scores:
Overall Score = (documentQuality × 0.10)
+ (documentAuth × 0.10)
+ (faceMatch × 0.25)
+ (liveness × 0.25)
+ (nameMatch × 0.10)
+ (dataConsistency × 0.10)
| Component | Weight | Source |
|---|---|---|
documentQuality | 10% | Image quality assessment |
documentAuth | 10% | 5-layer document authenticity analysis |
faceMatch | 25% | FaceNet embedding similarity |
liveness | 25% | Anti-spoofing analysis |
nameMatch | 10% | Name matching across sources |
dataConsistency | 10% | Cross-reference of extracted data |
The remaining 10% is reserved for optional scoring components (e.g., MRZ validity) depending on the document type.
Score components
The score is derived from multiple sub-scores:
Document quality (documentQuality)
Image quality assessment — resolution, blur, glare, cropping. A low score here means the image is difficult to analyze reliably.
Document authenticity (documentAuth)
5-layer authenticity analysis:
| Layer | Check | What it detects |
|---|---|---|
| D1 | Template Matching | Document layout vs known templates |
| D2 | Font Consistency | Font uniformity across text fields |
| D3 | Photo Integrity | Photo replacement or manipulation |
| D4 | Compression Analysis | Re-compression artifacts from editing |
| D5 | Edge Consistency | Cut-and-paste or border manipulation |
Face match (faceMatch)
Similarity between the selfie and the document photo, computed using FaceNet 512-dimensional embeddings.
faceMatch— Overall match score (0–100)faceEmbeddingSimilarity— Raw cosine similarity of face embeddingsfaceMatchConfidence— Confidence level of the match
Liveness (liveness)
Anti-spoofing analysis with 5 layers:
| Layer | Score | What it detects |
|---|---|---|
| Texture | textureScore | Printed photos, screen displays |
| Frequency | frequencyScore | Digital manipulation artifacts |
| Challenge | challengeScore | Correct completion of active challenges |
| Temporal | temporalScore | Frame-by-frame consistency |
| Quality | qualityScore | Image quality of liveness frames |
MRZ validity (mrzValidity)
For ICAO 9303 documents (passports, some national IDs) — validates the Machine Readable Zone check digits and data consistency.
Data consistency (dataConsistency)
Cross-checks extracted document data (name, DOB, document number) against MRZ data and any government database results.
Name match (nameMatch)
Compares the name extracted from the document (OCR and MRZ) against the name provided at verification creation, using fuzzy matching algorithms.
Compliance screening
In addition to the verification score, compliance screening results from CEngine are factored into the decision logic (see below). The compliance screening includes:
- Sanctions screening — Checked against 9 international sanctions lists (65K+ entries)
- PEP screening — Checked against 764K+ Politically Exposed Person entries
- Adverse media — NLP analysis of news and media mentions
Compliance risk bands
| Risk Band | Score Range | Meaning |
|---|---|---|
| LOW | 80–100 | No hits, clean screening |
| MEDIUM | 50–79 | Minor hits requiring review |
| HIGH | 20–49 | Significant hits |
| CRITICAL | 0–19 | Sanctions match or critical risk |
Decision logic
The final score drives an automated decision:
| Condition | Decision | Action |
|---|---|---|
| Sanctions hit | auto_reject | Immediately rejected regardless of score |
| CRITICAL or HIGH compliance risk | auto_reject | Rejected due to compliance risk |
| PEP hit (no sanctions) | manual_review | Queued for human review |
| MEDIUM compliance risk | manual_review | Queued for human review |
| Score >= 80 | auto_approve | Automatically approved |
| Score 50–79 | manual_review | Borderline, queued for review |
| Score < 50 | auto_reject | Automatically rejected |
Decision thresholds are configurable per tenant. Contact your account manager to adjust the auto-approve and auto-reject thresholds for your use case.
Score response
The complete score breakdown is included in the verification response and webhook payload:
{
"scores": {
"documentQuality": 95.0,
"documentAuth": 97.5,
"faceMatch": 98.1,
"faceEmbeddingSimilarity": 0.94,
"faceMatchConfidence": 0.97,
"liveness": 94.5,
"antiSpoofScores": {
"textureScore": 96.0,
"frequencyScore": 93.0,
"challengeScore": 95.0,
"temporalScore": 92.0,
"qualityScore": 96.5,
"spoofDetected": false
},
"docAuthScores": {
"templateScore": 98.0,
"fontScore": 97.0,
"photoIntegrity": 96.5,
"compressionScore": 98.0,
"edgeScore": 97.5,
"tamperDetected": false
},
"mrzValidity": 100.0,
"dataConsistency": 95.0,
"idvScore": 96.3,
"complianceScore": 95.0,
"complianceRiskBand": "LOW",
"overall": 95.8
}
}