<?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: Pushback</title>
    <description>The latest articles on DEV Community by Pushback (@pushback_c97cb8c214ba6c92).</description>
    <link>https://dev.to/pushback_c97cb8c214ba6c92</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%2F4218204%2F63d6511c-3d84-4ce5-9ecd-50c092eec3ad.png</url>
      <title>DEV Community: Pushback</title>
      <link>https://dev.to/pushback_c97cb8c214ba6c92</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pushback_c97cb8c214ba6c92"/>
    <language>en</language>
    <item>
      <title>Pushback: a refund-escalation agent that learns from outcomes with TigerGraph</title>
      <dc:creator>Pushback</dc:creator>
      <pubDate>Sat, 31 Oct 2026 03:53:35 +0000</pubDate>
      <link>https://dev.to/pushback_c97cb8c214ba6c92/pushback-a-refund-escalation-agent-that-learns-from-outcomes-with-tigergraph-4he</link>
      <guid>https://dev.to/pushback_c97cb8c214ba6c92/pushback-a-refund-escalation-agent-that-learns-from-outcomes-with-tigergraph-4he</guid>
      <description>&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;In India, a stuck refund for a cancelled flight, a missing order or a failed UPI payment usually ends with &lt;em&gt;"your request is in process"&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The law gives consumers clear escalation steps and deadlines. Under the &lt;strong&gt;E-Commerce Rules 2020&lt;/strong&gt;, Grievance Officers must acknowledge complaints within &lt;strong&gt;48 hours&lt;/strong&gt;. Above them sit nodal officers and regulators like &lt;strong&gt;AirSewa&lt;/strong&gt;, the &lt;strong&gt;National Consumer Helpline (NCH)&lt;/strong&gt; and the &lt;strong&gt;RBI Ombudsman&lt;/strong&gt;. Almost nobody knows that path.&lt;/p&gt;

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

&lt;p&gt;You describe your problem in &lt;strong&gt;English, Hindi or Hinglish&lt;/strong&gt;. Pushback checks the published rules and tells you what you're owed and by when.&lt;/p&gt;

&lt;p&gt;Then it climbs the ladder:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Support → Grievance / Nodal Officer → Regulator&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It drafts each letter, and &lt;strong&gt;you approve the exact text&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The letter is sent &lt;strong&gt;from your own Gmail&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;It reads replies and follows ticket numbers into new threads.&lt;/li&gt;
&lt;li&gt;It tells you when the next step is due.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Tech&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;App, auth, cases, steps&lt;/td&gt;
&lt;td&gt;Next.js on Vercel + Supabase&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;Claude via Factory Droid: Sonnet 5.5 writes letters; Haiku understands complaints and labels replies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Email&lt;/td&gt;
&lt;td&gt;Gmail API (sends from your address, reads replies)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scheduler&lt;/td&gt;
&lt;td&gt;viaSocket, a 5-minute tick for timers and inbox sync&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Knowledge graph&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;TigerGraph Savanna&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  How we used TigerGraph
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The graph
&lt;/h3&gt;

&lt;p&gt;Companies link to &lt;strong&gt;sectors&lt;/strong&gt;, &lt;strong&gt;regulators&lt;/strong&gt; and &lt;strong&gt;escalation channels&lt;/strong&gt;. &lt;code&gt;REQUIRES_PRIOR&lt;/code&gt; edges between channels encode the legal order and the wait days. Every real case becomes:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Claim → Step → Channel → Outcome&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;best_path&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Our main GSQL query walks &lt;strong&gt;Company → Claims → Steps → Channels → Outcomes&lt;/strong&gt;. For each step it counts how often the step was tried and how often it worked. If a company has fewer than 5 claims, the query hops to &lt;strong&gt;peer companies in the same sector&lt;/strong&gt; and uses their history instead.&lt;/p&gt;

&lt;h3&gt;
  
  
  Write-back
&lt;/h3&gt;

&lt;p&gt;Every letter, reply, escalation, win or loss is upserted back into the graph, so the next user benefits right away.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why a graph?
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;"Which step works for this company, and if there's no data, for its sector?"&lt;/em&gt; is a multi-hop question.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In &lt;strong&gt;SQL&lt;/strong&gt; that's a pile of joins plus a fallback query.&lt;/li&gt;
&lt;li&gt;In &lt;strong&gt;GSQL&lt;/strong&gt; it's &lt;strong&gt;one traversal&lt;/strong&gt; (about 1–2 s on Savanna).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Shared regulators are single nodes that many companies connect to, so the outcome of one company's case helps people dealing with other companies.&lt;/p&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;p&gt;It's live at &lt;strong&gt;&lt;a href="https://pushback-goa.vercel.app" rel="noopener noreferrer"&gt;pushback-goa.vercel.app&lt;/a&gt;&lt;/strong&gt; with three ladders: &lt;strong&gt;flights, orders and failed payments&lt;/strong&gt;. It tracks real Zomato and airline tickets end to end, and the graph queries answer in under 2 seconds.&lt;/p&gt;

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