Back to Showcases
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)

Try it yourself

Clone the repo, spin up SwarnDB, and run this showcase in minutes.

View on GitHub