Skip to main content

AI Compliance Agents

The compliance AI system includes two agents that work together to reduce manual review burden: the Case Investigation Agent and the Match Verification Agent. Together, they can auto-resolve 50–70% of compliance cases that would otherwise require manual analyst review.

Agents Overview

AgentPurposeAuto-Resolution Target
Case InvestigationInvestigates ReviewRequired cases by analyzing transaction patterns, customer history, and contextual signals50–70% of review cases
Match VerificationEvaluates screening matches using Bayesian confidence scoring to distinguish true positives from false positives60–80% of screening matches

Case Investigation Agent

When a transaction or customer screening produces a ReviewRequired status, the Case Investigation Agent evaluates the case automatically.

How It Works

Case Status: ReviewRequired


Case Investigation Agent
├── Analyze transaction patterns
├── Check customer risk history
├── Evaluate geographic risk signals
├── Cross-reference related cases


Decision
├── AUTO_CLEARED (low risk confirmed)
├── NEEDS_REVIEW (insufficient confidence)
└── AUTO_ESCALATED (high risk confirmed)

Decision Factors

FactorWeightDescription
transaction_pattern0.25Deviation from customer's normal behavior
customer_risk_profile0.20Historical risk level and previous alerts
geographic_risk0.20Source/destination country risk rating
counterparty_risk0.15Known counterparty risk signals
amount_anomaly0.10Statistical deviation from typical amounts
temporal_pattern0.10Unusual timing or frequency patterns

Example case decision:

{
"case_id": "case-uuid",
"agent": "case_investigation",
"decision": "AUTO_CLEARED",
"confidence": 0.93,
"factors": {
"transaction_pattern": { "score": 0.95, "note": "Consistent with regular supplier payment pattern" },
"customer_risk_profile": { "score": 0.90, "note": "Low-risk customer, no previous alerts" },
"geographic_risk": { "score": 0.88, "note": "Domestic transfer, low-risk jurisdiction" },
"counterparty_risk": { "score": 0.97, "note": "Known counterparty, established relationship" },
"amount_anomaly": { "score": 0.92, "note": "Within 1 std deviation of monthly average" },
"temporal_pattern": { "score": 0.96, "note": "Regular business hours, consistent frequency" }
},
"reasoning": "Low-risk domestic transfer to established counterparty. Transaction pattern consistent with regular supplier payments over 12-month history.",
"processed_at": "2026-04-07T14:30:00Z"
}

Match Verification Agent

The Match Verification Agent uses Bayesian confidence scoring to evaluate screening matches against sanctions lists, PEP databases, and adverse media sources.

Bayesian Confidence Scoring

Instead of relying solely on string similarity, the agent considers prior probability and multiple evidence signals:

P(true_match | evidence) = P(evidence | true_match) * P(true_match)
────────────────────────────────────────
P(evidence)

Evidence signals evaluated:

SignalDescription
name_similarityFuzzy string match score (Jaro-Winkler, Levenshtein)
date_of_birthDOB match or near-match
nationalityCountry of nationality match
id_numbersGovernment ID number match
known_aliasesMatch against known aliases
associated_entitiesConnections to other matched entities

Example match evaluation:

{
"match_id": "match-uuid",
"agent": "match_verification",
"decision": "FALSE_POSITIVE",
"bayesian_confidence": 0.03,
"prior_probability": 0.001,
"evidence": {
"name_similarity": { "score": 0.82, "note": "Common name, high base rate of coincidental matches" },
"date_of_birth": { "match": false, "note": "DOB differs by 15 years" },
"nationality": { "match": false, "note": "Different nationality" },
"id_numbers": { "match": false, "note": "No matching ID numbers" }
},
"reasoning": "Name similarity is moderate but all secondary identifiers (DOB, nationality, ID) do not match. Bayesian posterior probability of true match is 3%."
}
note

The Bayesian approach significantly reduces false positives compared to name-only matching. A match with 85% string similarity but no corroborating evidence (DOB, nationality) will correctly score as a likely false positive.

Enable the Agents

Configure both compliance agents via the API.

Case Investigation Agent

PUT /api/v1/ai/agents/case_investigation/config
curl -X PUT https://api.korastratum.com/api/v1/compliance/ai/agents/case_investigation/config \
-H "Authorization: Bearer $TOKEN" \
-H "X-Tenant-ID: demo_bank" \
-H "Content-Type: application/json" \
-d '{
"enabled": true,
"mode": "autonomous",
"auto_clear_threshold": 0.90,
"auto_escalate_threshold": 0.85,
"max_daily_auto_decisions": 200,
"excluded_risk_levels": ["CRITICAL"],
"require_dual_signal": true
}'

Match Verification Agent

PUT /api/v1/ai/agents/match_verification/config
{
"enabled": true,
"mode": "autonomous",
"false_positive_threshold": 0.10,
"true_positive_threshold": 0.80,
"require_secondary_identifier": true,
"max_daily_auto_decisions": 500
}

Configuration Options

FieldTypeDescription
enabledbooleanEnable or disable the agent
modestringshadow (observe only) or autonomous (take action)
auto_clear_thresholdnumberMinimum confidence to auto-clear a case
auto_escalate_thresholdnumberMinimum risk confidence to auto-escalate
false_positive_thresholdnumberBelow this Bayesian score, mark as false positive
true_positive_thresholdnumberAbove this Bayesian score, mark as true positive
max_daily_auto_decisionsintegerSafety cap on autonomous decisions per day
excluded_risk_levelsstring[]Risk levels that always require human review
require_dual_signalbooleanRequire at least 2 corroborating signals for auto-clear
require_secondary_identifierbooleanRequire non-name identifier match for true positive
warning

CRITICAL risk level cases should always require human review. We recommend keeping this in excluded_risk_levels even in autonomous mode.

Agent Performance Metrics

GET /api/v1/ai/agents/performance

Response:

{
"case_investigation": {
"enabled": true,
"mode": "autonomous",
"last_30_days": {
"cases_processed": 3420,
"auto_cleared": 2052,
"auto_escalated": 171,
"sent_to_human": 1197,
"auto_resolution_rate": 0.65,
"accuracy_vs_human_baseline": 0.97
}
},
"match_verification": {
"enabled": true,
"mode": "autonomous",
"last_30_days": {
"matches_processed": 8940,
"false_positives_cleared": 6258,
"true_positives_flagged": 894,
"sent_to_human": 1788,
"auto_resolution_rate": 0.80,
"accuracy_vs_human_baseline": 0.96
}
}
}

Next Steps