Integrate GBG's Fraud Risk Management Platform with
Axion's workflow engine to create a unified fraud
detection, identity verification, and compliance
pipeline for HomeChoice credit origination and
collections.
| System | Status | What it does |
|---|---|---|
| SAFPS | Live | SA Fraud Prevention Service — ID fraud check |
| Experian | Live | Credit bureau — bureau score, payment history |
| XDS | Live | Credit bureau — alternative data |
| GBG | Scaffold built | Identity, fraud, document, AML — not yet connected |
Application Intake
│
▼
┌─────────────────────────────────────────────┐
│ STAGE 1: Pre-screening (local, no API cost)│
│ ───────────────────────────────────────── │
│ • SAFPS prefilter (cell + ID tables) │
│ • Velocity check (X apps in Y hours) │
│ • Known fraud list (bloom_safps cache) │
│ • ID number validation (Luhn + age + DOB) │
└─────────────┬───────────────────────────────┘
│ pass
▼
┌─────────────────────────────────────────────┐
│ STAGE 2: Identity Verification │
│ ───────────────────────────────────────── │
│ • GBG ID3global: name + DOB + address │
│ vs SA bureaux │
│ • GBG IDscan: document image verification │
│ (ID card, passport) │
│ • Selfie match (existing ObjServiceHCSelfie)│
└─────────────┬───────────────────────────────┘
│ verified
▼
┌─────────────────────────────────────────────┐
│ STAGE 3: Fraud Scoring │
│ ───────────────────────────────────────── │
│ • GBG Instinct: ML fraud risk score │
│ (0-1000, thresholds: 400/600/800) │
│ • SAFPS full check: fraud incident search │
│ • Experian bureau: credit score + alerts │
│ • Internal rules: decision tree combining │
│ all scores into single outcome │
└─────────────┬───────────────────────────────┘
│ scored
▼
┌─────────────────────────────────────────────┐
│ STAGE 4: Decision │
│ ───────────────────────────────────────── │
│ • Decision tree: combines all signals │
│ • Outcomes: approve / refer / decline │
│ • High risk → Stage 5 (AML) │
│ • Low risk → auto-approve pipeline │
└─────────────┬───────────────────────────────┘
│ high risk only
▼
┌─────────────────────────────────────────────┐
│ STAGE 5: Enhanced Due Diligence │
│ ───────────────────────────────────────── │
│ • GBG Predator: PEPs + sanctions + AML │
│ • Manual review queue (workflow GUI node) │
│ • SAFPS detailed search (if flagged) │
│ • Outcome: approve / decline / escalate │
└─────────────────────────────────────────────┘
API (application intake)
→ CALC (validate ID number format)
→ SERVICE (SAFPS prefilter — local tables)
→ DECISION (prefilter result)
→ [fraud] → EMAIL (auto-decline notification)
→ [clear] →
SERVICE (GBG_VERIFY: identity check)
→ SERVICE (GBG_FRAUD: risk scoring)
→ SERVICE (SAFPS: full check)
→ SERVICE (EXPERIAN: bureau pull)
→ DECISION (combined risk assessment)
→ [low risk]
→ SERVICE (originate account)
→ EMAIL (welcome)
→ [medium risk]
→ FORMGUI (manual review)
→ DECISION (reviewer outcome)
→ [high risk]
→ SERVICE (GBG_AML: screening)
→ DECISION (AML result)
→ [clear] → FORMGUI (review)
→ [flagged] → auto-decline
→ SERVICE (SAFPS report)
factory.service/package.homechoice/ObjServiceGBG.py
| Method | GBG Product | Workflow Command | Cost |
|---|---|---|---|
verify_identity() |
ID3global | command: verify |
Per call |
verify_document() |
IDscan | command: document |
Per call |
check_fraud_risk() |
Instinct | command: fraud |
Per call |
screen_aml() |
Predator | command: aml |
Per call |
| Key | Set by | Values |
|---|---|---|
_gbg_status |
All commands | verified / low / medium / high / critical / clear / flagged / error |
_gbg_risk_score |
fraud command | 0-1000 |
_gbg_risk_level |
fraud command | low / medium / high / critical |
_gbg_result |
All commands | Full JSON response |
_safps_status |
SAFPS service | fraud / clear / error |
_safps_incidents |
SAFPS service | Incident count |
| Score | Level | Action |
|---|---|---|
| 0-399 | Low | Auto-approve |
| 400-599 | Medium | Manual review |
| 600-799 | High | Enhanced due diligence |
| 800-1000 | Critical | Auto-decline |
| Check | Cache Table | TTL (clean) | TTL (fraud) |
|---|---|---|---|
| GBG identity | bloom_gbg | 30 days | Permanent |
| GBG fraud | bloom_gbg | 30 days | Permanent |
| GBG document | bloom_gbg | 30 days | Permanent |
| GBG AML | bloom_gbg | 30 days | Permanent |
| SAFPS | bloom_safps | 7 days | Permanent |
Caching reduces API costs — repeat applications for
the same ID number within the TTL window hit the cache
instead of the API.
The GBG Instinct fraud response includes rules_fired —
a list of every rule that contributed to the score:
{
"risk_score": 650,
"rules_fired": [
{"rule": "VELOCITY_CHECK", "score": 200,
"detail": "3 apps in 24h"},
{"rule": "DEVICE_FINGERPRINT", "score": 150,
"detail": "known fraud device"},
{"rule": "ID_MISMATCH", "score": 300,
"detail": "name vs bureau mismatch"}
]
}
Store in bloom_gbg for audit trail and analysis.
Export GBG rule definitions to Axion decision trees:
def_decision_treenodes entriesBenefits:
Single decision tree that combines all signals:
| Input | Source | Variable |
|---|---|---|
| GBG risk score | _gbg_risk_score |
Integer 0-1000 |
| GBG risk level | _gbg_risk_level |
low/medium/high/critical |
| GBG rules fired | _gbg_result |
JSON array |
| SAFPS incidents | _safps_incidents |
Integer count |
| Experian score | _experian_score |
Integer |
| Experian alerts | _experian_alerts |
JSON array |
| Internal velocity | Computed | Apps per 24h |
| Application data | Workflow context | Amount, product, channel |
# config.yaml
base:
gbg:
client_id: <from-gbg>
client_secret: <from-gbg>
api_url: https://api.gbgplc.com
token_url: https://api.gbgplc.com/oauth/token
homechoice:
fraud:
enable_gbg: true
enable_safps: true
enable_prefilter: true
auto_decline_threshold: 800
manual_review_threshold: 400
aml_trigger_threshold: 600
| Strategy | Saves | How |
|---|---|---|
| Local prefilter | 30-40% of API calls | SAFPS cache + velocity check before GBG |
| Result caching | 10-20% of API calls | bloom_gbg 30-day TTL |
| Tiered checking | 50% of AML calls | Only high-risk goes to AML |
| Rules mirroring | Long-term reduction | Local decision tree for pre-screening |
| File | Purpose |
|---|---|
factory.service/package.homechoice/ObjServiceGBG.py |
GBG service module |
factory.service/package.homechoice/ObjServiceGBG.yaml |
Config + cache schema |
factory.service/package.core/ObjServiceSAFPS.py |
SAFPS integration (similar pattern) |
factory.core/ObjDecisionSwitch.py |
Decision tree engine |
factory.core/extend.visual/ObjDecisionSwitchVisual.py |
Decision tree reporting |
resource.notes/package.homechoice/knowledgebase.md |
HC collections data model |