<?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>DEV Community: Aman Ayubkhan Pathan</title>
    <description>The latest articles on DEV Community by Aman Ayubkhan Pathan (@aman_ayubkhanpathan_1c06).</description>
    <link>https://dev.to/aman_ayubkhanpathan_1c06</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4140394%2Fc0f3fd0f-3873-4daf-8fdf-d2fb9d8c6226.jpg</url>
      <title>DEV Community: Aman Ayubkhan Pathan</title>
      <link>https://dev.to/aman_ayubkhanpathan_1c06</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aman_ayubkhanpathan_1c06"/>
    <language>en</language>
    <item>
      <title>FraudNet: Building an Autonomous, Graph-Native Fraud Investigation Agent with TigerGraph, MCP, and GraphRAG</title>
      <dc:creator>Aman Ayubkhan Pathan</dc:creator>
      <pubDate>Thu, 24 Sep 2026 17:18:03 +0000</pubDate>
      <link>https://dev.to/aman_ayubkhanpathan_1c06/fraudnet-building-an-autonomous-graph-native-fraud-investigation-agent-with-tigergraph-mcp-and-1h7i</link>
      <guid>https://dev.to/aman_ayubkhanpathan_1c06/fraudnet-building-an-autonomous-graph-native-fraud-investigation-agent-with-tigergraph-mcp-and-1h7i</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Hacker House Goa 2026 — TigerGraph Agentic Fraud Investigation Challenge&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What happens after a fraud detection model flags a transaction?&lt;/p&gt;

&lt;p&gt;Usually, not much automation.&lt;/p&gt;

&lt;p&gt;A model might produce something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Transaction: 3514030
Risk Score: 0.61
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But a risk score isn't a fraud verdict.&lt;/p&gt;

&lt;p&gt;An analyst still needs to investigate the transaction, understand the customer's history, identify connected cards and devices, look for similar historical cases, evaluate applicable policies, determine whether additional evidence is required, and finally decide what action should be taken.&lt;/p&gt;

&lt;p&gt;That investigation can involve dozens of queries across multiple systems and can take significant analyst time.&lt;/p&gt;

&lt;p&gt;We built &lt;strong&gt;FraudNet&lt;/strong&gt; to explore a different approach:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What if a fraud risk score became the starting point for an autonomous investigation rather than the end of a machine-learning pipeline?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;FraudNet combines &lt;strong&gt;TigerGraph, TigerGraph MCP, GraphRAG, LLM reasoning, deterministic policy enforcement, and case memory&lt;/strong&gt; into an agentic fraud investigation workflow.&lt;/p&gt;

&lt;p&gt;The result is a system that can investigate a suspicious transaction, gather multi-hop graph evidence, identify uncertainty, request additional evidence when necessary, enforce deterministic policies, and write completed investigations back into the graph as organizational memory.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The Problem: A Risk Score Isn't an Investigation
&lt;/h2&gt;

&lt;p&gt;Traditional fraud systems are generally good at answering:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"How suspicious is this transaction?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;They are much less capable of answering:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Why is this transaction suspicious, what is it connected to, what evidence supports that conclusion, what policies apply, and what should happen next?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Consider a transaction with a moderately high risk score.&lt;/p&gt;

&lt;p&gt;An analyst might need to investigate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Previous transactions from the card&lt;/li&gt;
&lt;li&gt;Customer travel history&lt;/li&gt;
&lt;li&gt;Other cards belonging to the customer&lt;/li&gt;
&lt;li&gt;Devices used by those cards&lt;/li&gt;
&lt;li&gt;IP addresses and device fingerprints&lt;/li&gt;
&lt;li&gt;Other transactions associated with the same device&lt;/li&gt;
&lt;li&gt;Historical fraud cases&lt;/li&gt;
&lt;li&gt;Known fraud typologies&lt;/li&gt;
&lt;li&gt;Internal bank policies&lt;/li&gt;
&lt;li&gt;Regulatory reporting requirements&lt;/li&gt;
&lt;li&gt;Aggregate exposure across connected entities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The interesting part is that these aren't isolated pieces of information.&lt;/p&gt;

&lt;p&gt;They form a &lt;strong&gt;relationship graph&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Customer
   │
   └── OWNS
        │
       Card
        │
       MADE
        │
    Transaction
        │
   FROM_DEVICE
        │
      Device
        │
   FROM_DEVICE
        │
  Other Transaction
        │
       MADE
        │
    Other Card
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A suspicious transaction may become significantly more meaningful when the graph reveals that its device is shared by dozens of unrelated payment cards.&lt;/p&gt;

&lt;p&gt;This is where FraudNet starts.&lt;/p&gt;




&lt;h1&gt;
  
  
  2. What We Built
&lt;/h1&gt;

&lt;p&gt;FraudNet is an autonomous fraud investigation workstation built around a graph-native architecture.&lt;/p&gt;

&lt;p&gt;At a high level:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Case Trigger
(case_pack.csv)
     │
     ▼
┌───────────────────────────────┐
│ Investigation Workflow        │
│ 12-stage deterministic graph  │
└──────────────┬────────────────┘
               │
       ┌───────┼────────┐
       │       │        │
       ▼       ▼        ▼
  TigerGraph GraphRAG   LLM
       │       │        │
       │       │        └── Evidence synthesis
       │       │            Uncertainty assessment
       │       │            Fraud probability
       │       │
       │       ├── Policies
       │       ├── Typologies
       │       └── Case Memory
       │
       └── Multi-hop evidence
               │
               ▼
       Evidence Request Loop
               │
               ▼
       Deterministic PolicyEngine
               │
        ┌──────┴──────┐
        ▼             ▼
    Final Action    SAR Filing
        │
        ▼
     TigerGraph
      Writeback
        │
        ▼
    Case Memory
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important architectural principle is the separation of responsibilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;TigerGraph&lt;/strong&gt; provides relationship-grounded evidence.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GraphRAG&lt;/strong&gt; provides contextual knowledge.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The LLM&lt;/strong&gt; performs reasoning and synthesis.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The PolicyEngine&lt;/strong&gt; controls consequential actions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This prevents the LLM from becoming the final authority.&lt;/p&gt;




&lt;h1&gt;
  
  
  3. Why a Graph?
&lt;/h1&gt;

&lt;p&gt;Fraud is fundamentally relational.&lt;/p&gt;

&lt;p&gt;Suppose we have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Card A → Device X
Card B → Device X
Card C → Device X
...
Card AH → Device X
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A transaction-level model might see each transaction independently.&lt;/p&gt;

&lt;p&gt;A graph can immediately expose the relationship:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;             ┌── Card A
             │
             ├── Card B
             │
             ├── Card C
             │
Device X ────┼── ...
             │
             └── Card AH
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That relationship can become a powerful investigation signal.&lt;/p&gt;

&lt;p&gt;FraudNet uses TigerGraph to traverse relationships such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Customer
   ↓
Card
   ↓
Transaction
   ↓
Device
   ↓
Other Transactions
   ↓
Other Cards
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This allows the investigation agent to reason about &lt;strong&gt;connected entities rather than isolated rows&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  4. TigerGraph: The Investigation Evidence Layer
&lt;/h1&gt;

&lt;p&gt;The FraudNet graph runs on a live TigerGraph Cloud instance.&lt;/p&gt;

&lt;p&gt;The graph contains entities such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customers&lt;/li&gt;
&lt;li&gt;Cards&lt;/li&gt;
&lt;li&gt;Transactions&lt;/li&gt;
&lt;li&gt;Devices&lt;/li&gt;
&lt;li&gt;Historical cases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and their relationships.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Customer ──OWNS────────&amp;gt; Card
Card ──MADE────────────&amp;gt; Transaction
Transaction ──FROM_DEVICE──&amp;gt; Device
Card ──HAS_HISTORY─────&amp;gt; Transaction
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This allows FraudNet to perform investigation-specific graph traversals.&lt;/p&gt;

&lt;p&gt;Some of the primary graph operations include:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;get_transaction_context
get_card_history
get_customer_history
get_connected_cards
get_device_neighbors
get_transaction_chain
get_similar_closed_cases
detect_card_testing
write_case
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One particularly useful operation is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;get_device_neighbors
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of asking an LLM to inspect thousands of transaction records and infer relationships, TigerGraph can directly answer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What other cards and transactions are connected to this device?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The graph does the relationship discovery.&lt;/p&gt;

&lt;p&gt;The LLM then interprets the result.&lt;/p&gt;

&lt;p&gt;That distinction is important.&lt;/p&gt;




&lt;h1&gt;
  
  
  5. TigerGraph MCP: Giving the Agent Controlled Graph Access
&lt;/h1&gt;

&lt;p&gt;We didn't want the LLM generating arbitrary GSQL.&lt;/p&gt;

&lt;p&gt;That would introduce unnecessary risks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Invalid queries&lt;/li&gt;
&lt;li&gt;Uncontrolled database access&lt;/li&gt;
&lt;li&gt;Large context responses&lt;/li&gt;
&lt;li&gt;Accidental mutations&lt;/li&gt;
&lt;li&gt;Credential exposure&lt;/li&gt;
&lt;li&gt;Difficult-to-audit behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead, FraudNet uses the official &lt;strong&gt;TigerGraph MCP package (&lt;code&gt;tigergraph-mcp&lt;/code&gt; v1.0.3)&lt;/strong&gt; as the interface between the reasoning layer and TigerGraph.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LLM
 │
 │ MCP tool call
 ▼
TigerGraph MCP
 │
 ▼
Typed investigation operation
 │
 ▼
TigerGraph
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent can request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;get_device_neighbors(device_id)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;rather than generating arbitrary database queries.&lt;/p&gt;

&lt;p&gt;This gives us three major benefits.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Controlled Access
&lt;/h3&gt;

&lt;p&gt;The LLM only has access to explicitly exposed investigation capabilities.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Smaller Context
&lt;/h3&gt;

&lt;p&gt;The MCP layer can return structured investigation results rather than dumping entire graph neighborhoods into the model context.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Better Security Boundaries
&lt;/h3&gt;

&lt;p&gt;Credentials and bearer tokens remain isolated inside the adapter layer rather than becoming part of the reasoning context.&lt;/p&gt;

&lt;p&gt;The LLM reasons about the &lt;strong&gt;result&lt;/strong&gt;, not the database implementation.&lt;/p&gt;




&lt;h1&gt;
  
  
  6. GraphRAG: Connecting Graph Evidence With Institutional Knowledge
&lt;/h1&gt;

&lt;p&gt;Graph evidence alone isn't enough.&lt;/p&gt;

&lt;p&gt;An investigator also needs context:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What does this fraud pattern mean?&lt;/li&gt;
&lt;li&gt;What policy applies?&lt;/li&gt;
&lt;li&gt;Has the organization seen similar cases?&lt;/li&gt;
&lt;li&gt;What action was taken previously?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;FraudNet therefore uses a GraphRAG layer containing three major knowledge collections.&lt;/p&gt;

&lt;h2&gt;
  
  
  Policy Knowledge
&lt;/h2&gt;

&lt;p&gt;Bank operating policies covering:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;R1 – R10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These include approval thresholds, escalation requirements, and regulatory triggers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fraud Typologies
&lt;/h2&gt;

&lt;p&gt;FraudNet includes documented patterns such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;card_testing
card_not_present_fraud
card_not_present_new_device
out_of_region_use
account_takeover
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It also supports guidance for undocumented abuse patterns.&lt;/p&gt;

&lt;h2&gt;
  
  
  Historical Case Memory
&lt;/h2&gt;

&lt;p&gt;The system includes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;5,565 historical closed cases
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;from:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;closed_cases_history.csv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Retrieved information is tagged with its provenance:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;policy
typology
case_memory
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This means the reasoning layer knows where its contextual information came from.&lt;/p&gt;




&lt;h1&gt;
  
  
  7. The 12-Stage Agentic Workflow
&lt;/h1&gt;

&lt;p&gt;The core investigation logic lives in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;src/agent/workflow.py
src/agent/nodes.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The workflow consists of 12 stages.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. &lt;code&gt;load_case&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Loads the investigation trigger from &lt;code&gt;case_pack.csv&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The trigger can originate from a risk score, analyst request, or customer report.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. &lt;code&gt;investigate_transaction&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Retrieves transaction context, risk signals, and relevant transaction attributes.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. &lt;code&gt;investigate_relationships&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Traverses customer history, card history, connected cards, and device relationships.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. &lt;code&gt;retrieve_prior_cases&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Searches historical closed investigations for similar patterns.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. &lt;code&gt;assess_evidence&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;The LLM synthesizes the collected evidence into structured findings.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. &lt;code&gt;assess_uncertainty&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;The agent determines whether the current evidence is sufficient or whether ambiguity remains.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. &lt;code&gt;request_evidence&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;If uncertainty is unresolved, the agent generates an appropriate evidence request.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. &lt;code&gt;reassess_case&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;New evidence is incorporated and the investigation is reassessed.&lt;/p&gt;

&lt;h3&gt;
  
  
  9. &lt;code&gt;apply_policy&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;The deterministic PolicyEngine evaluates the investigation against institutional rules.&lt;/p&gt;

&lt;h3&gt;
  
  
  10. &lt;code&gt;prepare_case&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;The system prepares the final case package, including reporting and approval requirements.&lt;/p&gt;

&lt;h3&gt;
  
  
  11. &lt;code&gt;write_case&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;The completed investigation is persisted back into TigerGraph.&lt;/p&gt;

&lt;h3&gt;
  
  
  12. &lt;code&gt;finish&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;The system produces the final benchmark-compliant JSON output.&lt;/p&gt;

&lt;p&gt;The result is not simply:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LLM → answer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Trigger
  ↓
Graph Investigation
  ↓
Historical Context
  ↓
LLM Evidence Synthesis
  ↓
Uncertainty
  ↓
Additional Evidence (if needed)
  ↓
Policy Enforcement
  ↓
Case Writeback
  ↓
Final Output
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  8. The Important Part: Uncertainty
&lt;/h1&gt;

&lt;p&gt;One of the design decisions we cared about most was avoiding premature conclusions.&lt;/p&gt;

&lt;p&gt;A suspicious signal doesn't necessarily mean fraud.&lt;/p&gt;

&lt;p&gt;Consider &lt;strong&gt;HHG-001&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The transaction had:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Risk Score: 0.61
Amount: $77.07
Transaction: 3514030
Card: C12382-K1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The transaction occurred in an unusual billing region.&lt;/p&gt;

&lt;p&gt;At first glance, that looks suspicious.&lt;/p&gt;

&lt;p&gt;But the graph revealed that the customer had a history of traveling.&lt;/p&gt;

&lt;p&gt;Instead of immediately blocking the card, FraudNet recognized that the evidence was ambiguous.&lt;/p&gt;

&lt;p&gt;The agent initiated:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;customer_validation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The simulated customer response confirmed that the cardholder had authorized the transaction.&lt;/p&gt;

&lt;p&gt;The case then went through the policy layer and resulted in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CLOSE_NO_FRAUD
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Exposure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$0.00
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;SAR:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Rejected
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important behavior here wasn't simply the final verdict.&lt;/p&gt;

&lt;p&gt;It was the &lt;strong&gt;decision to gather more evidence before acting&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  9. When the Graph Changes Everything: HHG-014
&lt;/h1&gt;

&lt;p&gt;Now consider a very different case.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HHG-014&lt;/strong&gt; involved:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Transaction: 3478561
Amount: $74.96
Card: C13487-K1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The investigation initially considered customer verification.&lt;/p&gt;

&lt;p&gt;Then the graph traversal revealed something much more significant.&lt;/p&gt;

&lt;p&gt;A single device profile:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SM-G935F Build/NRD90M | Android 7.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;was connected to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;34 distinct payment cards
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The graph transformed the investigation.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Suspicious transaction
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the evidence now looked like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 Device
                   │
        ┌──────────┼──────────┐
        │          │          │
      Card 1     Card 2     Card 3
        │          │          │
       ...        ...        ...
                   │
                Card 34
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GraphRAG also retrieved historical syndicate cases:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CC-2985
CC-3035
CC-2649
CC-2971
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The evidence supported a coordinated device-based attack.&lt;/p&gt;

&lt;p&gt;The fraud probability was updated to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0.95
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The policy layer then enforced actions including:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE_CASE
FILE_REPORT
ESCALATE_TO_ANALYST
MONITOR_CONNECTED_CARDS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and a SAR was generated covering the immediate exposure and connected entities.&lt;/p&gt;

&lt;p&gt;Finally, the completed case was persisted back into TigerGraph.&lt;/p&gt;

&lt;p&gt;This is exactly the kind of investigation where graph technology provides information that would be difficult to derive from an isolated transaction record.&lt;/p&gt;




&lt;h1&gt;
  
  
  10. LLM Reasoning vs. Deterministic Policy
&lt;/h1&gt;

&lt;p&gt;This was one of the most important architectural choices in FraudNet.&lt;/p&gt;

&lt;p&gt;LLMs are useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Synthesizing evidence&lt;/li&gt;
&lt;li&gt;Explaining relationships&lt;/li&gt;
&lt;li&gt;Identifying potential patterns&lt;/li&gt;
&lt;li&gt;Assessing uncertainty&lt;/li&gt;
&lt;li&gt;Producing human-readable reasoning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But they should not be trusted as the sole authority for deterministic institutional rules.&lt;/p&gt;

&lt;p&gt;Therefore:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LLM Recommendation
        │
        ▼
┌─────────────────────┐
│    PolicyEngine     │
│                     │
│ R1 → R10            │
│ Exposure thresholds │
│ Approval routing    │
│ SAR requirements    │
└──────────┬──────────┘
           │
           ▼
Final Enforced Action
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The PolicyEngine lives in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;src/policy/engine.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It controls permitted actions such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;BLOCK_CARD
BLOCK_ALL_CARDS
MONITOR_CONNECTED_CARDS
CREATE_CASE
FILE_REPORT
CLOSE_NO_FRAUD
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It also determines approval routes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AUTO
L1
L2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The system explicitly records:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Initial LLM recommendation
        ↓
Policy evaluation
        ↓
Final enforced decision
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This separation makes the investigation trace significantly easier to audit.&lt;/p&gt;




&lt;h1&gt;
  
  
  11. SAR Generation
&lt;/h1&gt;

&lt;p&gt;FraudNet also generates structured Suspicious Activity Report data when the applicable policy rules require it.&lt;/p&gt;

&lt;p&gt;The generated report includes information such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Filing justification&lt;/li&gt;
&lt;li&gt;Transaction sequence&lt;/li&gt;
&lt;li&gt;Relevant graph relationships&lt;/li&gt;
&lt;li&gt;Subject identifiers&lt;/li&gt;
&lt;li&gt;Connected cards&lt;/li&gt;
&lt;li&gt;Device information&lt;/li&gt;
&lt;li&gt;Aggregate exposure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The important architectural distinction is that the LLM doesn't independently decide:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"This should be reported."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Evidence
   ↓
LLM recommendation
   ↓
Deterministic PolicyEngine
   ↓
SAR requirement
   ↓
Structured SAR output
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This keeps regulatory actions tied to explicit policy logic.&lt;/p&gt;




&lt;h1&gt;
  
  
  12. Grounding the Agent
&lt;/h1&gt;

&lt;p&gt;Agentic systems introduce another major problem:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do we know the model isn't inventing entities?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;FraudNet addresses this with two validation layers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Schema Validation
&lt;/h2&gt;

&lt;p&gt;Implemented through:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;evaluation/validate_schema.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pydantic schemas enforce structural requirements and cross-field invariants.&lt;/p&gt;

&lt;p&gt;For example, outputs cannot contain contradictory combinations of actions, verdicts, SAR states, and approval requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  Entity Integrity
&lt;/h2&gt;

&lt;p&gt;Implemented through:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;evaluation/check_integrity.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The system validates entity references against an in-memory registry containing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;631,219 ground-truth entities
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This includes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Transaction IDs
Card IDs
Customer IDs
Device profiles
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Therefore, if the LLM produces an entity that doesn't exist in the underlying dataset, the result can be rejected.&lt;/p&gt;

&lt;p&gt;The goal is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Reason freely, but never invent the underlying facts.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  13. The Investigation Control Room
&lt;/h1&gt;

&lt;p&gt;We also built a lightweight Flask-based Investigation Control Room under:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ui/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The interface operates in replay mode over canonical benchmark outputs.&lt;/p&gt;

&lt;p&gt;It includes several views.&lt;/p&gt;

&lt;h3&gt;
  
  
  Interactive Evidence Graph
&lt;/h3&gt;

&lt;p&gt;A D3.js force-directed visualization shows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Customers
Cards
Transactions
Devices
Cases
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and their relationships.&lt;/p&gt;

&lt;p&gt;Selecting an entity highlights the supporting evidence.&lt;/p&gt;

&lt;h3&gt;
  
  
  Investigation Trace
&lt;/h3&gt;

&lt;p&gt;The UI reconstructs the 12-stage investigation timeline from stored evidence references.&lt;/p&gt;

&lt;h3&gt;
  
  
  PolicyEngine Gate
&lt;/h3&gt;

&lt;p&gt;The UI visualizes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LLM Recommendation
        ↓
PolicyEngine Evaluation
        ↓
Final Enforced Action
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Uncertainty View
&lt;/h3&gt;

&lt;p&gt;The interface displays:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fraud probability&lt;/li&gt;
&lt;li&gt;Uncertainty&lt;/li&gt;
&lt;li&gt;Initial recommendation&lt;/li&gt;
&lt;li&gt;Final decision&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Case Memory
&lt;/h3&gt;

&lt;p&gt;Relevant historical investigations retrieved by GraphRAG are displayed as precedents.&lt;/p&gt;

&lt;h3&gt;
  
  
  Benchmark Dashboard
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;/benchmark&lt;/code&gt; route provides a 20-case benchmark matrix and aggregate operational statistics.&lt;/p&gt;

&lt;p&gt;A key transparency feature is that replay-derived fields and simulated customer responses are explicitly labeled in the UI rather than presented as live external events.&lt;/p&gt;




&lt;h1&gt;
  
  
  14. Benchmark Results
&lt;/h1&gt;

&lt;p&gt;FraudNet was benchmarked across all 20 cases in &lt;code&gt;case_pack.csv&lt;/code&gt; using live TigerGraph Cloud and Groq's &lt;code&gt;openai/gpt-oss-20b&lt;/code&gt; endpoint.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Total cases executed&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;20 / 20&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Output schema validation&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;20 / 20 passed&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Entity integrity validation&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;20 / 20 passed&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ground-truth entities checked&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;631,219&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fraud verdicts&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;18&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Legitimate verdicts&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mandatory SARs filed&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Evidence-request loops&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;16&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Average latency&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;30.0 seconds&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Minimum latency&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;19.1 seconds&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maximum latency&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;95.0 seconds&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Average tool calls/case&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;5.6&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Average token usage/case&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;676&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total detected fraud exposure&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$3,515.23&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;We did &lt;strong&gt;not&lt;/strong&gt; report classification accuracy or F1 because official benchmark ground truth was not published.&lt;/p&gt;

&lt;p&gt;That distinction matters.&lt;/p&gt;

&lt;p&gt;A system can produce internally valid and reproducible outputs without having a verified classification ground truth.&lt;/p&gt;




&lt;h1&gt;
  
  
  15. Resilience and Failure Handling
&lt;/h1&gt;

&lt;p&gt;An autonomous investigation system also has to handle things going wrong.&lt;/p&gt;

&lt;p&gt;FraudNet includes several resilience mechanisms.&lt;/p&gt;

&lt;h2&gt;
  
  
  TigerGraph Fallback
&lt;/h2&gt;

&lt;p&gt;If TigerGraph Cloud experiences a transient connection failure, the &lt;code&gt;GraphAdapter&lt;/code&gt; can fall back to an in-memory graph mirror loaded from the raw CSV datasets.&lt;/p&gt;

&lt;p&gt;Configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;TG_BACKEND=auto
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This allows the investigation pipeline to continue without depending exclusively on a live database connection.&lt;/p&gt;

&lt;h2&gt;
  
  
  JSON Recovery
&lt;/h2&gt;

&lt;p&gt;LLM responses aren't always perfectly formatted.&lt;/p&gt;

&lt;p&gt;FraudNet includes recovery logic for cases such as:&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="err"&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;wrapped in Markdown fences or truncated JSON responses.&lt;/p&gt;

&lt;p&gt;The recovery layer can strip Markdown fences and repair certain incomplete structures before schema validation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Credential Scrubbing
&lt;/h2&gt;

&lt;p&gt;API keys, database credentials, and bearer tokens are scrubbed before timeline states are logged or persisted.&lt;/p&gt;

&lt;h2&gt;
  
  
  Idempotent Writes
&lt;/h2&gt;

&lt;p&gt;Before writing a case back to TigerGraph, existing vertex IDs are checked to prevent duplicate case nodes.&lt;/p&gt;




&lt;h1&gt;
  
  
  16. What We Learned
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Graphs Let the LLM Focus on Reasoning
&lt;/h2&gt;

&lt;p&gt;One of the strongest lessons from building FraudNet was that the LLM should not be responsible for discovering every relationship.&lt;/p&gt;

&lt;p&gt;Asking an LLM to inspect large collections of raw transaction data and discover a device syndicate is inefficient and prone to errors.&lt;/p&gt;

&lt;p&gt;Instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;TigerGraph
    ↓
Find connected entities
    ↓
Structured evidence
    ↓
LLM
    ↓
Reason about evidence
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For HHG-014, the graph could directly expose the connection between one device and 34 cards.&lt;/p&gt;

&lt;p&gt;The LLM didn't need to calculate that relationship itself.&lt;/p&gt;

&lt;p&gt;It needed to understand what that relationship meant.&lt;/p&gt;




&lt;h2&gt;
  
  
  Deterministic Rules Belong Outside the LLM
&lt;/h2&gt;

&lt;p&gt;Another major lesson was the importance of separating:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Reasoning
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;from:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enforcement
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The LLM can say:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The evidence strongly suggests coordinated fraud."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The PolicyEngine determines what actions are actually permitted.&lt;/p&gt;

&lt;p&gt;This architecture makes the system easier to reason about, test, audit, and modify.&lt;/p&gt;




&lt;h1&gt;
  
  
  17. Current Limitations
&lt;/h1&gt;

&lt;p&gt;FraudNet is an engineering prototype and benchmark system, not a production financial deployment.&lt;/p&gt;

&lt;p&gt;There are several limitations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Customer Verification Is Simulated
&lt;/h3&gt;

&lt;p&gt;The offline benchmark uses simulated customer responses based on the underlying case context.&lt;/p&gt;

&lt;p&gt;A production implementation would connect the evidence-request layer to real systems such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SMS
Push notifications
Customer portals
Banking applications
Webhook listeners
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Replay UI Instead of Live Streaming
&lt;/h3&gt;

&lt;p&gt;The current Control Room replays completed investigation traces.&lt;/p&gt;

&lt;p&gt;A production version could use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Server-Sent Events
WebSockets
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to stream investigation events as they happen.&lt;/p&gt;

&lt;h3&gt;
  
  
  Benchmark Ground Truth
&lt;/h3&gt;

&lt;p&gt;The benchmark does not provide official classification ground truth, so we report operational and validation metrics rather than claiming accuracy.&lt;/p&gt;




&lt;h1&gt;
  
  
  18. Future Roadmap
&lt;/h1&gt;

&lt;p&gt;There are several directions we would explore next.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Live Multi-Hop Graph Expansion
&lt;/h3&gt;

&lt;p&gt;Instead of only displaying the final graph, allow analysts to interactively expand:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Transaction
   ↓
Device
   ↓
Connected Cards
   ↓
Connected Transactions
   ↓
Historical Cases
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;during an active investigation.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Analyst Override Analysis
&lt;/h3&gt;

&lt;p&gt;Track where analysts disagree with automated recommendations and use those patterns to propose candidate policy refinements for human review.&lt;/p&gt;

&lt;p&gt;The important distinction would be:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent proposes
Compliance approves
PolicyEngine enforces
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;rather than allowing the system to autonomously rewrite compliance rules.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Proactive Graph Analytics
&lt;/h3&gt;

&lt;p&gt;Run algorithms such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PageRank
Louvain community detection
Connected-component analysis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to identify emerging device or account clusters before individual transactions are flagged.&lt;/p&gt;

&lt;p&gt;This could move the architecture from:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Reactive Investigation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;toward:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Proactive Fraud Intelligence
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  19. The Architecture in One Picture
&lt;/h1&gt;

&lt;p&gt;The overall FraudNet design can be summarized as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                       ┌────────────────────┐
                       │   Fraud Trigger    │
                       └─────────┬──────────┘
                                 │
                                 ▼
                       ┌────────────────────┐
                       │ Agentic Workflow   │
                       │    12 Stages       │
                       └─────────┬──────────┘
                                 │
              ┌──────────────────┼──────────────────┐
              │                  │                  │
              ▼                  ▼                  ▼
       ┌────────────┐     ┌────────────┐     ┌────────────┐
       │ TigerGraph │     │  GraphRAG  │     │    LLM     │
       │            │     │            │     │            │
       │ Relations  │     │ Policies   │     │ Reasoning  │
       │ Topology   │     │ Typologies │     │ Synthesis  │
       │ History    │     │ Case Memory│     │ Uncertainty│
       └─────┬──────┘     └─────┬──────┘     └─────┬──────┘
             │                  │                  │
             └──────────────────┼──────────────────┘
                                ▼
                     ┌────────────────────┐
                     │ Evidence Evaluation│
                     └─────────┬──────────┘
                               │
                       Uncertainty?
                         /          \
                       Yes           No
                       │              │
                       ▼              │
                Evidence Request     │
                       │              │
                       └──────┬───────┘
                              ▼
                   ┌────────────────────┐
                   │   PolicyEngine     │
                   │    R1 → R10        │
                   └─────────┬──────────┘
                             │
                             ▼
                   ┌────────────────────┐
                   │ Final Enforcement  │
                   │ + SAR + Approval   │
                   └─────────┬──────────┘
                             │
                             ▼
                   ┌────────────────────┐
                   │ TigerGraph Writeback│
                   │   Case Memory      │
                   └────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The key idea is that &lt;strong&gt;each component has a clearly defined responsibility&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  20. Conclusion
&lt;/h1&gt;

&lt;p&gt;FraudNet started with a simple question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Can an AI agent investigate fraud rather than simply score it?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Our approach was to combine four capabilities:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Graph Intelligence
       +
Retrieval-Augmented Knowledge
       +
LLM Reasoning
       +
Deterministic Enforcement
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;TigerGraph provides the relationship structure.&lt;/p&gt;

&lt;p&gt;TigerGraph MCP gives the agent controlled access to that structure.&lt;/p&gt;

&lt;p&gt;GraphRAG provides policy, typology, and historical case context.&lt;/p&gt;

&lt;p&gt;The LLM synthesizes evidence and handles uncertainty.&lt;/p&gt;

&lt;p&gt;The PolicyEngine ensures that consequential actions remain deterministic.&lt;/p&gt;

&lt;p&gt;And the final investigation is written back into the graph as organizational memory.&lt;/p&gt;

&lt;p&gt;The result is not an LLM sitting on top of a database.&lt;/p&gt;

&lt;p&gt;It is an investigation architecture where:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The graph discovers the evidence, the agent reasons over it, the policy engine controls the action, and the investigation becomes memory for the next case.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/aaryamanmishra/tigergraph-agentic-fraud-investigation" rel="noopener noreferrer"&gt;https://github.com/aaryamanmishra/tigergraph-agentic-fraud-investigation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Demo:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://youtu.be/79AmYJ6bY3o" rel="noopener noreferrer"&gt;https://youtu.be/79AmYJ6bY3o&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Built for:&lt;/strong&gt;&lt;br&gt;
Hacker House Goa 2026 — TigerGraph Agentic Fraud Investigation Challenge&lt;/p&gt;


&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;TigerGraph Cloud
TigerGraph MCP v1.0.3
GraphRAG
Groq
openai/gpt-oss-20b
Python
Pydantic
Flask
D3.js
GSQL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  TigerGraph #GraphRAG #MCP #AgenticAI #FraudDetection #GenerativeAI #LLM #Python #AIEngineering #GraphDatabase #HackerHouseGoa
&lt;/h1&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/79AmYJ6bY3o" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>ai</category>
    </item>
  </channel>
</rss>
