We are celebrating the 10-year anniversary of the Alteryx Community! Learn more and join in on the fun here.
Start Free Trial

Weekly Challenges

Solve the challenge, share your solution and summit the ranks of our Community!

Also available in | Français | Português | Español | 日本語
IDEAS WANTED

Want to get involved? We're always looking for ideas and content for Weekly Challenges.

SUBMIT YOUR IDEA

Challenge #490: Detecting Money Laundering

AYXAcademy
Alteryx
Alteryx

Full Width - WC banner.svg

Hi Community members,

 

A solution to last week’s challenge can be found here.

 

This challenge was submitted by our ACE Ippei Nakagawa, @gawa. Thank you, Gawa, for your submission!

 

In this week’s challenge, your task is to detect transactions that may indicate money laundering. Money laundering schemes often follow a circular pattern, such as:

  • A sends money to B
  • B sends money to C
  • C sends the same money back to A

 

These transactions form a loop, and your goal is to identify such suspicious loops in the dataset.

 

To qualify as potential money laundering, a group of transactions must meet all the following criteria:

  1. Consistent Amount: The same amount of money is transferred in each transaction forming a loop.
  2. Cyclic Return: The money eventually returns to the original sender, forming a complete loop.
  3. Chronological Order: Transactions within the loop occur in strictly ascending order of transaction date.
  4. Minimum Hops: A valid loop must include at least two intermediary transactions (i.e., at least three participants in total, including the original sender).

 

Once you have completed your challenge, include your solution file and a screenshot of your workflow as attachments to your comment.

 

Good Luck!

The Academy Team


Download Start File

 

Source: Randomly generated dataset using Python.

Erin
11 - Bolide

@AYXAcademy - When I click Download Start File, it brings up Cloud_Quest_25_Start.json. Is that right? 

 

**Update**
Glad the input was fixed up. Here's my solution. Took me awhile to get there and I'm sure there's a more elegant solution, but I'm not elegant today. 

Pilsner
13 - Pulsar

Tough challenge. I made the classic mistake and got a bit mixed up with all the different IDs, but got there in the end. Liked the use case too, great fun!

Spoiler
Workflow:
490.png


Macro:

490 (macro).png



 

Hub119
11 - Bolide
11 - Bolide

Started doing this with a sequence of joins and filters (which got to the solution quickly enough) and then realized that wasn't very "dynamic" of me... so went back and built a quick macro.  Fun challenge!

Spoiler
WorkflowWorkflow
Spoiler
MacroMacro
abacon
12 - Quasar

Really tough one but fun to figure out!

 

Spoiler
WorkflowWorkflowMacroMacro
olga_strubbe
11 - Bolide

Thank you, Gawa @gawa

This was a tough challenge but a really good one!

I leveraged the approach from @abacon  - thanks much for sharing it.  This approach seemed to me a fairly simple and straightforward one.  I realized the trick was to use Receiver as Sender for iteration to work in the end as the money had to return to the sender in a loop.  

Spoiler
Workflow: 
2025-09-10_14-57-50.png

Iterative macro:

iterative macro.png

balajilolla3
6 - Meteoroid
Spoiler
Solution Attached

Macro.pngMain Workflow.png
alineruizcampos
8 - Asteroid
Spoiler
Screenshot 2025-09-11 155141.pngScreenshot 2025-09-11 155148.png
Bobbyt23
13 - Pulsar

Really fun puzzle to solve, once I got my head round the logic.

Spoiler
image.pngimage.png
RolandSchubert
16 - Nebula
16 - Nebula
Spoiler
490.jpg