Screening & Risk

Sanctions screening, PEP detection, adverse media monitoring, and dynamic CDD risk scoring for comprehensive counterparty due diligence.


Overview

The Overvoid compliance engine performs multi-layered screening on every entity. Sanctions and PEP screening runs automatically during onboarding and on a recurring schedule. Adverse media checks are powered by Parallel.ai for real-time news and media analysis. All screening signals feed into a dynamic CDD risk score that adapts as new information becomes available.


Sanctions & PEP Screening

How It Works

Sanctions and PEP screening is powered by OpenSanctions via the Yente matching API. Screening runs automatically at three points:

TriggerDescription
onboardingAutomatic screening when an entity is created
periodicRecurring re-screening based on risk tier (daily for high, weekly for medium, monthly for low)
list_updateTriggered when the underlying sanctions lists are updated

Screening checks the entity against global sanctions lists (OFAC SDN, EU Consolidated, UN Security Council, UK HMT, and others) and political exposure datasets. Results are stored on the entity record:

FieldTypeDescription
sanctions_statusstringclear, potential_match, or confirmed_match
is_pepbooleanWhether any UBO or associated person is a Politically Exposed Person
screening_dateISO 8601Timestamp of the most recent screening
screening_expiryISO 8601When the current screening result expires and re-screening is required

Screening results are visible on the entity detail endpoint:

curl https://api.overvoid.io/v1/onboarding/entities/{entity_id} \
-H "Authorization: Bearer cusd_test_YOUR_KEY"

The response includes a screening object:

{
"entity_id": "ent_01HXYZ...",
"legal_name": "Acme Corp",
"status": "active",
"screening": {
"sanctions_status": "clear",
"is_pep": false,
"adverse_media_flag": false,
"screening_date": "2026-03-20T08:00:00Z",
"screening_expiry": "2026-04-20T08:00:00Z",
"lists_checked": ["OFAC_SDN", "EU_CONSOLIDATED", "UN_SC", "UK_HMT", "OPENSANCTIONS_PEP"]
}
}

Adverse Media

Get Adverse Media Results

Returns adverse media screening results powered by Parallel.ai. The system scans news sources, regulatory actions, court filings, and other public records for negative coverage related to the entity.

curl https://api.overvoid.io/v1/onboarding/entities/{entity_id}/adverse-media \
-H "Authorization: Bearer cusd_test_YOUR_KEY"
{
"entity_id": "ent_01HXYZ...",
"has_adverse": false,
"severity": null,
"articles": [],
"last_checked": "2026-03-20T08:00:00Z",
"next_check": "2026-03-27T08:00:00Z"
}

When adverse media is found, the response includes article details:

{
"entity_id": "ent_01HABC...",
"has_adverse": true,
"severity": "medium",
"articles": [
{
"title": "Acme Corp Fined by SEC for Disclosure Violations",
"source": "Reuters",
"url": "https://reuters.com/article/...",
"published_at": "2026-02-15T14:00:00Z",
"category": "regulatory_action",
"relevance_score": 0.92,
"summary": "SEC imposed $2.5M fine on Acme Corp for failure to disclose material financial information in quarterly filings."
}
],
"last_checked": "2026-03-20T08:00:00Z",
"next_check": "2026-03-23T08:00:00Z"
}

Response fields:

FieldDescription
has_adverseWhether any adverse media was found
severitylow, medium, or high (null if no adverse media)
articles[]Array of adverse articles with title, source, URL, category, and relevance score

Refresh Adverse Media

Trigger an on-demand adverse media re-check. Useful when you receive new information about a counterparty and want immediate results rather than waiting for the next scheduled scan.

curl -X POST https://api.overvoid.io/v1/onboarding/entities/{entity_id}/adverse-media/refresh \
-H "Authorization: Bearer cusd_test_YOUR_KEY"
{
"entity_id": "ent_01HXYZ...",
"status": "scanning",
"estimated_completion": "2026-03-24T10:02:00Z",
"message": "Adverse media scan initiated. Results typically available within 2 minutes."
}

CDD Dynamic Risk Scoring

How Risk Scores Work

Every entity has a dynamic risk score from 0 to 100, recalculated whenever new signals arrive (screening results, alerts, transaction patterns). The score determines the entity's risk tier and drives screening frequency, alert thresholds, and enhanced due diligence requirements.

TierScore RangeScreening FrequencyImplications
low0 - 30MonthlyStandard due diligence, normal monitoring
medium31 - 60WeeklyEnhanced monitoring, lower alert thresholds
high61 - 100DailyEnhanced due diligence, manual review required for large transfers

Risk score factors:

FactorWeightDescription
jurisdictionHighFATF grey/blacklist, CPI score, secrecy index
alert_historyHighNumber and severity of true positive alerts
pep_statusMediumWhether any UBO is a Politically Exposed Person
adverse_mediaMediumSeverity of adverse media findings
volume_anomalyMediumTransaction volume deviations from established baseline
screening_stalenessLowTime since last sanctions/PEP screening relative to schedule

Risk Score History

Returns the risk score trend over time for an entity. Each data point includes the score, tier, and the event that triggered the recalculation.

curl "https://api.overvoid.io/v1/onboarding/entities/{entity_id}/risk-history?from_date=2026-01-01T00:00:00Z&limit=50" \
-H "Authorization: Bearer cusd_test_YOUR_KEY"

Query parameters:

ParamTypeDescription
from_dateISO 8601Start of date range
to_dateISO 8601End of date range
limitintMax results (default 20, max 100)
{
"entity_id": "ent_01HXYZ...",
"current_score": 25,
"current_tier": "low",
"history": [
{
"score": 15,
"tier": "low",
"trigger": "onboarding_screening",
"timestamp": "2026-01-15T10:00:00Z",
"factors": {
"jurisdiction": 5,
"alert_history": 0,
"pep_status": 0,
"adverse_media": 0,
"volume_anomaly": 10,
"screening_staleness": 0
}
},
{
"score": 25,
"tier": "low",
"trigger": "alert_resolved_true_positive",
"timestamp": "2026-03-21T09:15:00Z",
"factors": {
"jurisdiction": 5,
"alert_history": 10,
"pep_status": 0,
"adverse_media": 0,
"volume_anomaly": 10,
"screening_staleness": 0
}
}
],
"total": 2
}

Entity Network Analysis

Transaction Network Graph

Build a transaction network graph for an entity. Returns nodes (entities and external addresses) and edges (aggregated transfer flows). Use this for link analysis, identifying hidden relationships, and visualizing fund movement patterns.

curl "https://api.overvoid.io/v1/graph/entity/{entity_id}/network?depth=2&min_amount=0" \
-H "Authorization: Bearer cusd_test_YOUR_KEY"

Query parameters:

ParamTypeDescription
depthintHops from entity: 1-3 (default 2)
min_amountstringMinimum total transfer amount in wei (default 0)

Response:

{
"nodes": [
{
"id": "ent_01HXYZ...",
"type": "entity",
"label": "Apex Digital Treasury",
"risk_tier": "low",
"risk_score": 12,
"jurisdiction": "US"
},
{
"id": "0x8626...1199",
"type": "external",
"label": "0x8626...1199"
}
],
"edges": [
{
"source_id": "ent_01HXYZ...",
"target_id": "0x8626...1199",
"tx_count": 3,
"total_amount": "15000000000",
"first_seen": "2026-01-15T10:00:00Z",
"last_seen": "2026-03-20T14:30:00Z"
}
],
"metadata": {
"entity_count": 6,
"external_count": 3,
"edge_count": 12,
"depth": 2
}
}

Node types:

TypeDescription
entityA KYC/KYB-verified entity in the system, includes risk tier, score, and jurisdiction
externalAn address not associated with any entity, labeled by its truncated address

Fund Flow

Returns temporal fund flow data with resolved entity names. Each entry represents a single transfer ordered by timestamp, making it easy to reconstruct the movement of funds over time.

curl "https://api.overvoid.io/v1/graph/entity/{entity_id}/fund-flow?limit=50" \
-H "Authorization: Bearer cusd_test_YOUR_KEY"

Related Entities

Find entities related to the target through shared transactions and jurisdiction. Returns a ranked list of related entities with relationship strength indicators.

curl https://api.overvoid.io/v1/graph/entity/{entity_id}/related \
-H "Authorization: Bearer cusd_test_YOUR_KEY"

Transaction Clusters

Identify transaction clusters across your entity portfolio. Returns groups of entities and addresses that transact heavily with each other, which can reveal coordinated activity or hidden networks.

curl https://api.overvoid.io/v1/graph/clusters \
-H "Authorization: Bearer cusd_test_YOUR_KEY"