Financial ServicesComplex
Fraud Ring Identification
Typed money-movement edges with provenance and audit history
Typed Money-Movement EdgesRing TraversalDrift DetectionGhost DetectionEdge Provenance and Curation
Per-Edge
Link Provenance
Yes
Ring Traversal
Yes
Ghost Detection
All
Tests Passed
The Scenario
Money movement and shared-identity links are authored as typed edges (TRANSACTED_WITH, SHARES_DEVICE, SHARES_IDENTITY) from transaction and KYC data, each with a provenance record. Transaction behavior is also embedded as vectors. A hybrid query seeds by behavioral similarity to one suspicious account, walks the typed edges across hops to surface the ring, and ranks the frontier so coordinated accounts rise. Ghost detection flags synthetic identities (vectors with no genuine behavioral neighbors); drift detection catches account takeover. Every link in the ring carries the evidence trail behind it.
Key Results
- Ring discovery over typed money-movement edges, with provenance on every link
- Ghost detection identifies synthetic identities
- Drift detection catches account takeover
- Verify / reject / audit history gives a defensible investigation record
Per-Edge
Link Provenance
Yes
Ring Traversal
Yes
Ghost Detection
All
Tests Passed
The Code
Everything above, in a few lines of Python.
python
# Author money-movement edges with provenance, then bulk-import.
client.graph.put_edge("transactions", source=acct_a, target=acct_b,
edge_type="TRANSACTED_WITH",
provenance={"txn_id": "t-9913", "source": "ledger"})
# Ring discovery: walk typed edges from one suspicious account.
ring = (
client.graph.query("transactions")
.vector_similar(suspect_embedding, k=20)
.traverse("TRANSACTED_WITH", direction="outgoing")
.vector_rank(suspect_embedding, k=50)
.return_nodes()
)
# Ghost detection for synthetic identities (vector math)
ghosts = client.math.detect_ghosts("transactions", threshold=0.3)