About this demo
What is real, what is simulated
This is a 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 well.
Real
- The statutory clock
- Computed, not stored. Every deadline on this site is folded from an event log by a pure function, so it can be checked against the Act rather than believed. It implements sections 5(2), 6(3), 7(1), 7(2), 7(3), 7(5), 7(6), 11, 19(1), 19(3), 19(6) and 20(1).
- The record
- Event sourced. A request's state and due date are projections folded from what happened. Nothing writes them directly, which is why the ledger on each request can show its own arithmetic.
- The Act
- Every section reference on the site is real, and each one is cited where it is relied on.
- The model
- Routing, drafting and reply explanation are done by gemini-3.7-flash, working from the question as written. Each agent has a deterministic fallback so the service still functions when a call fails, and the interface says which of the two answered.
- The test suite
- 127 unit tests, 27 logic probes against a running server, and 41 checks driving a real browser. The clock is tested against the Act, not against itself.
- One fee, sourced
- Tamil Nadu's ₹10 application fee, from Rule 3(a) of the Tamil Nadu Right to Information (Fees) Rules 2005, published by the State Information Commission.
Simulated
- Every person and every request
- All accounts, requests, replies and officers are invented for this demo. Any resemblance to a real applicant or officer is accidental.
- Filing
- Nothing is submitted anywhere. A filed request is written to this demo's own database and to nothing else.
- Payment
- No money moves. The fee is displayed because getting it wrong can have an application rejected, but nothing is ever charged and no payment details are collected.
- Officer replies
- Produced through the demonstration control on each request, so the states after a reply can be walked through. No officer is involved.
- Most state fees
- Of 36 states and union territories, 1 has a fee we could source to an official rule, 7 have figures that aggregators disagree about, and 28 fall back to a default of ₹10. Each fee on screen says which of those it is. We would rather show the uncertainty than a confident wrong number.
- Attachment storage
- Files are held in a store that serves every object from a public URL and offers no private mode. Uploads use an unguessable path and downloads are checked for ownership before the file is streamed, but an attachment URL that leaks is readable by anyone holding it. A real version needs signed, expiring links.
- The authority directory
- 28 central public authorities across 21 ministries, and 16 department kinds across 36 states and union territories. Hand assembled, and a fraction of what exists.
Both sides of the counter
A request is only answered if the person receiving it has a usable way to answer. Most services built around the Act model the citizen and stop, which leaves the half where the delay actually happens undesigned. Both sides are here, and you can sign in as either.
- As a citizen
meera@askadhikar.demomeera-rti-2026File a request, watch the clock, appeal a refusal.- As the officer
rao@askadhikar.demorao-cpio-2026An inbox sorted by statutory risk rather than by arrival. Reply, demand a copying fee, transfer under section 6(3), or split one application across several officers.
The officer console is where the choices get uncomfortable. It will not let a refusal be recorded without a clause, or a fee demanded without a justification, because an interface that allows those is how they happen.
What is underneath
The interface is the smallest part of this. Most of the work is in making a deadline something that can be checked rather than believed.
- An event log, not a status column
- A request's state and its due date are folded from what happened to it. Nothing writes them directly, so the ledger on each request can show its own arithmetic and you can disagree with it.
- A clock engine with no I/O
- One pure function turns an event log into a deadline. Because it touches nothing, it can be tested against the Act rather than against itself, which is why the periods on this page and the periods on a live request cannot drift apart.
- Deemed refusal fires on its own
- Section 7(2) is a transition in the state machine, not a notification somebody has to remember to send. Nobody has to know the section exists for it to protect them.
- Tested where it matters
- 164 unit tests, 46 logic probes against a running server, and 103 checks driving a real browser. The clock is tested against named sections of the Act.
How the guided path works
Five agents, and not one of them decides anything
Each has a single job, its own prompt and its own output schema, and each falls back to plain rules when the model cannot be reached, so filing never depends on a model being up. They rank, draft, explain and count. You decide, you sign, and the request is yours, which is the only arrangement the Act allows.
Reads your question and works out which public authority holds the record, central or state.
File anything, or move a request to another authority without asking you first.
The hardest unsolved problem
There is no maintained national directory of Indian public authorities and their information officers. Nothing publishes, in a form a machine can read, which body holds which record, who its officer is today, or what that state charges. Every routing decision this service makes rests on a directory we assembled by hand, which means state routing is the least reliable thing here and will stay that way until such a directory exists. This is not a modelling problem. No amount of work on the agent fixes it.
What the agent gets wrong
- It picks the wrong department. A complaint that touches two departments, or uses a local word for a body, can be routed to the wrong one. It says which authority it chose and why, so the choice can be overridden before filing.
- It drafts around what you did not say. A draft can read as complete while missing the date range or the office that would have made it answerable. Every draft is shown before anything is filed.
- It can be confidently wrong about a fee. Where the figure is not sourced, the number beside it says so.
- It cannot tell you whether a state portal works. Several states have no online filing at all. We do not claim otherwise, and we do not know the current position for every state.
What a real version would need
- A maintained authority directory, with officers kept current. This is the whole problem, and it is institutional rather than technical.
- A payment gateway, with the fee rules of every state encoded and kept up to date as each state amends them.
- An officer side workflow, because a request is only answered if the person receiving it has a usable way to answer. The officer console here is a sketch of that, not a substitute for it.
- State coverage, negotiated state by state. There is no single integration that reaches all of them.