Skip to content
Sign up
AML INVESTIGATION WORKBENCH

Follow the money.Uncover the network.

Trace suspicious money through the graph, with every claim checked against the records.

Tripwire
JD
SAMPLE INVESTIGATION

Suspicious Transaction Network

bounded Cypher · 3 hops · 6 h
OriginTarget
3Hops in path
6Connected accounts
8Related transactions
HighRisk indicator
Interactive preview on synthetic IBM AMLworld replay data. Click nodes to inspect.Open the workbench
Synthetic replayIBM AMLworld HI-Small, loaded into FalkorDB and replayed locally. No live bank feed.
Frozen cohortChronological train, validation and test split. The test cohort is scored once.
Bounded CypherHop depth, time window, row and duration caps on every graph query.
Policy owns the callModels produce scores. Deterministic policy maps them to allow, review or a simulated block.

Typology Engine

How money hides in graphs.

Laundering hides in graph shape: a fan-out, a closed loop, a mule pool, a burst just under a reporting threshold. Each card holds a bounded Cypher pattern, the bounds around it, and the verdict the policy returns.

Typology AnalysisSIMULATED BLOCK

Fan-Out / Fan-In Layering

Funds leave an origin account, split across transit mules within a narrow time window, and reconsolidate into a destination account. Bounded multi-hop Cypher detects the fan-out and fan-in convergence.

Traversal scope2 transfers
Time horizon6 hours
Retention floor≥ 95% of amount
Row capLIMIT 50
Deterministic Policy: Human Confirmation Required
FalkorDB Cypher Engine
1MATCH path = (origin:Account {id: $originId})-[:SENT]->(t1:Transaction)
2 -[:RECEIVED]->(mule:Account)-[:SENT]->(t2:Transaction)
3 -[:RECEIVED]->(dest:Account)
4WHERE t1.timestamp <= t2.timestamp
5 AND duration.inHours(t1.timestamp, t2.timestamp).hours <= 6
6 AND t2.amount >= t1.amount * 0.95
7RETURN path, sum(t1.amount) AS volumeTransferred
8LIMIT 50;
First-class transactions: (:Account)-[:SENT]->(:Transaction)-[:RECEIVED]->(:Account)Read-only sample

Product

Evidence an analyst can defend.

Tripwire is a workbench: every screen answers to a query that ran, and every recommendation carries the records behind it.

Graph evidence, straight from FalkorDB

Transfers are first class: an account SENT a transaction that another account RECEIVED. Every node, edge and path on screen is the output of an executed, bounded Cypher query. What you see is what the graph returned.

SENTRECEIVEDTransactionAccountAccount

Three reviewed tools

The agent picks among trace_funds, inspect_counterparties and detect_flow_patterns. Each returns records from the graph; the model only proposes what to run next.

Evidence-validated reports

Every cited transaction ID, account key, amount and timestamp is checked against what the tools returned. Unsupported claims are rejected before an analyst reads them.

Policy decides, humans confirm

Deterministic policy maps validated inputs to allow, review or a simulated block, and a failed model or provider falls back to the safe path.

Case memory with provenance

Only explicit analyst confirmation promotes a suspected entity to confirmed memory. Dismissals stay on the record with their reasoning and full history.

Interactive Sandbox

Cypher you can check, row by row.

Preset Cypher the workbench runs against the synthetic IBM AMLworld replay. Run one and watch the rows FalkorDB returns, transaction by transaction.

Query Presets:
Cypher Shell · FalkorDBRead-Only Evaluation
MATCH path = (origin:Account {id: 'B0412::A331992'})-[:SENT]->(t1:Transaction)
      -[:RECEIVED]->(mid:Account)-[:SENT]->(t2:Transaction)
      -[:RECEIVED]->(sink:Account)
WHERE t1.amount >= 100000.0
RETURN origin.id, t1.id, mid.id, t2.id, sink.id, t2.amount, t2.timestamp
LIMIT 5;
Returned recordsRecorded result

Execute the query to see what the graph returns.

Read-only, human-authored Cypher. Replays a recorded run.Rows come from the graph, never the model

How it works

From a flagged transfer to a reviewable case.

Score

Allow

Risk score

0.12

Scored at its own timestamp, nothing later.

  • Allowthe transfer runs
  • Reviewa case is queued
  • Blocksimulated only

score as the transfer is read

allowreview at 0.45block at 0.80

Below the review threshold, the transfer runs.

illustrative

Step 01

Score the transfer

A LightGBM model with past-only graph features scores each transaction at its own timestamp. A logistic regression baseline is evaluated on the same frozen rows, so the graph contribution is visible.

See the benchmarks

Trace

at the anchor

Bounds: hops ≤ 2 · window ≤ 72 h · records ≤ 500 · 30 s

hops 0/2

The walk starts at the alert transaction.

illustrative

Step 02

Trace the network

The investigation walks outward from the anchor transaction with bounded Cypher: counterparties, funds paths and flow patterns, capped by hops, time window, rows and duration.

Open an investigation

Verify

0 of 3 checked

Claims from the draft report

9,400 USD left acct-8820 at 02:14
The counterparty is on a sanctions list
A three-hop path reaches the cash-out account

Each claim in the draft is checked against the records the tools returned.

illustrative

Step 03

Verify the evidence

A tool-calling agent drafts the report. Deterministic validation re-checks every claim against the records the tools returned, and counter-evidence stays next to the supporting set.

Decide

Review required

Policy suggests: review

Case history

  1. Case opened

    alert tx-9c12 · policy suggests review

case-4f21 · ana-21091 entry

The record is append-only: nothing an analyst does is erased.

illustrative

Step 04

Decide and record

Policy maps the validated result to allow, review or a simulated block. The analyst confirms or dismisses, and the case keeps the decision, the reviewer and the evidence references.