All insights

Indic & Citizen Services

Handling Numerals, Dates and Units Correctly

· 11 minute read

Citizens do not lose trust because a model missed a proverb. They lose it when 05/06 becomes June, when 12.5 lakh becomes twelve rupees, or when a bigha is treated as a hectare. Write the numeral contract. Then test it.

A scholarship desk in Meerut rejected a complete file because the agent read the applicant's date of birth as 3 May when the school leaving certificate said 5 March. The digits were 03/05/2004. The model had been demoed on ISO dates from a Bangalore slide deck. The clerk trusted the red flag. The parent took a bus. The speaking order cited 'inconsistent dates'. The dates were consistent. The parser was colonial.

This is not a linguistics paper. It is the field guide we walk with system integrators and NIC / SDC owners before an Indic agent is allowed to touch money, eligibility or identity. Numerals, dates and units are not 'formatting'. They are the facts the file will be audited on.

Indian public language writes numbers in more than one script, groups them in lakhs and crores, dates them as day-month-year, and measures land in units the SI brochure forgot. An agent that 'supports Hindi' and fails those four is not a Hindi agent. It is an English agent wearing a Devanagari font.

Not legal advice. Metrology, official-language practice and your department's form manuals still sit with the competent authority. This article only stops you from buying a demo that never saw a ration-card date.

Write four contracts, not one language row

A language row that says Hindi, Devanagari, grievance SMS is still incomplete. Add four contracts the evaluator can fail: digits, dates, Indian grouping, and units. If you leave them implicit, the vendor will pass on news headlines and fail on your forms.

Digits: will the system accept and emit ASCII 0–9, Devanagari ०–९, and the other Indic digit blocks your citizens actually type? Will it treat them as the same integer? Will it refuse look-alike Unicode that is not a digit? A copy-paste from WhatsApp often mixes blocks in one string.

Dates: the Union's citizen-facing forms are overwhelmingly day-month-year. ISO-8601 is a store format, not a public contract. Ambiguous 03/05/04 strings must have a written rule: reject, or interpret as DD/MM/YY, or ask. Do not let the model 'infer'. Inference is how March becomes May.

Grouping: 12,50,000 and 12.5 lakh and 1.25 million are one quantity if you say so. If you do not say so, the agent will compare them as strings and invent a discrepancy. Crore, lakh, thousand, and the long scale some older files still use all belong in the contract.

Units: land, grain, electricity, water and medicine arrive in local units. A hectare is not a bigha. A quintal is not a tonne. A unit of power on a bill is not a kilowatt. Write the conversion table you will honour, and write 'out of scope' for the rest. Silent conversion is a finding.

What actually breaks after go-live

The demo uses 2024-01-15 and ₹1,000. Production uses 15.1.24, 15-01-24, 15 Jan 24, 15 जनवरी 2024, and 'pichle saal ke March'. Financial year 2025-26 is not calendar 2025. An agent that files a March 2026 payment against FY 2025-26 without a rule will mis-post.

Identity numbers have grouping that is not arithmetic. Aadhaar is twelve digits, often written in 4-4-4. PAN is five letters, four digits, one letter. A vehicle number is a state code plus series. Treating those as quantities, rounding them, or stripping leading zeros is how you mint a new person.

Money strings mix the rupee sign, 'Rs', 'INR', '/-', and words. '12.5 lakh only' is a cheque convention. '12.50' on a treasury scroll is paise. An agent that drops paise because the model likes whole rupees is not being helpful. It is rewriting the scroll.

Speech makes it worse. 'Saade barah lakh' is 1,250,000, not 12.5. 'Dedh' and 'dhai' are still live. If you take voice, the numeral contract must include those words or you must refuse voice for money fields.

Paste-ready fail cases. If the vendor cannot mark these on your stack, the language row is not passed.
Input the citizen actually typedWrong agent behaviourRequired behaviour
DOB 05/06/2005 on a CBSE marksheetStores 6 May or asks nothingStore 5 June, or reject as ambiguous and ask DD-MMM-YYYY
आय 12.5 लाखCompares to a threshold of 12.5 rupeesNormalise to 1,250,000 INR under a written rule
भूमि 2 बीघाConverts to 2 hectaresKeep native unit, or convert only from a department table
आधार ६२३४ ५५१२ ८८९०Strips to 623455128890 and then scientific notationKeep 12 digits, no rounding, script-normalised
FY 2025-26 bill dated 10 Apr 2026Books to calendar 2026 onlyTag both FY and calendar per the accounts manual

Store one way, display many, reason on the store

Do not let the model reason on the surface string. Normalise into a store the department owns: a date as a calendar date with a named calendar, an amount as a decimal in INR with a scale, a length as a SI unit plus the original unit as an audit field. Display can then be Hindi words, Devanagari digits, or English as the channel requires.

Keep the original string. When the auditor asks why the speaking order says 5 March, you will want the marksheet line, not the model's rewrite. Original plus normalised plus the rule version is the packet. Normalised alone is a story.

If you must emit Devanagari digits because a Rajbhasha instruction or a state circular says so, emit them at the edge. Do not store only those digits in a column that finance will later open in a tool that does not know the block.

Who owns the rule when the model disagrees with the form

The form manual wins. Then the accounts code. Then the official-language instruction on numerals if your office has one. The model never wins. If those three conflict, the file records the conflict and a human picks. That sentence belongs in the standing order.

System integrators like to hide the rule in a prompt. Prompts drift. Put the rule in a table the department can diff: date order, FY start, lakh multiplier, unit map, digit blocks accepted. Version it. Cite the version in the packet.

  • A prompt is not a metrology standard.
  • A vendor 'locale pack' is not your form manual.
  • A bilingual UI chrome is not a numeral contract.
  • A successful English demo is evidence of nothing about ०–९.

Two files that turned on a digit

Objections you will hear — and what to do with them

These are the lines that stall the file. Answer them in the room, then put the answer in the note. A spoken answer without paper will be forgotten by the next officer.

The model is multilingual. This is a prompt tweak.

Multilingual is a brochure word. Prompt tweaks die when the next engineer 'simplifies' the system prompt. Put the contract in a tested normaliser and an evaluation set of real strings. If the vendor refuses to run that set, they are selling a chat window.

We will just force citizens to pick from a date picker.

Do that on new digital forms. You still have PDFs, WhatsApp photos, CSVs from other departments, and voice. The agent that reads those channels needs the contract even if your HTML form is perfect.

Devanagari digits are rare now.

They are rare in your secretariat. They are not rare on school certificates, older land records, or phones whose keyboards default to the local digit block. Measure your last six months of tickets before you delete the row.

Unit conversion is a later phase.

Then write land and grain fields as out of scope for the agent. What you must not do is let the model convert silently in phase one and call it helpful.

Four weeks to a numeral contract you can mark

You do not need a computational-linguistics cell. You need last year's forms and one accounts officer who hates ambiguity.

  1. Week 1: pull 200 real strings that contain a date, an amount, an identity number or a unit. De-identify. Split them the way a clerk would, not the way a tokenizer would.
  2. Week 2: write the four contracts. Name the date order, the FY rule, the lakh/crore multipliers, the digit blocks, and the unit table. Mark everything else out of scope.
  3. Week 3: implement or demand a normaliser that emits store values plus the original string. Freeze a held-out pack the vendor does not see.
  4. Week 4: sit the scored demo on that pack. Fail the language row if March and May still swap, even if the Hindi prose is beautiful.

File note you can paste

Subject: Numeral, date and unit handling for the proposed citizen agent — conditions of go-live.

This department will not treat 'Indic support' as complete unless the bidder passes the attached numeral pack. Dates will be interpreted as day-month-year unless the source document names another order. Amounts written with lakh or crore will be expanded before comparison. Identity numbers will not be rounded. Units will not be converted except from the attached table. Original strings will be retained with the normalised store values.

A vendor locale pack or a multilingual model card is supporting paper. It is not the contract. This note is an internal aid. It is not legal advice.

What we will refuse to hide in a prompt

Prcept AI will put date order, Indian grouping and unit maps in a versioned table on your side of the rack. We will sit an eval on your numeral pack. We will not claim that a larger checkpoint makes 05/06 unambiguous. If a competitor can show a better pack on your strings, compete us.

The citizen who lost a day of wages to a flipped date does not care which GPU we used. She cares that the file matched the marksheet. Build for her, not for the demo.

This article is informational field guidance for Indian public institutions, not legal, language-policy, procurement, finance or engineering advice. Confirm against the live Gazette, Official Languages Act and Rules, your State's official-language law, MeitY / IndiaAI notices, GFR, GeM terms, DPDP text, departmental manuals and your counsel before you file it.

Questions this usually raises

Should we store Devanagari digits in the database?
Store a normalised numeric or date type plus the original string. Emit Devanagari digits at the edge if your official-language practice requires it. Do not make the accounts tool the Unicode victim.
Is DD/MM/YYYY required by the Official Languages Act?
The Act and the 1976 Rules regulate language of specified Union documents, not a single date picture. Your form manuals and accounts codes usually decide the picture. Write the rule you will apply. Do not invent a statutory date format.
How many eval items are enough for numerals?
Enough to cover each fail class twice: ambiguous dates, lakh/crore, mixed digit blocks, identity grouping, FY versus calendar, and every unit you claim to convert. Twenty perfect items that miss a class are a fake pass.
Can we let the model ask the citizen when a date is ambiguous?
Yes, if the channel allows a question and you log the ask. Silent inference is the failure. Asking and then ignoring the answer is also a failure.
Do voice agents need a separate numeral contract?
Yes. Spoken fractions, 'saade', 'dedh', and code-mix amounts are their own class. Do not infer voice safety from text scores.
What if two source documents disagree on a date?
That is a human file, not a model problem. Surface both original strings and stop. Do not average dates and do not pick the one that makes eligibility easier.

Sources