The problem
In India, a stuck refund for a cancelled flight, a missing order or a failed UPI payment usually ends with "your request is in process".
The law gives consumers clear escalation steps and deadlines. Under the E-Commerce Rules 2020, Grievance Officers must acknowledge complaints within 48 hours. Above them sit nodal officers and regulators like AirSewa, the National Consumer Helpline (NCH) and the RBI Ombudsman. Almost nobody knows that path.
What we built
You describe your problem in English, Hindi or Hinglish. Pushback checks the published rules and tells you what you're owed and by when.
Then it climbs the ladder:
Support → Grievance / Nodal Officer → Regulator
- It drafts each letter, and you approve the exact text.
- The letter is sent from your own Gmail.
- It reads replies and follows ticket numbers into new threads.
- It tells you when the next step is due.
Architecture
| Layer | Tech |
|---|---|
| App, auth, cases, steps | Next.js on Vercel + Supabase |
| AI | Claude via Factory Droid: Sonnet 5.5 writes letters; Haiku understands complaints and labels replies |
| Gmail API (sends from your address, reads replies) | |
| Scheduler | viaSocket, a 5-minute tick for timers and inbox sync |
| Knowledge graph | TigerGraph Savanna |
How we used TigerGraph
The graph
Companies link to sectors, regulators and escalation channels. REQUIRES_PRIOR edges between channels encode the legal order and the wait days. Every real case becomes:
Claim → Step → Channel → Outcome
best_path
Our main GSQL query walks Company → Claims → Steps → Channels → Outcomes. 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 peer companies in the same sector and uses their history instead.
Write-back
Every letter, reply, escalation, win or loss is upserted back into the graph, so the next user benefits right away.
Why a graph?
"Which step works for this company, and if there's no data, for its sector?" is a multi-hop question.
- In SQL that's a pile of joins plus a fallback query.
- In GSQL it's one traversal (about 1–2 s on Savanna).
Shared regulators are single nodes that many companies connect to, so the outcome of one company's case helps people dealing with other companies.
Results
It's live at pushback-goa.vercel.app with three ladders: flights, orders and failed payments. It tracks real Zomato and airline tickets end to end, and the graph queries answer in under 2 seconds.
Top comments (0)