AI Decision Agents
The IDV Decision Intelligence Agent automates the manual review queue by applying confidence-weighted scoring to verification cases. Instead of simple pass/fail boolean flags, the agent evaluates multiple signals and produces a nuanced confidence score that accounts for OCR errors, image quality, and data consistency.
How It Works
Manual Review Queue
│
▼
Decision Intelligence Agent
├── OCR confidence analysis
├── Face match scoring
├── Document authenticity checks
├── Data consistency validation
│
▼
Confidence-Weighted Decision
├── HIGH confidence (>0.90) ──▶ Auto-approve
├── MEDIUM confidence (0.70-0.90) ──▶ Flag for human review
└── LOW confidence (<0.70) ──▶ Auto-reject
Key Capabilities
| Capability | Description |
|---|---|
| Confidence-weighted scoring | Multi-signal scoring (0.0–1.0) instead of binary pass/fail |
| OCR error tolerance | Handles common OCR misreads (O/0, I/1, diacritics) without false rejections |
| False positive detection | Identifies cases that would be incorrectly rejected by rule-based systems |
| Shadow mode | Agent runs alongside human reviewers without taking action — for validation |
| Audit trail | Every decision includes full reasoning and signal breakdown |
Confidence Scoring
The agent produces a composite confidence score from multiple signals:
| Signal | Weight | Description |
|---|---|---|
face_match | 0.30 | Biometric face comparison score |
ocr_data_match | 0.25 | Extracted text matches provided data |
document_authenticity | 0.20 | Document tamper detection score |
data_consistency | 0.15 | Cross-field consistency (DOB, name, ID number) |
image_quality | 0.10 | Image clarity and completeness |
Example scoring output:
{
"verification_id": "ver-uuid",
"composite_score": 0.92,
"decision": "APPROVE",
"signals": {
"face_match": { "score": 0.95, "weighted": 0.285 },
"ocr_data_match": { "score": 0.88, "weighted": 0.220 },
"document_authenticity": { "score": 0.97, "weighted": 0.194 },
"data_consistency": { "score": 0.90, "weighted": 0.135 },
"image_quality": { "score": 0.86, "weighted": 0.086 }
},
"ocr_corrections": [
{ "field": "id_number", "extracted": "A12O45678", "corrected": "A1204567B", "confidence": 0.82 }
],
"reasoning": "High confidence across all signals. OCR correction applied to ID number (O→0 substitution)."
}
Shadow Mode
Before enabling autonomous decisions, run the agent in shadow mode. In this mode, the agent processes every case in the manual review queue and records what it would decide, but does not take any action. Human reviewers continue to make all decisions.
This allows you to:
- Compare agent decisions against human reviewer outcomes
- Measure agreement rate and identify edge cases
- Build confidence before enabling autonomous mode
We recommend running shadow mode for at least 2 weeks and targeting a >95% agreement rate with human reviewers before enabling autonomous decisions.
Enable the Agent
Configure the IDV Decision Intelligence Agent via the API.
PUT /api/v1/ai/agents/idv_decision_agent/config
- cURL
- Node.js
- Python
- Go
curl -X PUT https://api.korastratum.com/api/v1/idv/ai/agents/idv_decision_agent/config \
-H "Authorization: Bearer $TOKEN" \
-H "X-Tenant-ID: demo_bank" \
-H "Content-Type: application/json" \
-d '{
"enabled": true,
"mode": "shadow",
"auto_approve_threshold": 0.90,
"auto_reject_threshold": 0.70,
"ocr_error_tolerance": true,
"max_daily_auto_decisions": 500,
"excluded_document_types": ["PASSPORT"],
"notify_on_override": true
}'
const config = await idvRequest("PUT", "/api/v1/ai/agents/idv_decision_agent/config", token, {
enabled: true,
mode: "shadow",
auto_approve_threshold: 0.90,
auto_reject_threshold: 0.70,
ocr_error_tolerance: true,
max_daily_auto_decisions: 500,
excluded_document_types: ["PASSPORT"],
notify_on_override: true,
});
config = idv_request("PUT", "/api/v1/ai/agents/idv_decision_agent/config", token, {
"enabled": True,
"mode": "shadow",
"auto_approve_threshold": 0.90,
"auto_reject_threshold": 0.70,
"ocr_error_tolerance": True,
"max_daily_auto_decisions": 500,
"excluded_document_types": ["PASSPORT"],
"notify_on_override": True,
})
config, err := idvRequest(ctx, "PUT", "/api/v1/ai/agents/idv_decision_agent/config", token, map[string]interface{}{
"enabled": true,
"mode": "shadow",
"auto_approve_threshold": 0.90,
"auto_reject_threshold": 0.70,
"ocr_error_tolerance": true,
"max_daily_auto_decisions": 500,
"excluded_document_types": []string{"PASSPORT"},
"notify_on_override": true,
})
Configuration Options
| Field | Type | Description |
|---|---|---|
enabled | boolean | Enable or disable the agent |
mode | string | shadow (observe only) or autonomous (take action) |
auto_approve_threshold | number | Minimum composite score for auto-approval (0.0–1.0) |
auto_reject_threshold | number | Maximum composite score for auto-rejection (0.0–1.0) |
ocr_error_tolerance | boolean | Enable intelligent OCR error correction |
max_daily_auto_decisions | integer | Safety cap on autonomous decisions per day |
excluded_document_types | string[] | Document types that always require human review |
notify_on_override | boolean | Send notification when agent decision differs from what a human would decide |
When switching from shadow to autonomous mode, the agent will begin auto-approving and auto-rejecting cases. Ensure your thresholds are validated against shadow mode results before making this change.
Get Agent Status
GET /api/v1/ai/agents/idv_decision_agent/status
Response:
{
"agent_id": "idv_decision_agent",
"enabled": true,
"mode": "shadow",
"today": {
"cases_processed": 142,
"auto_approved": 0,
"auto_rejected": 0,
"flagged_for_review": 142,
"agreement_rate_with_humans": 0.96
},
"last_30_days": {
"cases_processed": 4260,
"agreement_rate_with_humans": 0.94,
"false_positive_rate": 0.02,
"false_negative_rate": 0.01
}
}
Next Steps
- Verification Flow — End-to-end identity verification process.
- Scoring Reference — Verification scoring methodology.
- Webhooks — Subscribe to agent decision events.