<?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: Ankit Khatkar</title>
    <description>The latest articles on DEV Community by Ankit Khatkar (@ankit_khatkar_5112).</description>
    <link>https://dev.to/ankit_khatkar_5112</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%2F4142132%2F15e7a64f-d1a5-46bf-af63-e208e9098a31.png</url>
      <title>DEV Community: Ankit Khatkar</title>
      <link>https://dev.to/ankit_khatkar_5112</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ankit_khatkar_5112"/>
    <language>en</language>
    <item>
      <title>Beyond the Risk Score: An Agentic Fraud Investigator on TigerGraph</title>
      <dc:creator>Ankit Khatkar</dc:creator>
      <pubDate>Fri, 25 Sep 2026 02:24:18 +0000</pubDate>
      <link>https://dev.to/ankit_khatkar_5112/beyond-the-risk-score-an-agentic-fraud-investigator-on-tigergraph-5e3d</link>
      <guid>https://dev.to/ankit_khatkar_5112/beyond-the-risk-score-an-agentic-fraud-investigator-on-tigergraph-5e3d</guid>
      <description>&lt;h2&gt;
  
  
  About
&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv769cqzfg5rsm0clpe1j.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv769cqzfg5rsm0clpe1j.png" alt=" " width="800" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fraud teams don't lack signals — they lack time to connect them. We built an agent that takes a single fraud alert (a risk score, a customer complaint, or an analyst's request) and does what a human investigator would: pull the transaction history, walk the graph to find shared devices, regions, and cards, compare it against past cases, and decide — with evidence, not just a score — what to do next. Built for the TigerGraph Agentic Fraud Investigation hackathon on the HHGOA_IEEE dataset.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we built
&lt;/h2&gt;

&lt;p&gt;An agent that investigates a fraud alert end-to-end: gathers evidence, assesses the likely fraud pattern and risk, opens and progresses a case, asks for more evidence when it's genuinely unsure, and recommends (or auto-executes, within policy) the next action — then writes the whole investigation back into the graph so future cases can learn from it. It runs against 20 benchmark alerts and produces one structured case file per alert, with the reasoning and evidence trail attached.&lt;/p&gt;

&lt;h2&gt;
  
  
  The architecture
&lt;/h2&gt;

&lt;p&gt;The flow mirrors how a human investigator works: trigger → open/lookup case → investigate (deterministic graph queries first) → assess (LLM reasons over the evidence) → check uncertainty → request more evidence if needed → re-assess → apply policy → explain → write to memory. Deterministic code (not the LLM) decides exposure math, approval routes, and SAR-vs-case calls, so the model's job is reasoning and explanation, not enforcing rules it might get wrong. Every step is logged to a trace so the whole investigation can be replayed in the UI.&lt;/p&gt;

&lt;h2&gt;
  
  
  How TigerGraph is used
&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0ck7v0340eb1pog1n3mv.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0ck7v0340eb1pog1n3mv.png" alt=" " width="682" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A graph schema connecting customers, cards, transactions, devices, regions, and email domains, plus our own &lt;strong&gt;&lt;em&gt;AgentCase&lt;/em&gt;&lt;/strong&gt; vertices that are the case memory.&lt;/li&gt;
&lt;li&gt;GSQL queries for the actual investigation work: pulling a card's transaction window, its normal baseline behavior, and its neighbors by shared device/region/email.&lt;/li&gt;
&lt;li&gt;A graph algorithm to find fraud rings rather than checking cards one at a time.&lt;/li&gt;
&lt;li&gt;Vector search over closed historical cases for GraphRAG — retrieving similar past investigations and their outcomes, then expanding them in the graph for real evidence, not just text similarity.&lt;/li&gt;
&lt;li&gt;TigerGraph MCP exposes all of this to the agent as callable tools, so every graph lookup the agent makes is a logged, auditable tool call.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The agentic capabilities we implemented
&lt;/h2&gt;

&lt;p&gt;Multi-trigger investigation (risk score, customer report, analyst request); evidence gathering across graph, transaction history, and prior cases; pattern and risk assessment; case creation and progression as evidence arrives; case memory that future investigations query; controlled evidence requests (customer validation, step-up auth, analyst input) only when uncertainty is genuinely unresolved; policy-bound next-best actions with approval routing (auto vs. requires human sign-off); and explicit stopping logic so the agent doesn't over-investigate once it has enough to act defensibly.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we learned
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A risk score alone is a weak signal — most high-score transactions in this data turned out legitimate, so the agent has to earn its confidence from graph evidence, not the score.&lt;/li&gt;
&lt;li&gt;Base rates matter: historical closed cases skew heavily toward confirmed fraud, but real-world alerts are much closer to 50/50. Training our judgment on history alone would have made the agent trigger-happy.&lt;/li&gt;
&lt;li&gt;Shared attributes (a device, a region) are only meaningful when they're rare — common device profiles connect thousands of unrelated cards and mean nothing on their own.&lt;/li&gt;
&lt;li&gt;Separating "reasoning" (LLM) from "enforcement" (deterministic policy code) made the agent far more consistent and easier to debug.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What we'd improve with more time
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Tighter calibration of fraud probability against a larger backtest sample.&lt;/li&gt;
&lt;li&gt;A live autonomous monitor that scans new alerts proactively instead of only responding to the 20 benchmark cases.&lt;/li&gt;
&lt;li&gt;Richer UI visualization of the fraud-ring graph for analysts.&lt;/li&gt;
&lt;li&gt;More regulatory reference material fed into GraphRAG for stronger SAR narratives.&lt;/li&gt;
&lt;/ul&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpeif0yrv7ohn00nw1rg5.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpeif0yrv7ohn00nw1rg5.png" alt=" " width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>database</category>
      <category>security</category>
    </item>
  </channel>
</rss>
