Hackathon · Government Portals · Prototype

Notice, Explained:
the evidence behind the number.

A GST notice tells a taxpayer that their credit does not match. It does not say why. This prototype shows which rows caused the gap, before the taxpayer writes a reply.

React 19TypeScriptOpenAIVercelSynthetic data

The short
version.

At a glance
RoleBuilt with Kriti Kandhari Kapoor. We shared every role.
WhenAug 24 to 28, 2026: five days from the narrowed brief to a live prototype. Round 2 followed.
Built forBuild What Moves India, a hackathon by Varun Mayya backed by OpenAI. The platform is the GST portal.
What shippedA tool that traces a GST DRC-01C mismatch row by row, explains the findings with a grounded OpenAI call, and drafts a review-only reply.
ResultTop 250, rank 64 of 13,694 applications. 80 tests on logic, validators and the API layer.
LimitSynthetic data only. Not GSTN. Not tax advice.
See itLive prototype ↗   Source ↗

What I built

Overview

Built with Kriti Kandhari Kapoor, from my cohort, for Build What Moves India, a hackathon by Varun Mayya backed by OpenAI. We shared every role. We built it in five days and placed in the Top 250: rank 64 of 13,694 applications.

5 daysfrom the narrowed brief to a live prototype
64rank, of 13,694 applications
80tests on logic, validators and the API layer
4steps in the citizen flow
0real GST records used

One number,
no reason.

01 · Problem

A GST DRC-01C notice shows the gap between the input tax credit a taxpayer claimed and what their suppliers reported. The portal gives the gap and a form to reply. It does not show which invoice or supplier record caused it.

Most recipients have no accountant or reconciliation tool on hand when the notice arrives. The reply window is fixed, and a wrong reply can block a later filing.

Between the notice
and the reply.

02 · Flow
  1. Show the notice and the total difference.
  2. Reconcile row by row in plain code. Each row is labelled: exact match, missing in 2B, possible duplicate, or later-period match.
  3. Explain the findings. The model only explains what the code has already checked, and cites the rows.
  4. Draft a review-only reply the taxpayer can copy, print or discard.

A second round added a risk screen for supplier-filed bills the taxpayer must act on, and a question box in Hindi or English that answers by citing real row IDs.

What is real,
what is synthetic.

03 · Honesty
RealSynthetic
Reconciliation logic and schema checksThe notice and the taxpayer
The OpenAI call, run server-side with a strict output schemaSource records, amounts and IDs
Error handling and the deployed appEverything a citizen would enter

Not GSTN. Not tax advice. No live GST system, API, PAN, Aadhaar, OTP or payment data is used. The app says this on every screen.

Five days,
ten portals.

04 · Timeline
  1. Aug 24. The brief narrowed to 10 government platforms. We researched all ten.
  2. Aug 25. We picked the Cyber Crime portal and CPGRAMS.
  3. Aug 27. We switched to the GST DRC-01C notice and locked the problem.
  4. Aug 28. We approved the final flow, built it, deployed it and submitted. That is five days from the narrowed brief to a live prototype.
  5. Round 2. The Top 250 got a week of mentorship. We added the risk screen and the question box, and resubmitted.

Kriti Kandhari Kapoor and I shared every role, from research to build. The submission window ran to Aug 29. We shipped on Aug 28.

What came
of it.

05 · Result

The prototype shipped and is live. It placed in the Top 250. It runs on synthetic data. No real taxpayer has used it, and I make no claim about accuracy on real notices.

The design choice I would keep: code decides, the model explains. That kept the numbers checkable and kept the model away from anything it could invent.