Structuring (a.k.a. "smurfing") splits one large transfer into many smaller ones, each kept just under a bank's mandatory reporting threshold (e.g. $10,000 in the US), routed through disposable "mule" accounts to hide the true origin and destination. On the transaction graph this leaves a distinctive topological motif: a fan-out star from one source, immediately followed by a fan-in star into one destination.
This simulator scores that motif directly from graph structure and timing โ not from any single transaction's amount, which is exactly what makes structuring hard for naive per-transaction rules to catch:
score = 100 ร ( 0.45 ร tightness
+ 0.35 ร min(1, mules / 12)
+ 0.20 ร (1 โ (burstHours โ 1) / 71) )
- Tightness โ how close each mule's transfer sits under the reporting threshold. Classic structuring clusters transfers tightly just below the line (e.g. $9,300โ$9,800 under a $10,000 threshold).
- Fan-out width โ more mule accounts funneling into the same destination raises suspicion, saturating past ~12 mules (adding more mules stops helping evade detection once the pattern is already obvious).
- Burst window โ legitimate transfers arrive at random times; a ring moving money in a tight time window is a stronger signal than the same transfers spread over weeks.
When the score clears the detection sensitivity slider, every ring node and edge is flagged red and pulses faster โ mirroring how real anti-money-laundering (AML) systems combine graph topology with amount and timing features (rather than a single "amount > $10,000" trigger) to catch structuring that per-transaction thresholds alone miss.
This 2D build lays out the same graph and the same three-term score as the 3D original โ drag to pan, scroll/pinch to zoom, and the score-breakdown panel below the graph shows each term's live contribution as a stacked bar plus a histogram of every ring transfer against the $10,000 line.