<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Versal</title>
    <description>The latest articles on Forem by Versal (@versal).</description>
    <link>https://forem.com/versal</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3818854%2F131f6dcd-8fe1-44ca-bcf0-2d2cc64f733c.png</url>
      <title>Forem: Versal</title>
      <link>https://forem.com/versal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/versal"/>
    <language>en</language>
    <item>
      <title>Just published a post on how graph intelligence can detect fraud in real time.

A transaction that looked completely clean turned out to be two hops away from a known fraud case — detected in under 50ms.

Checkout the post:</title>
      <dc:creator>Versal</dc:creator>
      <pubDate>Wed, 11 Mar 2026 18:46:32 +0000</pubDate>
      <link>https://forem.com/versal/just-published-a-post-on-how-graph-intelligence-can-detect-fraud-in-real-time-a-transaction-18f5</link>
      <guid>https://forem.com/versal/just-published-a-post-on-how-graph-intelligence-can-detect-fraud-in-real-time-a-transaction-18f5</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/versal" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3818854%2F131f6dcd-8fe1-44ca-bcf0-2d2cc64f733c.png" alt="versal"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/versal/the-fraud-that-was-two-hops-away-1dbp" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;The Fraud That Was Two Hops Away&lt;/h2&gt;
      &lt;h3&gt;Versal ・ Mar 11&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#fintech&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#neptune&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#graph&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#fraud&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>algorithms</category>
      <category>cybersecurity</category>
      <category>database</category>
      <category>security</category>
    </item>
    <item>
      <title>The Fraud That Was Two Hops Away</title>
      <dc:creator>Versal</dc:creator>
      <pubDate>Wed, 11 Mar 2026 18:38:30 +0000</pubDate>
      <link>https://forem.com/versal/the-fraud-that-was-two-hops-away-1dbp</link>
      <guid>https://forem.com/versal/the-fraud-that-was-two-hops-away-1dbp</guid>
      <description>&lt;p&gt;At 2:17 AM, a payment request hit our system.&lt;/p&gt;

&lt;p&gt;Everything looked clean.&lt;/p&gt;

&lt;p&gt;New phone number.&lt;br&gt;
New email.&lt;br&gt;
New card.&lt;/p&gt;

&lt;p&gt;Any normal fraud system would approve it instantly.&lt;/p&gt;

&lt;p&gt;Ours almost did too.&lt;/p&gt;

&lt;p&gt;But before the transaction completed, our graph engine performed a relationship traversal — and within &lt;strong&gt;50 milliseconds&lt;/strong&gt;, it uncovered something surprising.&lt;/p&gt;

&lt;p&gt;This “clean” transaction was secretly connected to a &lt;strong&gt;known fraud case through two hops&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And that’s when the transaction was blocked.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Problem With Traditional Fraud Systems
&lt;/h2&gt;

&lt;p&gt;Most fraud systems treat transactions like &lt;strong&gt;isolated events&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A payment comes in and we ask questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Has this card been reported before?&lt;/li&gt;
&lt;li&gt;Has this email been used in fraud?&lt;/li&gt;
&lt;li&gt;Is this phone number suspicious?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If everything looks new, the transaction usually passes.&lt;/p&gt;

&lt;p&gt;And fraudsters know this.&lt;/p&gt;

&lt;p&gt;So they don't reuse the &lt;strong&gt;exact same details&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead, they build &lt;strong&gt;networks&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;They reuse parts of their identity across different transactions — sometimes a phone number, sometimes an email, sometimes a device.&lt;/p&gt;

&lt;p&gt;Individually, these transactions look harmless.&lt;/p&gt;

&lt;p&gt;But together, they tell a different story.&lt;/p&gt;


&lt;h2&gt;
  
  
  Thinking in Relationships Instead of Rows
&lt;/h2&gt;

&lt;p&gt;To uncover these hidden connections, we started modeling transactions differently.&lt;/p&gt;

&lt;p&gt;Instead of storing everything in tables, we built a &lt;strong&gt;relationship graph&lt;/strong&gt; using &lt;strong&gt;Amazon Neptune&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In this system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every &lt;strong&gt;transaction&lt;/strong&gt; is a node&lt;/li&gt;
&lt;li&gt;Every &lt;strong&gt;entity&lt;/strong&gt; (phone, email, card, device) is also a node&lt;/li&gt;
&lt;li&gt;Relationships connect them&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So a transaction might look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;T1
├── Phone: P1
└── Email: E1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If another transaction uses the same phone number, it connects to the same node.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;P1
├── T1
└── T2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Over time, transactions stop being isolated records.&lt;/p&gt;

&lt;p&gt;They become part of a &lt;strong&gt;network of identities&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz2dku4z8il75pumclxvm.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz2dku4z8il75pumclxvm.jpeg" alt="Image" width="800" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Fraud rarely happens alone. It usually exists inside a network of relationships.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The First Fraud Case
&lt;/h2&gt;

&lt;p&gt;Let’s go back to the real example.&lt;/p&gt;

&lt;p&gt;A transaction &lt;strong&gt;T1&lt;/strong&gt; happened earlier.&lt;/p&gt;

&lt;p&gt;It used:&lt;/p&gt;

&lt;p&gt;Phone → &lt;strong&gt;P1&lt;/strong&gt;&lt;br&gt;
Email → &lt;strong&gt;E1&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Later, the customer reported it as fraud.&lt;/p&gt;

&lt;p&gt;So we marked &lt;strong&gt;T1 as fraudulent&lt;/strong&gt; in the graph.&lt;/p&gt;


&lt;h2&gt;
  
  
  A Suspicious But Allowed Transaction
&lt;/h2&gt;

&lt;p&gt;Later another transaction appeared.&lt;/p&gt;

&lt;p&gt;Transaction &lt;strong&gt;T2&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Phone → &lt;strong&gt;P1&lt;/strong&gt;&lt;br&gt;
Email → &lt;strong&gt;E2&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This shared the same phone number as the fraudulent transaction.&lt;/p&gt;

&lt;p&gt;But we didn't block it.&lt;/p&gt;

&lt;p&gt;Why?&lt;/p&gt;

&lt;p&gt;Because blocking everything with a &lt;strong&gt;single connection&lt;/strong&gt; can create too many false positives.&lt;/p&gt;

&lt;p&gt;So the system allowed it.&lt;/p&gt;

&lt;p&gt;But the graph remembered the relationship.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Transaction That Exposed the Network
&lt;/h2&gt;

&lt;p&gt;Now comes the interesting part.&lt;/p&gt;

&lt;p&gt;A third transaction arrived.&lt;/p&gt;

&lt;p&gt;Transaction &lt;strong&gt;T3&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Phone → &lt;strong&gt;P3&lt;/strong&gt;&lt;br&gt;
Email → &lt;strong&gt;E2&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At first glance, it looked completely unrelated to the fraud.&lt;/p&gt;

&lt;p&gt;Different phone.&lt;br&gt;
Different email from the fraud case.&lt;br&gt;
Different card.&lt;/p&gt;

&lt;p&gt;But the graph engine performed a traversal.&lt;/p&gt;

&lt;p&gt;And it found this path:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;T3 → E2 → T2 → P1 → T1 (Fraud)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;T3 was &lt;strong&gt;two hops away from a confirmed fraud transaction&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Works
&lt;/h2&gt;

&lt;p&gt;Fraudsters rarely operate using a single identity.&lt;/p&gt;

&lt;p&gt;They build &lt;strong&gt;fraud infrastructures&lt;/strong&gt; using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;burner phone numbers&lt;/li&gt;
&lt;li&gt;disposable emails&lt;/li&gt;
&lt;li&gt;shared devices&lt;/li&gt;
&lt;li&gt;mule accounts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each transaction may look legitimate on its own.&lt;/p&gt;

&lt;p&gt;But the &lt;strong&gt;network behind it tells the real story&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Graph intelligence lets us detect:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fraud rings&lt;/li&gt;
&lt;li&gt;shared infrastructure&lt;/li&gt;
&lt;li&gt;hidden identity connections&lt;/li&gt;
&lt;li&gt;multi-hop fraud relationships&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And it does this &lt;strong&gt;in milliseconds&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Real-Time Fraud Detection
&lt;/h2&gt;

&lt;p&gt;When a new transaction arrives:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It is inserted into the graph&lt;/li&gt;
&lt;li&gt;The system explores nearby relationships&lt;/li&gt;
&lt;li&gt;It checks if the transaction connects to known fraud patterns&lt;/li&gt;
&lt;li&gt;The decision happens &lt;strong&gt;before authorization&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All of this happens in about &lt;strong&gt;50ms&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Fast enough to stop fraud &lt;strong&gt;before the payment completes&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;Fraud isn't just about suspicious transactions.&lt;/p&gt;

&lt;p&gt;It's about &lt;strong&gt;suspicious relationships&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The most dangerous transaction isn't always the one directly linked to fraud.&lt;/p&gt;

&lt;p&gt;Sometimes it's the one &lt;strong&gt;two hops away&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And unless you're looking at the network, you'll never see it.&lt;/p&gt;

</description>
      <category>fintech</category>
      <category>neptune</category>
      <category>graph</category>
      <category>fraud</category>
    </item>
  </channel>
</rss>
