Product Review  ·  R6 Draft  ·  2026-06-10

KYC & Redemption-Trust
Engine

Coinz  ·  V1  ·  Verify users progressively, not upfront for everyone

gbg=pass seon=approved method_verified=true good_behavior=true → auto-approve
01 · The problem

Most redemptions wait on a human

  • Manual ops review is the default, so payouts are slow and the workload scales straight with volume.
  • The signals to safely clear good users already exist (GBG, SEON, closed-loop) but are not combined into one rule.
  • So trusted repeat players hit friction, and ops hand-reviews redemptions a rules engine could clear on its own.
02 · Core principle

Verify progressively, escalate only when risk demands it

Cheap signals first

Identity and fraud checks run in the background at signup, no friction for the player.

Defer document KYC

Trusted users with a verified method redeem without document KYC, the slow step is skipped.

Escalate on signal

Shufti verification fires only on real risk or an unverified method, not for everyone.

03 · What we are building

A delta on a live system, not a rebuild

Roughly 70% of the machinery already runs in production. V1 is the unifying layer on top.

Already live
  • GBG-pass redemption bypass
  • Closed-loop redemption routing
  • SEON continuous fraud scoring
  • Shufti document KYC
  • AptPay auto-payout on approval
V1 adds
  • One explicit decision engine over the signals
  • Per-method verified state + auto-emailed request
  • good_behavior as a gating input
04 · The flag model

Seven signals the engine reads

gbg_status  ·  GBG/IDology at registration (informational)  ·  pass / fail / partial / error seon_verdict  ·  SEON, event-driven (per-brand events)  ·  approved / suspicious / blocked  (APPROVE / REVIEW / DECLINE) duplicate_account  ·  platform check (not SEON), synchronous at signup  ·  DOB + name + state OR canonical email existing, always-on closed_loop  ·  redeem method = purchase method & name match flag new / confirm method_verified  ·  the auto-approve gate, persisted new in V1 good_behavior  ·  behavioral input, separate from SEON (scoring owned by Data) new in V1 kyc_status  ·  Shufti ID verification  ·  document + selfie + proof of address

sms_verified is intentionally dropped as a branch, phone ownership is already proven at registration, so it is true for every active account.

05 · Signup classification

Background checks set a trust tier

Low risk
gbg = pass
seon = approved
Fully active at signup. Deposit + play, no upfront KYC.
Medium risk
gbg = pass
seon = suspicious
Plays normally, flagged for Shufti ID verification at redemption.
High risk
seon DECLINE (login / profile-edit)
OR duplicate account
Fully locked out. No self-service, only a CS / Fraud backoffice override.

A separate always-on duplicate-account check (DOB + name + state or canonical email) blocks synchronously at signup. gbg != pass (fail / partial / error) is not-trusted but does not restrict, only a player-level SEON DECLINE + the duplicate check do.

06 · The decision engine

Every redemption runs one router

Redemption request
Account blocked / restricted?
Yes → HIGH RISK
▼ No
Redemption method verified?
No → email + MANUAL
▼ Yes
First redemption ever?
Yes → MANUAL review
▼ No
Evaluate trust  ·  gbg · seon · good_behavior · amount
AUTO-APPROVE
all true, under the ceiling → AptPay payout
MANUAL · verify
one signal short → verify, then manual review
07 · Auto-approve · happy path

KYC-free redemption when all hold

gbg_status = pass
good_behavior = true
seon_verdict = approved
amount < auto-approve ceiling
method_verified = true
not the first redemption
no mandatory-KYC override active

Auto-approve, AptPay payout fires, no document KYC. Eligible from the second redemption onward.

08 · Manual · verify, then review

Trusted but one signal short

method not verified  →  auto-email to verify it; this redemption is manual, future ones can auto

seon = suspicious / DECLINE at redemption  →  Shufti ID verification + manual review (account not restricted)

good_behavior = false  →  Shufti ID verification + manual review

amount ≥ ceiling  →  Shufti ID verification + manual review

gbg != pass (fail / partial / error)  →  not trusted for auto; Shufti ID verification at redemption

Precedence: restricted accounts are stopped upstream; among the rest, manual-verify > auto-approve. Triggered requirements stack.

Trust is dynamic: good_behavior can flip to false between redemptions (its own monitoring, separate from SEON), dropping a previously-trusted player back to manual on the next attempt.

09 · High-risk · hard lockout

Restricted accounts are locked out, not reviewed

Triggered when any of these hold:

seon DECLINE (login / profile-edit) duplicate account

Full lockout, no login / play / deposit / withdrawal. The only way back is a CS / Fraud backoffice override, no self-service, no automated re-KYC in V1.

Today the block is silent, no Slack or email alert (CustomerIO sync + a metrics counter only). gbg=fail alone does not restrict, and a redemption-time DECLINE verifies (Shufti + manual), it does not lock out. Whether V1 adds a reinstatement path and a restrict alert are open questions.

10 · The sharpest automation lever

Per-method verification, by auto-email

01
Redemption to a method not yet verified → this one is manual
02
System auto-sends the verification email for that method
03
Ops verifies (manual Payment Proof)
04
Method saved verified; future redemptions can auto

Closed-loop purchase method is verified automatically.

Backend rule only, no front-end UI in V1.

Shufti is not used here, it verifies identity, not cards.

Verified state persists, nothing already on file is re-requested: once a method is verified or a player has passed Shufti, the engine does not ask again.

11 · Rules that bound the engine

Three guardrails on the logic

Amount ceiling · SC, config

below ceiling → auto
at or above → Shufti ID + manual review

First redemption

Always manual (CORE-7), regardless of trust. Auto-approval starts at the 2nd.

AMOE / no-purchase

No purchase method, so no auto-verified method. Standard unverified-method path.

Threshold values are operator-configurable in BackOffice, the PRD locks the capability, not the numbers.

12 · Success metrics

What good looks like

Auto-approve share
Majority of eligible redemptions clear without manual review
Manual queue
Review volume drops vs the all-manual baseline
Payout speed
Within the 1-hour redemption guarantee
Guardrail · safety
No increase in fraud / chargeback on auto-approved
Verification time
Shufti verification under 30 min (majority)
Verification friction
Faster method-verified turnaround vs manual trigger
13 · Open decisions · we need owners

Twelve calls before build

DecisionProposed defaultOwner
good_behavior scoring rulesNon-gating (default true) until scoring ships; separate from SEONData
Legal triggers that force KYC (tax, sanctions)None encoded in V1, hook onlyCompliance
Auto-approve ceiling (SC)Start at current live capsCompliance / Payments / Ops
Is closed_loop an automated flag today?Assume engine computes it (new)Engineering
Should gbg=fail alone restrict?No, keep informational (only SEON DECLINE + duplicate restrict today)Risk / Compliance
Reinstatement path for restricted accounts, or hard lockout?Keep lockout + CS / Fraud override in V1Compliance / Ops
Post-signup multi-account signal to the engine?Signup block exists, no new post-signup trigger in V1Risk / Engineering
"Payment mismatch" vs closed_loop=false?Treat as inverse of closed-loopPayments / Engineering
Alert CS / Fraud on auto-restrict?Add a Slack / email alertEngineering / Ops
14 · Open decisions · added in review

Three more from stakeholder review

DecisionProposed defaultOwner
Apple Pay deposits + method_verified, the masked DPAN never PAN-matches the redemption cardTreat as non-PAN-matchable; clear via GBG-pass / identity (reconcile with the live CORE-107 bypass)Payments / Engineering
Cumulative redemption ceiling (completed + pending), not per-request onlyAdd a rolling cumulative check alongside the per-request ceilingCompliance / Payments / Ops
Daily auto-approve caps (max count + max total auto-payable per day)Cap in BackOffice, inside the existing $800/day + 5/day platform rulesPayments / Ops
15 · The ask

Three things from this room

01   Review the engine logic, tell us where a path is wrong.

02   Take an open decision, twelve need owners.

03   Approve R6 so we can move to ticketing.

COINZ-KYC-FRAUD-ENGINE-V1-PRD · R6
01 / 15
← → or space to navigate