<?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: Siddhartha Devineni</title>
    <description>The latest articles on Forem by Siddhartha Devineni (@siddhartha_devineni_896e9).</description>
    <link>https://forem.com/siddhartha_devineni_896e9</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%2F3584164%2F26c9591b-fa6e-47bc-b501-c7238e5ae58e.png</url>
      <title>Forem: Siddhartha Devineni</title>
      <link>https://forem.com/siddhartha_devineni_896e9</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/siddhartha_devineni_896e9"/>
    <language>en</language>
    <item>
      <title>Kafka Streams Make AI Agents Fraud Detection Smarter</title>
      <dc:creator>Siddhartha Devineni</dc:creator>
      <pubDate>Tue, 28 Oct 2025 11:28:04 +0000</pubDate>
      <link>https://forem.com/siddhartha_devineni_896e9/kafka-streams-make-ai-agents-fraud-detection-smarter-24c1</link>
      <guid>https://forem.com/siddhartha_devineni_896e9/kafka-streams-make-ai-agents-fraud-detection-smarter-24c1</guid>
      <description>&lt;p&gt;How real-time streaming context transformed isolated AI agents into an intelligent fraud-fighting ensemble:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The $100 Transaction That Looked Normal (Until It Wasn’t):&lt;/strong&gt;&lt;br&gt;
A customer just made a $100 purchase. Looks normal, right?&lt;/p&gt;

&lt;p&gt;Traditional fraud detection systems analyze this transaction in isolation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amount: $100 (reasonable)&lt;/li&gt;
&lt;li&gt;Merchant: Familiar category&lt;/li&gt;
&lt;li&gt;Location: Customer’s home city&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Decision: Approve.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But here’s what they missed:&lt;/p&gt;

&lt;p&gt;This was the customer’s &lt;strong&gt;15th transaction in 3 minutes.&lt;/strong&gt; Their average? 2 transactions per week. The previous 14 were all $5-$10 purchases at different online merchants — classic card testing before the big hit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is the blind spot of isolated transaction analysis.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  The Real Problem: AI Without Context is Just Guessing
&lt;/h2&gt;

&lt;p&gt;After working with fraud detection systems, I realized the core issue: &lt;strong&gt;LLMs analyze transactions like doctors examining symptoms without patient history.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine telling your doctor: “I have chest pain.”&lt;/p&gt;

&lt;p&gt;Without knowing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your medical history&lt;/li&gt;
&lt;li&gt;Recent vital signs&lt;/li&gt;
&lt;li&gt;Changes over time&lt;/li&gt;
&lt;li&gt;Concurrent symptoms
They’re just guessing. The same applies to fraud detection.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;But what if AI agents could see the full picture in real-time?&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Enter: Streaming Intelligence
&lt;/h2&gt;

&lt;p&gt;I built a system where &lt;strong&gt;Kafka Streams enriches AI agents with real-time context&lt;/strong&gt; before they analyze anything.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Architecture:
&lt;/h2&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%2Fsj1s8eg5sj5n8olzhkpq.png" 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%2Fsj1s8eg5sj5n8olzhkpq.png" alt="architecture explanation"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The key innovation:&lt;/strong&gt; Instead of sending raw transactions to AI, Kafka Streams pre-processes them with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Velocity context:&lt;/strong&gt; Transaction count in the last 5 minutes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customer baseline:&lt;/strong&gt; Average amount, risk level, preferred categories&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Behavioral delta:&lt;/strong&gt; How much this deviates from normal&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now agents aren’t guessing because they have intelligence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Would streaming context actually make a difference?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I simulated a card testing attack: 15 rapid $10 transactions followed by a $500 hit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Without Streaming Context:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Transaction #15: $500 purchase&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Analysis: “Unusual amount for merchant category”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Risk Score: 0.45 (below threshold)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Decision: APPROVED&lt;/p&gt;

&lt;p&gt;The system saw an expensive transaction but missed the pattern.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;With Streaming Context:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Transaction #15: $500 purchase&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Velocity: 15 transactions in 3 minutes (customer avg: 2/week)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Amount delta: 10x customer average&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pattern: Progressive testing ($10 → $50 → $100 → $500)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;BehaviorAnalyst: “Extreme velocity spike — automated behavior”
&lt;/li&gt;
&lt;li&gt;PatternDetector: “Classic card testing progression detected”
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;TemporalAnalyst: “Transactions every 12 seconds — scripted”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Risk Score: 0.92 (with streaming intelligence bonus)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Confidence: 99% &lt;br&gt;
Decision: FRAUD DETECTED&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The streaming context was the difference between missing fraud and catching it with certainty.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Technical Deep Dive: How It Works
&lt;/h2&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%2F4y3h2l9txhe89a7qgyec.png" 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%2F4y3h2l9txhe89a7qgyec.png" alt="Arcitecture Flowchart"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 1: Kafka Streams Enrichment&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Join transactions with customer profiles (KTable)&lt;/span&gt;
&lt;span class="nc"&gt;KStream&lt;/span&gt; &lt;span class="n"&gt;enrichedStream&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 
    &lt;span class="n"&gt;transactionStream&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;join&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;customerProfileTable&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
        &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;transaction&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;profile&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; 
            &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;EnrichedTransaction&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;transaction&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;profile&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Calculate velocity with tumbling windows&lt;/span&gt;
&lt;span class="nc"&gt;KTable&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Windowed&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Long&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;velocityCounts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 
    &lt;span class="n"&gt;transactionStream&lt;/span&gt;
        &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;groupByKey&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
        &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;windowedBy&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;TimeWindows&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ofSizeWithNoGrace&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Duration&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ofMinutes&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;)))&lt;/span&gt;
        &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;count&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// Combine for full streaming context&lt;/span&gt;
&lt;span class="n"&gt;enrichedStream&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;join&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;velocityCounts&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;StreamingContext:&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;create&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Velocity calculated in &lt;strong&gt;real-time&lt;/strong&gt; (not batch ETL)&lt;/li&gt;
&lt;li&gt;Customer profiles as &lt;strong&gt;KTables&lt;/strong&gt; (latest state always available)&lt;/li&gt;
&lt;li&gt;Exactly-once semantics (no duplicates in fraud detection)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Layer 2: Multi-Agent Analysis&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Each agent gets a &lt;strong&gt;streaming-enhanced prompt:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;STREAMING INTELLIGENCE:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customer baseline: $47.23 average, 2.1 transactions/week&lt;/li&gt;
&lt;li&gt;Current velocity: 9 transactions in last 5 minutes&lt;/li&gt;
&lt;li&gt;Behavioral delta: 450% above average&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;TRANSACTION:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amount: $2,500&lt;/li&gt;
&lt;li&gt;Merchant: Electronics store&lt;/li&gt;
&lt;li&gt;Location: Chicago, IL&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Analyze this with streaming context…&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Five specialists analyze in parallel:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;BehaviorAnalyst:&lt;/strong&gt; “9 transactions in 5 min vs baseline 2/week = automated attack”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;PatternDetector:&lt;/strong&gt; “Progressive amounts match card testing signature”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;GeographicAnalyst:&lt;/strong&gt; “Location consistent, but velocity suggests takeover”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;RiskAssessor:&lt;/strong&gt; “$2,500 is 53x customer average — high financial risk”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;TemporalAnalyst:&lt;/strong&gt; “Transactions exactly 33 seconds apart — scripted”&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Intelligent Consensus:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Calculate base risk score (weighted voting)&lt;/span&gt;
&lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;baseRiskScore&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;calculateWeightedRiskScore&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;agentInsights&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Apply streaming intelligence bonus&lt;/span&gt;
&lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;streamingBonus&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.0&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;streamingContext&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;velocityCount&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;streamingBonus&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mf"&gt;0.25&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// High velocity&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;amountDelta&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mf"&gt;3.0&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;streamingBonus&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mf"&gt;0.20&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Unusual amount&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;finalRisk&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;baseRiskScore&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;streamingBonus&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;The streaming bonus is crucial:&lt;/strong&gt; It amplifies risk when behavioral patterns deviate significantly, even if individual agents are uncertain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 3: Intelligent Routing&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Route based on confidence and risk&lt;/span&gt;
&lt;span class="n"&gt;enrichedDecisionStream&lt;/span&gt;
 &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;split&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
 &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;branch&lt;/span&gt;&lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;decision&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; 
   &lt;span class="n"&gt;decision&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;isFraudulent&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;decision&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;confidenceScore&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mf"&gt;0.8&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
   &lt;span class="nc"&gt;Branched&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;withConsumer&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ks&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;ks&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;to&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"fraud-alerts"&lt;/span&gt;&lt;span class="o"&gt;)))&lt;/span&gt;
&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;branch&lt;/span&gt;&lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;decision&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; 
   &lt;span class="n"&gt;decision&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;isFraudulent&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;decision&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;requiresManualReview&lt;/span&gt;&lt;span class="o"&gt;(),&lt;/span&gt; 
   &lt;span class="nc"&gt;Branched&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;withConsumer&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ks&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;ks&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;to&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"human-review"&lt;/span&gt;&lt;span class="o"&gt;)))&lt;/span&gt;
&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;defaultBranch&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Branched&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;withConsumer&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ks&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; 
   &lt;span class="n"&gt;ks&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;to&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"approved-transactions"&lt;/span&gt;&lt;span class="o"&gt;)));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Layer 1 (Enrichment):&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Kafka Streams enriches every transaction with real-time velocity and  customer baseline before AI sees it. This is the secret sauce — AI never analyzes blind.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Layer 2 (Multi-Agent):&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Five specialized agents analyze in parallel using CompletableFuture, then the coordinator synthesizes their insights with weighted voting plus a streaming intelligence bonus for high velocity or unusual amounts.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Layer 3 (Routing):&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Instead of dumping everything into a review queue, we intelligently route based on confidence. High-confidence fraud gets auto-blocked immediately. Uncertain cases go to analysts. This optimizes both automated blocking and human analyst time.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Real Detection Examples
&lt;/h2&gt;

&lt;p&gt;The system routes transactions based on &lt;strong&gt;AI confidence and fraud determination&lt;/strong&gt;, demonstrating intelligent decision-making across the entire risk spectrum:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;High-Confidence Fraud Alert&lt;/strong&gt;: &lt;strong&gt;IMMEDIATE AUTO-BLOCK&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Routed to &lt;code&gt;fraud-alerts&lt;/code&gt; topic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Customer Profile&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"customerId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"CUST-001"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"averageTransactionAmount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;253&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dailySpendingLimit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;4064&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"transactionCategories"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"GROCERY"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"RETAIL"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"primaryLocation"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Los Angeles"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"riskLevel"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"LOW"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Transaction Summary&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"transactionId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"TXN-RAPID-43a7220a"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"customerId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"CUST-001"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"amount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;54&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"currency"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"USD"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"merchantId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"MERCHANT-SUSPICIOUS-5"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"merchantCategory"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ONLINE"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"location"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Unknown Location"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"timestamp"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2025-10-12T17:48:44"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"metadata"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"rapidFire"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"channel"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ONLINE"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"deviceId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"BOT-DEVICE-3"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"sequence"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;AI Agent Analysis (5 agents + streaming intelligence)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 1: Individual Streaming-Enhanced Analysis&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Agent&lt;/th&gt;
&lt;th&gt;Risk Score&lt;/th&gt;
&lt;th&gt;Key Finding&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;BehaviorAnalyst&lt;/td&gt;
&lt;td&gt;85%&lt;/td&gt;
&lt;td&gt;High velocity (9 txns/5min) highly unusual for LOW-risk customer. Small amounts may be detection avoidance tactic.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PatternDetector&lt;/td&gt;
&lt;td&gt;85%&lt;/td&gt;
&lt;td&gt;Matches card testing attack pattern: rapid transactions + small amounts + suspicious merchant.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RiskAssessor&lt;/td&gt;
&lt;td&gt;64%&lt;/td&gt;
&lt;td&gt;Velocity multiplier (1.5x) + suspicious merchant category increases risk despite low amount.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GeographicAnalyst&lt;/td&gt;
&lt;td&gt;85%&lt;/td&gt;
&lt;td&gt;Geographic impossibility: 9 transactions from different locations in 5 min = physically impossible travel. Unknown location suggests VPN/proxy.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TemporalAnalyst&lt;/td&gt;
&lt;td&gt;70%&lt;/td&gt;
&lt;td&gt;High transaction volume in short timeframe indicates automated script activity.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Phase 2: Collaborative Insights&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After agents debated findings:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pattern + Temporal collaboration:&lt;/strong&gt; High velocity + suspicious merchant = automated attack pattern&lt;br&gt;
&lt;strong&gt;Behavior + Risk collaboration:&lt;/strong&gt; Low-risk customer + unusual velocity = compromised account&lt;br&gt;
&lt;strong&gt;Streaming Consensus:&lt;/strong&gt; All factors combined indicate coordinated automated attack&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Decision&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"AI_FRAUD_ALERT"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"transactionId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"TXN-RAPID-43a7220a"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"confidence"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"priority"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"HIGH"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"finalRiskScore"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"99.4%"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"decision"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"FRAUD DETECTED"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"reason"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"AI agents with streaming intelligence detected fraud"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"intelligenceSources"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"Real-time velocity (9 txns/5min)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"Customer baseline deviation"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"Geographic impossibility"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"Attack pattern matching"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Why was This Auto-Blocked?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clear Attack Indicators:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Velocity Intelligence: 9 rapid transactions = 3x velocity threshold&lt;/li&gt;
&lt;li&gt;Geographic Impossibility: Multiple locations in minutes (physically impossible)&lt;/li&gt;
&lt;li&gt;Pattern Match: Small amounts + high velocity = classic card testing&lt;/li&gt;
&lt;li&gt;Agent Consensus: All 5 agents agreed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Final Risk Score: 99.4% (well above 80% threshold)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Streaming Context Enhanced Decision:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Traditional AI: Would see isolated $54 transaction (might approve)&lt;/li&gt;
&lt;li&gt;The agentic fraud engine: Kafka streams provided velocity plus baseline context → detected attack&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Result: Immediate block, no human review needed&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Streaming Context Detected&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;HIGH VELOCITY ALERT: 9 transactions in 5 minutes&lt;br&gt;
Customer Baseline: $253 average, LOW risk tier&lt;br&gt;
Merchant: Suspicious category (ONLINE)&lt;br&gt;
Location: Unknown (potential VPN/proxy)&lt;br&gt;
Amount: $54 (below average - card testing indicator)&lt;/p&gt;
&lt;h2&gt;
  
  
  What I Learned Building This
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Context is King&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Raw LLMs analyzing isolated data = mediocre results. &lt;br&gt;
Streaming context makes AI smarter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Multi-Agent &amp;gt; Single Agent&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One agent might miss patterns, but the five specialists with weighted voting catch nuanced fraud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Kafka Streams for real-time context feed&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Kafka Streams is simpler, faster, and perfect for real-time AI enrichment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Intelligent Routing Matters&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not all fraud is equal. Routing high-confidence cases to auto-block and uncertain ones to humans optimizes analyst time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Local LLMs are Production-Ready&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Llama 3.1 8B via Ollama performed surprisingly well and it will be faster than a cloud-based model. But your hardware has to support it.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Code: Try It Yourself
&lt;/h2&gt;

&lt;p&gt;The entire system is open source. One-click demo in GitHub Codespaces -no API key required.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tech Stack:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Java 21 + Spring Boot 3.4&lt;/li&gt;
&lt;li&gt;Kafka Streams&lt;/li&gt;
&lt;li&gt;Spring AI (Groq API or local Ollama)&lt;/li&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Architecture Highlights:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Exactly-once processing (critical for financial data)&lt;/li&gt;
&lt;li&gt;Parallel agent execution (CompletableFuture)&lt;/li&gt;
&lt;li&gt;Tumbling windows for velocity (5-minute windows)&lt;/li&gt;
&lt;li&gt;Customer profile KTables (always up-to-date)&lt;/li&gt;
&lt;li&gt;5 custom AI agents with weighted consensus (fraud decisions)&lt;/li&gt;
&lt;li&gt;Intelligent routing with confidence thresholds (branching to topics)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Real-World Applications
&lt;/h2&gt;

&lt;p&gt;This architecture isn’t just academic. Here’s where it fits:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Financial Services&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Credit card fraud detection&lt;/li&gt;
&lt;li&gt;Wire transfer monitoring&lt;/li&gt;
&lt;li&gt;Account takeover prevention&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. E-commerce&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Checkout fraud&lt;/li&gt;
&lt;li&gt;Coupon abuse detection&lt;/li&gt;
&lt;li&gt;Bot attack identification&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Gaming&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cheat detection&lt;/li&gt;
&lt;li&gt;Account sharing identification&lt;/li&gt;
&lt;li&gt;Virtual economy fraud&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Insurance&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Claims fraud detection&lt;/li&gt;
&lt;li&gt;Application fraud screening&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The pattern is universal: Any domain where real-time behavioral context enhances AI decisions.&lt;/p&gt;
&lt;h2&gt;
  
  
  What’s Next?
&lt;/h2&gt;

&lt;p&gt;This is v1.0. Here’s what I’m considering for v2.0:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Feedback Loop&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Currently, agents store analyst feedback but don’t retrain. Next: aggregate feedback and periodically adjust agent prompts or weights based on historical accuracy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Agent Experimentation Framework&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A/B test different agent configurations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which agents should have higher weights?&lt;/li&gt;
&lt;li&gt;Weighted voting vs. unanimous agreement?&lt;/li&gt;
&lt;li&gt;Let data decide.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Additional Agents&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Device Fingerprinting Agent: Detect account takeover via device inconsistencies&lt;/li&gt;
&lt;li&gt;Network Analysis Agent: Identify fraud rings using graph analysis&lt;/li&gt;
&lt;li&gt;Merchant Risk Agent: Real-time merchant reputation scoring&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Production Deployment&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kubernetes with Strimzi (Kafka operator)&lt;/li&gt;
&lt;li&gt;Grafana dashboards for agent performance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5. Advanced Streaming Features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multiple velocity windows (1-min, 5-min, 1-hour)&lt;/li&gt;
&lt;li&gt;Streaming joins with external risk data (IP reputation, device intelligence)&lt;/li&gt;
&lt;li&gt;Cross-customer pattern detection (fraud rings)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  The Bigger Picture: Streaming + AI
&lt;/h2&gt;

&lt;p&gt;This project taught me something bigger than fraud detection:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The future of AI applications is streaming-first.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We’re moving from: Batch → Model → Decision (yesterday’s data)&lt;/p&gt;

&lt;p&gt;To:&lt;/p&gt;

&lt;p&gt;Stream → Context → AI → Decision (now’s data)&lt;/p&gt;

&lt;p&gt;LLMs are powerful but blind without context. Streaming pipelines provide that context in real-time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kafka + AI isn’t just a tech combo — it’s a paradigm shift.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Try It, Break It, Fork It
&lt;/h2&gt;

&lt;p&gt;The repo is MIT licensed. Feel free to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learn from the architecture&lt;/li&gt;
&lt;li&gt;Adapt for your use case&lt;/li&gt;
&lt;li&gt;Contribute improvements&lt;/li&gt;
&lt;li&gt;Use in production (though test thoroughly!)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/siddharthaDevineni" rel="noopener noreferrer"&gt;
        siddharthaDevineni
      &lt;/a&gt; / &lt;a href="https://github.com/siddharthaDevineni/agentic-fraud-engine" rel="noopener noreferrer"&gt;
        agentic-fraud-engine
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Multi-agent AI fraud detection with Kafka streaming intelligence, makes decision smarter than tradititonal transaction analysis.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;Agentic Fraud Engine&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Intelligent Fraud Detection where AI Agents get Smarter with Kafka Streaming Context&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is an &lt;strong&gt;Agentic Fraud Detection Engine&lt;/strong&gt; that combines multi-agent AI with Kafka Streams real-time intelligence
The system uses 5 specialized AI agents working in parallel to detect fraud patterns enhanced by streaming context (
velocity, customer profiles, location data).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Key Innovation&lt;/strong&gt;: Kafka streams enrich AI agents with real-time context before analysis, making decisions smarter than
traditional isolated transaction analysis
Fraud detection system combining:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Agent AI&lt;/strong&gt; - 5 specialized fraud detection agents collaboration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streaming Intelligence&lt;/strong&gt; - Real-time Kafka context enhances AI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Intelligent Routing&lt;/strong&gt; - Dynamic decision flows based on confidence&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learning Loops&lt;/strong&gt; - Continuous improvement from analyst feedback&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;See It In Action&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Watch 5 AI agents detect a high-velocity attack in real-time with Kafka streaming context.&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/siddharthaDevineni/agentic-fraud-engine/docs/demo_video_with_captions-gif.gif"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FsiddharthaDevineni%2Fagentic-fraud-engine%2Fdocs%2Fdemo_video_with_captions-gif.gif" alt="Demo video"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Shows: Kafka streams processing → AI agents analyzing → Fraud detection (90% confidence)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Watch the full video on&lt;/h2&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/siddharthaDevineni/agentic-fraud-engine" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;p&gt;&lt;strong&gt;If this helped you, give it a ⭐ on GitHub!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It’s a portfolio project, but also a real demonstration of where I think fraud detection (and AI systems generally) should go.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thanks for reading! If you found this valuable, share it with your network. Let’s build smarter AI systems together.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;More in-depth technical details about this system are available at: [github.com/siddharthaDevineni/agentic-fraud-engine]&lt;/p&gt;

&lt;p&gt;Built with ❤️ for the Kafka + AI community&lt;/p&gt;

</description>
      <category>kafka</category>
      <category>ai</category>
      <category>agents</category>
      <category>frauddetection</category>
    </item>
  </channel>
</rss>
