About this demo
What is real, what is simulated.
This is a hackathon prototype. It is not a government service, it is not connected to any government portal, and nothing filed here reaches a public authority. What follows is the whole of it, including the parts that do not work yet.
All of it, on one screen
How it is actually built
Guided filing12 hops. It plays itself, or take it over by clicking any box.
Nothing on the map is aspirational. Every box names a route, a table or an agent that exists in this build, and the dashed boxes are the two rules the code holds to rather than hopes for: a deterministic fallback behind every model backed step, and a postal handoff that is never allowed to move the statutory clock.

What's actually running
Real
The clock, and the record it reads
A request's state and its deadlines are not stored, they are folded from an event log on every read by a pure function that touches no database and no network. Nothing writes a due date directly, so every one of them can be checked against the Act rather than believed.
The database
A real, persistent Postgres database, not an in-memory simulation that resets on reload. Signing up creates a real account; filing writes a real row that's still there tomorrow.
Deemed refusal
Section 7(2) is a transition in the state machine, not a notification somebody has to remember to send. It fires on its own the moment the deadline is checked.
The Act
Every section reference on this site is real, and cited where it is relied on: 5(2), 6(3), 7(1) to 7(6), 11, 19(1), 19(3), 19(6), 20(1).
The model, honestly labelled
Routing, drafting and reply analysis are each attempted through a language model first. If a call fails for any reason, that agent falls back to deterministic logic instead of guessing, and the interface always discloses which one actually answered.
Dohraav, before anything else runs
The archive is shortlisted for requests that look close, then the model reads the shortlist and says which of them is actually the same question, however differently it was worded. A confident match stops the pipeline and points to the existing answer instead of drafting a duplicate.
Vishlesh, reading a reply
Once a reply exists, it's read against the original question and the exemptions actually cited, and rated on how strong an appeal would be. It never states a refusal is unlawful, only how the grounds look, and why.
The officer side
Real reply dispatch (no refusal without a cited clause), section 7(3) fee demands, section 6(3) transfers, and section 11 third-party notices, all writing to the same live requests a citizen sees.
The physical lane
For an authority with no working online channel, a real, correctly formatted PDF of the request generates on demand. Posting it is wired to a real courier adapter, honestly labelled unconfigured. It will never report a fabricated “sent”.
Notifications
Every state change on a request, whether a reply, a fee demand or a deadline reached, writes a real, in-app notification. Filing also emails the applicant a copy of their own application, with the signed PDF attached and the postal outcome stated. With no email provider configured it records that nothing was sent rather than reporting a receipt that was not. Mobile push is still disclosed as not built.
What isn't there yet
Simulated, or not built
Every person and every request
All accounts and requests on this instance are created for demonstration. Any resemblance to a real applicant is accidental.
Payment
No money moves. The fee is displayed because getting it wrong can have an application rejected, but nothing is ever charged.
The directory behind the numbers
The authority and department directory behind every routing decision was assembled by hand, and is a fraction of what exists. An officer can confirm a listing and a citizen can flag one, but most entries are still unverified by anyone. The fees are thinner still: 1 of 36 come from an official rule, and the rest are what aggregators claim, or ₹10 because nothing better was found.
Automated tests
None ported to this rebuild yet. Correctness currently rests on the clock module being copied unmodified from a tested build, plus manual verification against the live database.