Independent concept prototype for Build What Moves India · Not a Government of India service · All data is demo data.

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 is real and what is proposed
What you seeStatusWhere it stands
Sign in with the national button, authorisation code with PKCE, the signed tokensLive railDigiLocker 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 screenLive railRequester – Meri Pehchaan API v2.3: purpose, consent_valid_till, req_doctype, acr
The consent receipt and Who has accessLive railAPI Setu consent-artefact schema; NSSO Consent API operations (request, find, revoke)
Documents fetched with consent: PAN record, driving licence, birth certificate, UAN card, ration cardLive railAPI Setu Docs APIs, /certificate/v3/…; DigiLocker issued-document list
Match-only identity checks (yes/no, never the record)Live railProtean online PAN verification; Organisation PAN verification; APAAR verify
Token codes and a second-factor appLive railParichay Authenticator: token and tap authentication, 30-second codes
Scheme records, search by eligibility, and "Schemes for you" read from linked documentsLive railmyScheme 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 everywhereProposedNo provider publishes back-channel logout; the 1.0 providers run three session policies
One consent ledger across all providers, documents shared, department sessionsProposed1.0 has a Consent Dashboard per provider (Jan Parichay); nothing joins them
The inbox: every application reporting back, signed by its departmentProposedEach source is real (CPGRAMS notifications, tracking calls, DigiLocker push); the hub that joins them is not
Number matching with the action named, offline firstProposedParichay Authenticator's tap prompt asks only allow-or-not
A tier in every token (acr, amr), discovery, JWKS, nonceProposedThe 1.0 id_token carries none of these; e-Pramaan's 2012 levels are not exposed to relying parties
Delegation without sharing a credentialProposedNo provider offers it; the terms forbid lending credentials — which is the problem it solves
Udyam, GST and every business registration as a relying partyProposedAdoption 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 documentSimulatedSynthetic, 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 stringsDraftNone 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.