Skip to main content

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 score blends two composites — the identity score (idvScore) and the compliance score (complianceScore):

overall = (idvScore × 0.6) + (complianceScore × 0.4)

The idvScore is the weighted average of the identity components below (each 0–100):

idvScore = weighted average of:
faceMatch (weight 0.25)
liveness (weight 0.25)
documentQuality (weight 0.10)
documentAuth (weight 0.10)
nameMatch (weight 0.10)
dataConsistency (weight 0.10)
ComponentWeightSource
faceMatch0.25FaceNet embedding similarity
liveness0.25Anti-spoofing analysis
documentQuality0.10Image quality assessment
documentAuth0.105-layer document authenticity analysis
nameMatch0.10Name matching across sources
dataConsistency0.10Cross-reference of extracted data

The complianceScore (0–100, where 100 is clean) comes from sanctions / PEP / adverse-media screening — see Compliance screening below.

note

When a component doesn't apply to a verification — for example nameMatch when no expected name was provided, or mrzValidity for a non-MRZ document — it is excluded and the remaining component weights are renormalized, so idvScore always spans 0–100.

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:

LayerCheckWhat it detects
D1Template MatchingDocument layout vs known templates
D2Font ConsistencyFont uniformity across text fields
D3Photo IntegrityPhoto replacement or manipulation
D4Compression AnalysisRe-compression artifacts from editing
D5Edge ConsistencyCut-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 embeddings
  • faceMatchConfidence — Confidence level of the match

Liveness (liveness)​

Anti-spoofing analysis with 5 layers:

LayerScoreWhat it detects
TexturetextureScorePrinted photos, screen displays
FrequencyfrequencyScoreDigital manipulation artifacts
ChallengechallengeScoreCorrect completion of active challenges
TemporaltemporalScoreFrame-by-frame consistency
QualityqualityScoreImage 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 BandScore RangeMeaning
LOW80–100No hits, clean screening
MEDIUM50–79Minor hits requiring review
HIGH20–49Significant hits
CRITICAL0–19Sanctions match or critical risk

Decision logic​

The overall score drives an automated decision (compliance hard-stops are applied first, then the score bands):

ConditionDecisionAction
Sanctions hitauto_rejectImmediately rejected regardless of score
CRITICAL or HIGH compliance riskauto_rejectRejected due to compliance risk
PEP hit (no sanctions)manual_reviewQueued for human review
MEDIUM compliance riskmanual_reviewQueued for human review
overall >= 80auto_approveAutomatically approved
overall 50–79manual_reviewBorderline, queued for review
overall < 50auto_rejectAutomatically rejected
note

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
}
}