Skip to main content

Transparency

What's real and what's mocked

This page tells you, in plain words, what Seven Gates really does. Some parts are real code and some are working stand-ins. Each section tells you which.

You never have to upload anything

There is no file upload in Seven Gates. Documents arrive as structured fields through our DigiLocker stand-in. Nothing is read from a photo, and your documents never leave your device.

Rebuilt here

DigiLocker

A working stand-in with made-up documents. The screens and returned fields follow the real flow. It uses a demo HMAC key, not a government certificate. It is not connected to DigiLocker.

Rebuilt here

UMANG face authentication

The activation flow is rebuilt so the step can be finished rather than described. No camera is used, no face is captured, and nothing is matched against Aadhaar.

Rebuilt here

EPFO member portal screens

Field for field, label for label, from the real portal. Every substituted field carries a note. Pressing submit updates your case in our database and nothing else.

Rebuilt here

Employer portal and the shared link

Members cannot see the real employer portal, so we built what the task needs instead: a queue of requests waiting on one establishment. The link is signed and carries no case identifier. Approving a request updates the member’s case here. Nothing reaches a real employer or EPFO record.

Rebuilt here

Filing a claim, and settlement

When every gate is clear you can submit a simulated claim, and we save a demo reference and timestamp so the result survives a refresh. Nothing is sent to EPFO — there is no API to send it to, and inventing a settlement would tell you nothing true. Seven Gates deliberately stops at the hand-off: the point is that when you file on EPFO’s own portal, none of the seven things that get claims refused are still wrong. Reset returns the case to its starting state.

Rebuilt here

Real

The grievance and appeal ladder

The rungs, the order they unlock in, the deadline arithmetic and the statutory references are held in one data module with a source and a last-checked date on every entry, exactly like the settlement timings. Which rung is open is derived from your own case events, not set by a button.

Real

The drafted grievance, appeal, RTI and HR letters

Filled deterministically from your case — your UAN, your claim reference, your dates, the specific checks that failed. No language model writes any of them, because a fluent letter citing the wrong section of the RTI Act is worse than no letter.

Real

The gate logic

The dependency graph, topological ordering, critical path and day count are genuinely computed from the spec, unit-tested, and not staged for the demo.

Real

Case persistence

Your progress is written to Postgres and survives a refresh, a closed tab, and coming back days later at the same link.

Real

The assistant, and speech

Groq supplies assistant replies and Sarvam supplies speaking and listening. Your question and case state are sent to them. The assistant can only see the case in your browser cookie.

Real

Rate limiting

Genuinely enforced, but held in memory, so it resets on deployment and is not shared across serverless instances. Adequate for a demo, not production.

Real

Mocked

EPFO APIs

There is no public API for any of this. Nothing in this project makes a request to an EPFO system.

Mocked

Filing a grievance, and its reply

Nothing is transmitted to EPFiGMS, CPGRAMS or any government system. Registration numbers are generated locally. Advancing the demo clock returns the reply these grievances most commonly return — a disposal that closes the ticket without answering the question — because simulating the system working would teach nobody anything. Every draft is downloadable so you can file it yourself on the real portal, which each rung links to.

Mocked

Aadhaar / UIDAI verification

No Aadhaar authentication of any kind. No real Aadhaar number exists anywhere in this project; every one is deliberately invalid and masked on screen.

Mocked

Bank account verification

No penny-drop, no IFSC lookup. The IFSC codes here belong to no bank.

Mocked

Sign-up, captcha and OTP

No SMS is sent. The OTP is fixed and printed on screen. Demo accounts carry their password on the card.

Mocked

Synthetic

Documents

Every document is generated from a template, watermarked, and carries deliberately invalid identifiers. None is a copy of a real document.

Synthetic

Member records

Six demo members cover six real failure patterns. No real person’s data is used anywhere, including seed data and repository fixtures.

Synthetic

Estimated

Settlement timings

Held in one config file, with a source, last-checked date, and whether it is published, reported, or our estimate. They are estimates, not guarantees.

Estimated

Translation into Hindi and Kannada

Translations were generated by a machine translation workflow and have not yet been reviewed line by line by a fluent speaker. Treat this row as a limitation, not a quality claim.

Estimated

Where the numbers come from

About a quarter of claims refused — 26% in FY 2023-24

Factly / Dataful’s analysis of EPFO claim data. Their five-year average is close to 27%; this is the broad measure across every claim type.

Final settlements specifically: from about 13% to about 34%

An Indian Express analysis of EPFO data covering FY 2017-18 to FY 2022-23. This narrower measure counts final settlement after leaving a job.

EPFO says the rate is falling

EPFO told the New Indian Express in December 2024 that rejections were down to 25% through November of FY 2024-25. We have not found a published full-year FY25 figure.

A clean, fully KYC-linked claim settles in about three working days

EPFO’s auto-settlement route, with the ceiling raised to Rs 5 lakh in June 2025. This is the baseline the countdown uses.

An Aadhaar-verified member can file the Joint Declaration through DigiLocker

EPFO publishes no turnaround for it, so the five-day figure in our gate spec is labelled as our own estimate.

Every other latency in the product

Each carries its source, last-checked date, and whether it is published, reported or estimated.

How we built it

This is a proof of concept, but it is built around production-shaped boundaries: deterministic rules, a real database, server-side protection and stateless web routes.

A small, boring stack that stays understandable

Next.js and TypeScript keep the interface, routes and server actions in one strongly typed codebase. Tailwind gives us a consistent, responsive UI without a separate design system to keep in sync.

A real backend boundary

Neon Postgres is the source of truth for cases, progress and chat history. Server-side cookies scope every case lookup, and the assistant API validates input, limits requests and never trusts a client-provided case id.

Rules, not model guesses

The seven-gate resolver is a pure, unit-tested function: facts go in and an ordered critical path comes out. That makes the core result deterministic, inspectable and safe to improve independently of the language model.

Proof of concept, ready to grow

Today this is a focused hackathon deployment with a small connection pool and in-memory rate limits. For real traffic we would move limits to shared storage, put Postgres behind a managed pooler, add queues for slow work, cache public configuration, and scale stateless Next.js instances horizontally.

Designed for the next order of magnitude

The app already keeps business logic in data modules, isolates third-party calls behind API routes, and avoids putting secrets or personal case data in the browser. Those seams let us add observability, retries, background jobs and regional capacity without rewriting the product.

EPFO's side of it

EPFO points to 5.08 crore claims settled in FY 2024-25, an auto-settlement route that now covers claims up to Rs 5 lakh, and refusal rates it says are falling. That is the baseline this product measures against — not a claim that EPFO is standing still.

Everything said here about EPFO’s screens, labels and links was seen by browsing the public portal by hand, in an ordinary browser session. No automated access, scripted requests, load testing, or live claim was involved.