CPGRAMS
Product Design · 2026
CPGRAMS is how a citizen of India formally complains to their own government. It handles over 20 lakh grievances a year across 90+ ministries, and until now it did it through a 15-field form in English or Hindi. This is a conversational layer over that system: you speak your problem in your own language, and a chatbot turns it into a correctly routed, correctly categorised grievance without you ever seeing the form.
- Role
- Product Design · Conversational UX
- Category
- Product Design
- Year
- 2026
- Client
- DARPG, Government of India
- Delivered with
- KPMG India
- Languages
- 22 scheduled Indian languages
- Scope
- Conversational architecture, voice UX, UI, mascot, design system
- Surfaces
- Web chatbot, mobile web
- Live at
- cpgramsaichatbot.com
- Tools
- FigmaConversational UXPrototyping
- Speech-to-text intake in 22 languages, so filing needs no reading or writing
- Grievances auto-filled and routed to the correct ministry from plain speech
- Samadhan Didi, a lip-synced mascot who teaches the interface as you use it
A promise the state already makes
Most products begin by inventing a reason to exist. This one did not. CPGRAMS is already a constitutional-grade commitment: any citizen of India can lodge a grievance against any central government department, and an officer is obliged to answer it, usually inside 30 to 60 days, with automatic escalation to senior officers and a route to the Prime Minister's Office if they do not.
It is not a pilot or a portal somebody is trying to get adopted. It runs across more than 90 ministries and handles over 20 lakh grievances a year, and it disposes of 93% of them. The machinery works.
So this project was never about designing a service. The service exists. It was about the fact that the door into it could only be opened by people who least needed it.
The door
To use that machinery, a citizen has to fill in a form. One page, fifteen or more fields, written in departmental language, on a layout built for a desktop computer.
The hardest field is the second one. Before describing anything, you must name the ministry and the category your problem belongs to. That is a filing decision. Ask a person whose pension has stopped which of ninety departments owns that, and the conversation is already over.
- You must already know the answer to use itMinistry and category are required before the complaint is written. The people most in need of the system are least able to classify their own problem inside it.
- Built for a machine most users do not ownDesktop-first, in a country where roughly three quarters of internet users are mobile-first. Small targets, dense text, and a CAPTCHA that defeats exactly the age group filing the most grievances.
- Two languages out of twenty-twoEnglish and Hindi only. More than 550 million citizens communicate in a regional language and the portal has nothing to say to any of them.
- One mistake and the work is goneSession timeouts wipe everything entered. No autosave, no drafts, no recovery path, and error messages that explain nothing.
Who it actually serves
Language is the clearest exclusion but not the only one. A quarter of the country cannot read or write at all, which makes any text interface a closed door regardless of which language it is written in. The 60-plus age group files the most grievances and has the lowest digital literacy, so their complaints get filed by somebody else, or filtered, or delayed, or never made.
Put those together and 78% of grievances arrive from urban, educated users.
A channel built for 1.4 billion people was, in practice, being used by the top 15%.
That is not a usability score. It is a democratic problem. The feedback loop between a government and its citizens was quietly sampling only the citizens who were already doing fine.
People were not failing to file grievances. They were failing to fill in a form. Only one of those is the citizen's problem.
That reframe is the entire project. It moves the work from redesigning the portal to building a translation layer over it.
Nothing about the government changes. Same ministries, same categories, same statutory clock. What changes is who is required to understand any of it. The citizen describes what happened to them, in whatever language they think in, out loud if they cannot write. The system does the filing.
Every step is a chance to give up, and six in ten people take it.
- Register an account
- Read the interface in English or Hindi
- Identify the correct ministry
- Identify the correct category
- Write the grievance in formal language
- Attach the right documents
- Clear a CAPTCHA
- Complete it all before the session expires
Everything else is inferred, filled and routed by the system that already knows how it is organised.
- Say what happened
- Check that it got it right
Samadhan Didi
A chat window is still an interface, and to somebody who has never used one it is still an exam. So the product has a face.
Samadhan Didi is a government worker in a saree with a departmental lanyard, and every part of that is a decision. Didi means elder sister. She is the person you already ask for help with a form, the one at the counter who does not make you feel stupid for asking. She is lip-synced to the spoken reply, so the answer is watched as well as heard, which matters when the person listening may not be able to read the same words on screen.
She is not an ornament on the product. She is the onboarding.
The mascot
Expression setFirst run: teaching the interface
This is the flow a citizen sees once, the first time they ever open the chatbot, and it carries more weight than anything else in the product. Everything after it assumes the person knows they can press a button and speak. Nothing in their experience of government websites has ever suggested that.
So the tutorial does not describe the interface. It points at it. The screen dims except the one control being discussed, Samadhan Didi stands beside it and says what it does in plain language, and the whole thing can be skipped from the first frame by anyone who does not need it.
Arriving with nothing to read
The chatbot opens from the CPGRAMS portal with no account, no install and no setup. The first thing on screen is a greeting and the two ways forward, speaking or typing, rather than a form or a login wall. The illustrated rural background is deliberate: it signals who this is for before a single word is read.

The guide introduces herself
Samadhan Didi appears full-height and speaks. Establishing her before she starts giving instructions matters, because the tutorial that follows is a stranger telling you what to press. Coming from a recognisable figure in a government saree and lanyard, it reads as being helped rather than being tested.

Spotlight on one control at a time
Everything dims except the element under discussion. Only one thing is ever lit, so there is no question about which control the sentence refers to. This is the pattern that carries the whole tutorial, and it is why the tutorial can be short.

The microphone, explained in one sentence
The most important control in the product gets the clearest instruction: press it and speak in your preferred language. No mention of transcription, languages supported, or accuracy. The promise is small enough to be believed and complete enough to act on.

Handing over, with an exit
The tutorial ends by returning control, and Skip Tutorial is present from the first frame rather than appearing at the end. A confident user is never trapped inside an explanation of something they already understand, which is what keeps the tutorial from being a cost imposed on everyone to help some.

Open
Meet
Spotlight
Microphone
Hand overVoice: the path for people who cannot type
For a quarter of the country, reading and writing is the barrier. Voice is not a convenience feature layered on top of this product. It is the accessibility strategy, and the typed flow is the alternative rather than the default.
Press once, speak, and the system does the rest. Speech-to-text runs through Bhashini across all 22 scheduled languages, the language is detected rather than selected, and the reply comes back spoken as well as written. Filing a grievance becomes about as difficult as making a phone call, which for this audience is the correct level of difficulty.
One obvious thing to do
The resting state gives the microphone the centre and the visual weight. There is no language picker, no category dropdown and no form preview, because every one of those would be a decision demanded before the citizen has said anything.

Press to speak
A single press starts recording. Press and hold was rejected early: it is a gesture that fails for users with tremors or arthritis, and the 60-plus group files the most grievances of anyone.

Proof that it is listening
A live waveform responds to the voice. For a user who is not confident the machine can hear them, a static recording indicator is not enough reassurance, and stopping to check kills the sentence they were in the middle of.

Their words, kept
The recording lands in the thread as a playable message with its own waveform rather than being silently converted to text and discarded. The citizen can hear back exactly what they said, which matters when the system is about to act on it.

Transcription, shown not hidden
The speech-to-text result is displayed alongside the audio. If Bhashini has misheard a place name or a scheme, this is the first moment it can be caught, and catching it here is far cheaper than catching it after the grievance has been routed.

Language detected, not requested
The interface adapts to the language it heard. A language picker is a reading test administered to people who may not read, and it is the same trap as the ministry dropdown: asking someone to classify themselves before they are allowed to speak.

Answered out loud
Every response is playable, not just readable. Voice input with text-only output solves half the literacy problem and then abandons the user at the reply, which is the half that actually contains the answer.

Filling the gaps by asking, one at a time
Where the grievance is missing something the form requires, the bot asks for it as a single conversational question. This is the fifteen-field form, disassembled into the smallest possible units and delivered only where a human answer is genuinely needed.

The form, filled without being seen
Ministry, category, location and urgency are inferred from what was said. The citizen never encounters the dropdown that stops most people at the portal, because the system carries that knowledge instead of demanding it.

Read back before it counts
This is the screen the entire system exists to reach. The interpretation is shown in the citizen's own words with the detected state and category visible, and nothing is submitted until they agree. Auto-filing a legal document on somebody's behalf without showing them what it says is not assistance, it is a liability with their name on it.

A way out when the routing is wrong
If the state-level categorisation is wrong, escalation to the Central Authority is one tap rather than a fresh grievance. The system is allowed to be wrong; it is not allowed to be wrong with no exit.

Submitted, and traceable
Confirmation returns the registration ID, which is the object that makes the statutory clock start and the only thing the citizen needs to keep. It is repeated in the thread so it survives a closed tab.

Rest
Listening
Transcribed
Answered
Review
SubmittedText: the same architecture, typed
Voice is the priority, not the requirement. Plenty of citizens can type and would rather, and speaking a complaint out loud is not always possible in a shared house, an office, or a queue.
The typed path reaches the same destination through the same architecture. Describe it in plain language, let the system infer the classification, review before submitting. It is a conversation, never a form, and the difference from the portal is that the burden of knowing how government is organised never moves onto the person typing.
An empty field and a prompt
The typed flow opens on the same greeting with the input focused. No category selection, no ministry list, no required fields visible, because the first thing asked has to be something the citizen can actually answer.

The complaint in their own words
The grievance is typed the way it would be said out loud, with no formal structure required. Everything the portal would have demanded up front gets extracted from this sentence instead.

Understood and acknowledged
The reply restates the problem before doing anything with it. This is not politeness, it is the earliest and cheapest place to catch a misunderstanding, and it tells the citizen they were heard by something that followed the meaning rather than matched a keyword.

One question at a time
Missing details are collected as single questions in sequence rather than as a block of fields. The fifteen-field form still gets filled; it just never appears as fifteen fields.

Answering with structure when structure helps
Where the answer is genuinely a small closed set, the bot offers options rather than an open field. Free text is the right default, but forcing someone to type an exact scheme name they may not know is a trap dressed as flexibility.

Documents, when they are needed
Attachments are requested at the point they become relevant, not listed as a requirement at the start. On the portal, an unmet document requirement at step two ends the session; here it arrives once the citizen is already invested and knows why it is being asked for.

History that survives the session
Conversations persist in the left rail. The portal loses everything to a session timeout, which on a slow connection is a routine event, and losing a half-written grievance is usually the end of that grievance forever.

Classification, done quietly
Ministry, department and category are resolved from the conversation. This is the single highest-friction field on the original portal, removed entirely from the citizen's job and handed to the system that already holds the taxonomy.

Location and jurisdiction
State and jurisdiction are inferred and then shown, because routing a grievance to the wrong state is the failure most likely to waste the statutory clock before anyone notices.

The complete picture, assembled
Everything gathered across the conversation is brought together in one place: the complaint, the classification, the location and the attachments. The citizen sees the whole grievance for the first and only time as a single object.

Read it back
The same pre-submission review as the voice flow, and for the same reason. Nothing becomes a legal submission until the person it belongs to has seen what the machine decided on their behalf.

Submit, or escalate
Submit Grievance and New Chat sit together, with the Central Authority escalation underneath for when the state-level categorisation is wrong. Three outcomes, all reversible except the one the citizen explicitly chooses.

Filed, with a number
Confirmation and the registration ID. From this moment the grievance is inside the same machinery as one filed by a lawyer on a desktop, with the same clock and the same escalation path, which was the entire point.

Open
Describe
Follow up
Assemble
Review
FiledThe decisions
- Never ask for the ministryThe highest-friction field on the original portal and the one a citizen is least equipped to answer. Inferred from what they said, confirmed at review, never asked.
- Detect the language, do not offer a listA language picker is a reading test given to people who may not read. Detection removes the test and the interface adapts to what it heard.
- Speak every answer, not just accept speechVoice in with text out solves half the literacy problem and then abandons the user at the half containing the answer.
- Press, do not press and holdHold-to-record fails for tremor and arthritis, and the 60-plus group files more grievances than anyone else on the platform.
- Show the interpretation before submittingAuto-filing a legal document for somebody requires their consent to what it says. The review screen is where the system admits what it assumed.
- Give a wrong answer somewhere to goWhen state-level routing is wrong, escalation to the Central Authority is one tap rather than starting again.
- Keep the state's own visual authorityThe saffron, the emblem, the departmental masthead, the ministers. A grievance tool that looks unofficial does not get trusted with a grievance.
The system underneath
A component set built for a conversation rather than a page: message bubbles by speaker, audio players with waveforms, state and language tags, the review card, tutorial spotlights, and the mascot in each of her states.
- Saffron
- #FE6700Primary action, government identity
- Deep
- #9F2D00Pressed and emphasis
- Warm
- #FFC196Surfaces and user bubbles
- Cream
- #FFFBEFChat canvas
- Ink
- #333333Body copy
- Slate
- #4A505BSecondary text and labels
- Interface
- InterChat, controls, labels
- Supporting
- General SansHeadings
- Script
- RobotoDevanagari and regional coverage
Message and input components
State variantsWhat changed
It is live at cpgramsaichatbot.com, running against the real grievance system rather than standing as a concept.
For a citizen, the qualification required to complain to their own government dropped from reading English or Hindi and knowing how ninety ministries are organised, to being able to speak. For DARPG, grievances now arrive pre-categorised and correctly routed, which is work that previously landed on an officer before the statutory clock had even started.
The work was scoped against projections of 3x more grievances filed, a 40% reduction in incomplete submissions and 85% satisfaction. Those are targets rather than results, and post-launch numbers sit with the department.
What I learned
Designing for government taught me that accessibility is not a layer applied to a finished product. Here it was the product. Remove voice and you have not built a slightly less inclusive chatbot, you have rebuilt the thing that was already failing.
It also changed how I think about automation. The instinct with a form this painful is to remove it completely and let the system handle everything silently. But the moment software files a legal document on somebody's behalf, hiding its reasoning stops being convenience and becomes exposure. The review screen is the least clever thing in this project and almost certainly the most important.
And working at national scale reframed what a design decision costs. A dropdown that confuses 5% of users is a usability issue in most products. On a system serving 1.4 billion people it is tens of millions of citizens who never get heard, which is a different kind of number to be responsible for.
