≋ SQL Financial Crime Lab
By Brandon Candela Synthetic data only

MONITOR · INVESTIGATE · CHALLENGE

Less noise.
Know what you might miss.

Help a fictional fintech review its transaction alerts. Adjust a rule, inspect the evidence, and document a decision another analyst can challenge.

Loading the synthetic SQLite database…

01 / RULE LAB

Test the tradeoff

R01 · RAPID MOVEMENT

In, then quickly out

Find a similar-sized outgoing transfer after an incoming one. Timing alone does not trace the same funds.

R02 · CUSTOMER PROFILE

Outside expected activity

Compare the day's outbound value with the customer's expected daily volume.

R03 · MANY TO ONE

A crowd of senders

Count distinct counterparties paying one account during the observation day.

One observation day: January 15, 2026 · USD only · fixed baseline: 30 minutes / 3× / 5 senders

How these metrics work

Each of 36 fictional customers has one assigned evaluation scenario: 12 seeded review-worthy cases and 24 seeded benign cases. We score one customer–scenario pair once. Precision = detected seeded positives ÷ all alerts. Recall = detected seeded positives ÷ 12. These authored labels are evaluation fixtures, not real-world adjudications. A smaller queue alone is not a success.

02 / ALERT QUEUE

Follow the evidence

CustomerScenarioSignalReview
Which seeded cases did this configuration miss?

03 / SQL & DELIVERY

Inspect the work behind the screen

The dashboard executes real SQL in your browser. Data stays on this device. Saved assessments use this browser's local storage; QC is a role-play workflow, not authenticated separation of duties.

What this project demonstrates

Relational modeling, indexed joins, CTEs, aggregation, window functions, data-quality checks, parameterized scenario queries, threshold comparison and traceable reviewer decisions. Independent work sample built with AI-assisted development. This does not represent production Actimize configuration or validated fraud detection.

Data quality checks