About this demonstration
You reached this page from a link in the footer. Those links are required on a government service and we kept them, but a concept prototype has no policies to publish — so rather than send you to an anchor that goes nowhere, they all come here and say so plainly.
What this is
An independent concept for Meri Pehchaan 2.0, built for Build What Moves India. It is not a Government of India service and is not affiliated with MeitY, NeGD, NIC, UIDAI, DigiLocker, e-Pramaan, Jan Parichay or the Meri Pehchaan programme.
The data
Every citizen, number and document here is invented. Three demo people — Aanya Sharma, Ramesh Kumar, Vikram Rao. The one-time password is always 123456, and any 10-digit mobile number signs in — there is nothing real behind it to protect. No real Aadhaar, PAN, payment or health data appears anywhere, and nothing on this site has ever contacted a live government system.
What is real, and what is staged
Every rail below is either published by the Government of India today, in which case this prototype implements its contract by name, or proposed, in which case we built it working and say so. The "Show rails" switch in the prototype controls marks the same distinction on every screen.
| What you see | Status | Where it stands |
|---|---|---|
| Sign in with the national button, authorisation code with PKCE, the signed tokens | Live rail | DigiLocker Authorized Partner API v2.0/2.3 (authorize, token, user, revoke); our hub answers the same names |
| Purpose, validity and the document filter on the consent screen | Live rail | Requester – Meri Pehchaan API v2.3: purpose, consent_valid_till, req_doctype, acr |
| The consent receipt and Who has access | Live rail | API Setu consent-artefact schema; NSSO Consent API operations (request, find, revoke) |
| Documents fetched with consent: PAN record, driving licence, birth certificate, UAN card, ration card | Live rail | API Setu Docs APIs, /certificate/v3/…; DigiLocker issued-document list |
| Match-only identity checks (yes/no, never the record) | Live rail | Protean online PAN verification; Organisation PAN verification; APAAR verify |
| Token codes and a second-factor app | Live rail | Parichay Authenticator: token and tap authentication, 30-second codes |
| Scheme records, search by eligibility, and "Schemes for you" read from linked documents | Live rail | myScheme Search and Get Schemes v7 on API Setu (the q identifiers, the scheme record, documents, FAQs): five schemes seeded in the published shape; there is no sandbox, so the API is not called |
| Session continuity across departments, sign-out everywhere | Proposed | No provider publishes back-channel logout; the 1.0 providers run three session policies |
| One consent ledger across all providers, documents shared, department sessions | Proposed | 1.0 has a Consent Dashboard per provider (Jan Parichay); nothing joins them |
| The inbox: every application reporting back, signed by its department | Proposed | Each source is real (CPGRAMS notifications, tracking calls, DigiLocker push); the hub that joins them is not |
| Number matching with the action named, offline first | Proposed | Parichay Authenticator's tap prompt asks only allow-or-not |
| A tier in every token (acr, amr), discovery, JWKS, nonce | Proposed | The 1.0 id_token carries none of these; e-Pramaan's 2012 levels are not exposed to relying parties |
| Delegation without sharing a credential | Proposed | No provider offers it; the terms forbid lending credentials — which is the problem it solves |
| Udyam, GST and every business registration as a relying party | Proposed | Adoption audit, 4 Sep 2026: 0 of 21 business portals accept the national sign-on; 4 of 46 portals overall, all MeitY properties |
| The three identity providers, the departments' own records, the phone's push, every citizen and document | Simulated | Synthetic, seeded, labelled. No live government system is called. The phone polls every two seconds because a page cannot receive a push |
| The mark, the wording, the twelve-language strings | Draft | None has been read by a native speaker or a lawyer |
Why it looks like the government, on purpose
Sambit Swarup, who made this prototype, chose the Government of India's own design language over a lavish custom look. A citizen recognises the government's own chrome and distrusts a sign-in page that looks new — that is what a phishing page looks like. Every screen starts from the component markup departments already run, so a department can paste it in, and accessibility is inherited rather than promised. Six classes for the Meri Pehchaan family are the only additions, built from the government's own tokens. The mark, the button and the ten design sheets.
Why the rail, in his words. He registered a company during COVID. Everything was online and it worked: the Registrar of Companies, the digital signature after a face check, the video KYC, the fee. Then the same person was verified again for GST, again for the bank, again for Udyam, again by a messaging platform's business verification. India already verifies who you are well; what it lacks is the rail that lets everyone else rely on that verification once. UPI did that for money. This is that rail for trust.
How it was built — with OpenAI
The problem was found and framed in ChatGPT (deep research): which public-service problem to take on, where the real gap is, what citizens actually complain about, and what the hackathon requires. Its two research documents are the requirements everything else descends from.
OpenAI Codex wrote the entire backend — 68 endpoints in 16 logged commits: the OpenID Connect issuer with PKCE, session continuity across departments, token exchange, revocation and introspection, three identity-provider simulators, consent receipts, account linking, delegation grants with number-matching, the citizen account, registration, statistics and fault injection. Every screen on this site calls Codex's endpoints; the record is backend/CODEX-LOG.md and git log --author=Codex.
Also used, as the rules require us to disclose: Claude Code for design, front-end and the checkers; Hono; Neon Postgres; Playwright; Vercel.
Contact
There is no service desk to reach. The work is public at the repository, including the audit of what does and does not work.
Languages
The twelve languages on the language menu are built-in page strings, written as text on the page, not produced by a machine. Full-page translation is mapped to Bhashini, the national language platform: with that rail on, every string the page's own dictionary lacks goes to Bhashini's published pipeline API under the department's own key. It is switched off in this prototype so that nothing here calls a live government service. The mapping is in the code, and the prototype controls on every page say so.
Accessibility
Built to the national accessibility standard. Every page is checked on each change for contrast, tap-target size, landmarks, and reflow at 320px, in light and dark, at two widths. Two things have not been done and should not be claimed: a screen-reader pass with a real user, and testing on a real low-end Android.