There's Reactor[1] from ChainAlysis but that's not available to the public, and it's way too complicated. Is it what you're trying to build? Would one be able to find the connection even if the funds moved through exchanges, services, mixers, etc. as is the case with this tool?
[1]
https://www.chainalysis.com/chainalysis-reactor/Once coins are sent to exchanges, they become disconnected from each other unless there is access to the exchange log. I don't see a solution to this problem ATM.
However, this service(which we already has coded part of it) aims to identify the relationship between two addresses or transaction IDs, and is going to target coins moved through mixers and similar services.
Again, it's the question on how you can find the relationships between two addresses?
If someone uses a mixer then everything is obfuscated, that's how mixer is design, so it will be interesting, if you have coded a way to find the connection between input and output addresses.
Probably I couldn't explain what I meant by "covering mixers". We can't follow the exact sats for sure! And we don't have such solution. What I meant was we can connect addresses through UTXOs shown in transactions, for example address A is connected to address B through one[tx1,tx2,tx3,txn] or many paths
in other words, address A was found in tx1, and later down the road the address B was found in txn. I hope this explains what exactly what we have in mind.