> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gnani.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Input Formatting Guide

> How to format numbers, IDs, currency, and dates in the text field for correct TTS pronunciation.

## Overview

The TTS engine is sensitive to how structured data is written in the `text` field. Passing raw strings like `9876543210` or `Rs. 1,00,000` causes mispronunciations or garbled output.

**Core principle:**

* **Read digit-by-digit** (IDs, PINs, account numbers, phone numbers) → separate every character with a single space: `9 8 7 6 5 4 3 2 1 0`
* **Read as a quantity** (prices, floor numbers, years) → pass as-is: `Rs 1,00,000`

***

## 1. Phone Numbers

Separate every digit with a single space. Never pass a raw digit string — the engine reads it as a large cardinal number.

| Scenario                 | Raw Input       | Correct TTS Input           | Expected Speech                                       |
| ------------------------ | --------------- | --------------------------- | ----------------------------------------------------- |
| Mobile (India, 10-digit) | `9876543210`    | `9 8 7 6 5 4 3 2 1 0`       | nine eight seven six five four three two one zero     |
| Landline with STD code   | `01122334455`   | `0 1 1 2 2 3 3 4 4 5 5`     | zero one one two two three three four four five five  |
| International (+91)      | `+919876543210` | `+ 9 1 9 8 7 6 5 4 3 2 1 0` | plus nine one nine eight seven six...                 |
| Toll-free                | `18001234567`   | `1 8 0 0 1 2 3 4 5 6 7`     | one eight zero zero one two three four five six seven |

<Warning>
  Do **not** pass `9876543210`, `987-654-3210`, or `(987) 654-3210` — all cause the engine to misread.
</Warning>

***

## 2. Account Numbers

Every character — digit or letter — must be separated by a single space. Account numbers may be alphanumeric; each character is read individually.

| Scenario                 | Raw Input      | Correct TTS Input         | Expected Speech                                    |
| ------------------------ | -------------- | ------------------------- | -------------------------------------------------- |
| Bank account (numeric)   | `012345678901` | `0 1 2 3 4 5 6 7 8 9 0 1` | zero one two three four five...                    |
| Alphanumeric account     | `AB123456789`  | `A B 1 2 3 4 5 6 7 8 9`   | A B one two three four five six seven eight nine   |
| Loan account             | `LN2024001234` | `L N 2 0 2 4 0 0 1 2 3 4` | L N two zero two four zero zero one two three four |
| Masked (partial visible) | `XXXX1234`     | `X X X X 1 2 3 4`         | X X X X one two three four                         |

***

## 3. PIN Numbers

Each digit must be separated by a single space. The digit `0` is always spoken as **"zero"**, never **"oh"**. Leading zeros must never be dropped.

| Scenario            | Raw Input | Correct TTS Input | Expected Speech                           |
| ------------------- | --------- | ----------------- | ----------------------------------------- |
| 4-digit ATM PIN     | `4821`    | `4 8 2 1`         | four eight two one                        |
| 6-digit OTP/PIN     | `739201`  | `7 3 9 2 0 1`     | seven three nine two zero one             |
| PIN starting with 0 | `0492`    | `0 4 9 2`         | zero four nine two *(not: four nine two)* |
| 6-digit postal PIN  | `560001`  | `5 6 0 0 0 1`     | five six zero zero zero one               |

***

## 4. Addresses

Street and house numbers are read as quantities (not digit-by-digit). Postal PIN codes inside addresses must be digit-by-digit. Road abbreviations (MG, NH) must be letter-spaced. Replace `/` with the word `slash`.

| Component             | Raw Input                         | Correct TTS Input                      | Expected Speech                                             |
| --------------------- | --------------------------------- | -------------------------------------- | ----------------------------------------------------------- |
| Flat + floor          | `Flat 4B, 2nd Floor`              | `Flat 4 B, 2nd Floor`                  | Flat four B, second floor                                   |
| House/door number     | `No. 12/3, MG Road`               | `Number 12 slash 3, M G Road`          | Number twelve slash three, M G Road                         |
| Postal PIN in address | `Bengaluru - 560001`              | `Bengaluru, 5 6 0 0 0 1`               | Bengaluru, five six zero zero zero one                      |
| Full address          | `42, MG Road, Bengaluru - 560001` | `42, M G Road, Bengaluru, 5 6 0 0 0 1` | forty two, M G Road, Bengaluru, five six zero zero zero one |
| Apartment unit        | `B-204, Prestige Apts`            | `B 204, Prestige Apts`                 | B two zero four, Prestige Apartments                        |

***

## 5. Aadhaar Card Numbers

Aadhaar is a 12-digit unique ID. Every digit must be separated by a single space. Strip any existing grouping spaces (4-4-4 format) before re-spacing individually.

| Scenario       | Raw Input        | Correct TTS Input         | Expected Speech                                             |
| -------------- | ---------------- | ------------------------- | ----------------------------------------------------------- |
| Full Aadhaar   | `234567891234`   | `2 3 4 5 6 7 8 9 1 2 3 4` | two three four five six seven eight nine one two three four |
| Grouped format | `2345 6789 1234` | `2 3 4 5 6 7 8 9 1 2 3 4` | *(strip groups first, same result)*                         |
| Masked Aadhaar | `XXXX XXXX 1234` | `X X X X X X X X 1 2 3 4` | X X X X X X X X one two three four                          |

***

## 6. Vehicle Registration Numbers

Indian vehicle registration numbers follow the format: **State Code** (2 letters) + **District Code** (2 digits) + **Series** (1–3 letters) + **Number** (4 digits). Each character is separated by a single space. Always strip hyphens before formatting. Letters must be uppercase.

**Format:** `[State Code] [District No.] [Series] [Reg. Number]`\
**Example:** `KA | 09 | MF | 1234` → `K A 0 9 M F 1 2 3 4`

| Scenario          | Raw Input       | Correct TTS Input     | Expected Speech                      |
| ----------------- | --------------- | --------------------- | ------------------------------------ |
| Standard          | `KA09MF1234`    | `K A 0 9 M F 1 2 3 4` | K A zero nine M F one two three four |
| With hyphens      | `KA-09-MF-1234` | `K A 0 9 M F 1 2 3 4` | K A zero nine M F one two three four |
| Delhi vehicle     | `DL4CAF0001`    | `D L 4 C A F 0 0 0 1` | D L four C A F zero zero zero one    |
| Maharashtra       | `MH12DE1433`    | `M H 1 2 D E 1 4 3 3` | M H one two D E one four three three |
| Tamil Nadu        | `TN22BC5678`    | `T N 2 2 B C 5 6 7 8` | T N two two B C five six seven eight |
| Bharat series     | `BH01AB1234`    | `B H 0 1 A B 1 2 3 4` | B H zero one A B one two three four  |
| 2-wheeler (short) | `KA05V1234`     | `K A 0 5 V 1 2 3 4`   | K A zero five V one two three four   |

<Warning>
  Do **not** pass `KA-09-MF-1234` with dashes and no spaces — the engine may misread the state code.
</Warning>

***

## 7. GST Numbers (GSTIN)

GSTIN is a 15-character alphanumeric code. Every character must be separated by a single space. Lowercase letters must be converted to uppercase. The letter `Z` at position 14 is always read as the letter **"Z"**, not **"zero"**.

**Structure:** `[State Code 2 digits]` + `[PAN 10 chars]` + `[Entity No.]` + `[Z]` + `[Check digit]`

| Scenario    | Raw Input         | Correct TTS Input               | Expected Speech                                      |
| ----------- | ----------------- | ------------------------------- | ---------------------------------------------------- |
| Karnataka   | `29ABCDE1234F1Z5` | `2 9 A B C D E 1 2 3 4 F 1 Z 5` | two nine A B C D E one two three four F one Z five   |
| Maharashtra | `27AABCU9603R1Z6` | `2 7 A A B C U 9 6 0 3 R 1 Z 6` | two seven A A B C U nine six zero three R one Z six  |
| Delhi       | `07AAACR5055K1ZR` | `0 7 A A A C R 5 0 5 5 K 1 Z R` | zero seven A A A C R five zero five five K one Z R   |
| Tamil Nadu  | `33AAACP1234C1Z1` | `3 3 A A A C P 1 2 3 4 C 1 Z 1` | three three A A A C P one two three four C one Z one |

<Warning>
  Do **not** pass raw (`29ABCDE1234F1Z5`) or hyphenated (`29-ABCDE-1234-F1Z5`) formats — always space each character individually.
</Warning>

***

## 8. Dates

Accepted formats: `DD/MM/YY`, `DD-MM-YY`, `DD/MM/YYYY`, `DD-MM-YYYY`, `DD Month YYYY`, `DDth Month YYYY`. Do not mix separators. Use 4-digit years for historical dates.

| Format           | Correct TTS Input  | Expected Speech                           | Notes                                                 |
| ---------------- | ------------------ | ----------------------------------------- | ----------------------------------------------------- |
| `DD/MM/YY`       | `15/08/47`         | fifteenth August forty-seven              | YY defaults to 2000s unless context implies otherwise |
| `DD-MM-YY`       | `01-01-24`         | first January twenty-four                 |                                                       |
| `DD/MM/YYYY`     | `15/08/2024`       | fifteenth August two thousand twenty-four | Preferred for unambiguous reading                     |
| `DD-MM-YYYY`     | `01-01-2025`       | first January two thousand twenty-five    |                                                       |
| Natural language | `15th August 2024` | fifteenth August two thousand twenty-four | Use ordinal suffix always                             |
| Short month      | `15 Aug 2024`      | fifteenth August two thousand twenty-four |                                                       |

<Warning>
  Do **not** mix separators — `15/08-2024` causes a parsing error and engine failure.
</Warning>

***

## 9. Currency and Prices

Indian Rupee must always be written as `Rs` — exact case, no period, no lowercase, no `INR`. Place the symbol before the amount with a single space. Use Indian comma grouping (`1,00,000`) for Rupee amounts — the engine reads lakh and crore natively from this format.

| Currency             | Do NOT Use                                   | Correct TTS Input | Expected Speech               |
| -------------------- | -------------------------------------------- | ----------------- | ----------------------------- |
| Indian Rupee         | `rs 500` / `RS. 500` / `Rs. 500` / `INR 500` | `Rs 500`          | five hundred rupees           |
| Rupee + paise        | `Rs.49.50` / `rs 49.50`                      | `Rs 49.50`        | forty-nine rupees fifty paise |
| Large amount (lakh)  | `Rs 100000`                                  | `Rs 1,00,000`     | one lakh rupees               |
| Large amount (crore) | `Rs 10000000`                                | `Rs 1,00,00,000`  | one crore rupees              |
| US Dollar            | `dollar 20` / `USD20`                        | `$ 20`            | twenty dollars                |
| Euro                 | `euro 15` / `EUR15`                          | `€ 15`            | fifteen euros                 |
| British Pound        | `pound 30` / `GBP 30`                        | `£ 30`            | thirty pounds                 |
| Japanese Yen         | `yen 1000` / `JPY1000`                       | `¥ 1000`          | one thousand yen              |

***

## 10. Abbreviations and Acronyms

Acronyms and abbreviations must always be **UPPERCASE**. Lowercase or mixed-case versions risk being misread as words. Each uppercase letter is read individually.

| Type           | Do NOT Use      | Correct TTS Input | Expected Speech |
| -------------- | --------------- | ----------------- | --------------- |
| Organisation   | `rnr` / `Rnr`   | `RNR`             | R N R           |
| Paramilitary   | `crpf` / `Crpf` | `CRPF`            | C R P F         |
| Space agency   | `isro` / `Isro` | `ISRO`            | I S R O         |
| Finance term   | `emi` / `Emi`   | `EMI`             | E M I           |
| National ID    | `pan`           | `PAN`             | P A N           |
| Identity check | `kyc` / `Kyc`   | `KYC`             | K Y C           |
| OTP/security   | `otp`           | `OTP`             | O T P           |
| Vehicle type   | `suv`           | `SUV`             | S U V           |
| Tax            | `gst`           | `GST`             | G S T           |

<Note>
  Some acronyms pronounced as words (NASA, NEFT, SWIFT) may be read as words rather than letter-by-letter. Verify pronunciation during QA for each acronym used in your content.
</Note>

***

## 11. Ordinal Numbers

Always include the ordinal suffix (`st`, `nd`, `rd`, `th`). Without it, the engine reads bare numbers as cardinals ("one", "two") instead of ordinals ("first", "second").

| Context          | Do NOT Use           | Correct TTS Input      | Expected Speech          |
| ---------------- | -------------------- | ---------------------- | ------------------------ |
| Floor            | `3 floor`            | `3rd floor`            | third floor              |
| Rank             | `1 rank`             | `1st rank`             | first rank               |
| Date in sentence | `The 15 of August`   | `The 15th of August`   | the fifteenth of August  |
| Anniversary      | `25 anniversary`     | `25th anniversary`     | twenty-fifth anniversary |
| Queue position   | `You are 2 in queue` | `You are 2nd in queue` | you are second in queue  |

***

## 12. Decimals and Percentages

Use a period (`.`) as the decimal separator — never a comma. Percentages use the `%` symbol directly after the number with no space. Avoid trailing zeros in Rupee amounts unless paise must be communicated.

| Type                      | Do NOT Use       | Correct TTS Input | Expected Speech                             |
| ------------------------- | ---------------- | ----------------- | ------------------------------------------- |
| Interest rate             | `8,5%`           | `8.5%`            | eight point five percent                    |
| Discount                  | `20 percent off` | `20% off`         | twenty percent off                          |
| Rupee (no trailing zeros) | `Rs 1,234.00`    | `Rs 1,234`        | one thousand two hundred thirty-four rupees |
| Weight/measure            | `1,5 kg`         | `1.5 kg`          | one point five kilograms                    |
| Score/ratio               | `7,8 out of 10`  | `7.8 out of 10`   | seven point eight out of ten                |

***

## Quick Reference

| Data Type            | Rule                                                              | Example                            |
| -------------------- | ----------------------------------------------------------------- | ---------------------------------- |
| Phone Number         | Each digit separated by single space                              | `9 8 7 6 5 4 3 2 1 0`              |
| Account Number       | Each character (alpha + digit) separated by single space          | `A B 1 2 3 4 5 6 7 8 9`            |
| PIN Number           | Each digit by single space; `0` = "zero" never "oh"               | `4 8 2 1`                          |
| Aadhaar Number       | Each of 12 digits separated by single space                       | `2 3 4 5 6 7 8 9 1 2 3 4`          |
| Vehicle Reg. Number  | Each character separated by single space; strip hyphens           | `K A 0 9 M F 1 2 3 4`              |
| GST / GSTIN          | All 15 characters separated by single space; uppercase only       | `2 9 A B C D E 1 2 3 4 F 1 Z 5`    |
| Address (postal PIN) | PIN digits only → digit-by-digit; house numbers read naturally    | `Bengaluru, 5 6 0 0 0 1`           |
| Currency (Rupee)     | Use `Rs` — not `rs` / `RS` / `Rs.` / `INR`; Indian comma grouping | `Rs 1,00,000`                      |
| Currency (others)    | Use symbol `$` `€` `£` `¥` before amount with one space           | `$ 20` / `€ 15`                    |
| Dates                | `DD/MM/YYYY` or `DD-MM-YYYY`; ordinal suffix in natural language  | `15/08/2024` or `15th August 2024` |
| Acronyms             | Always UPPERCASE — never lowercase or mixed case                  | `CRPF` `KYC` `OTP`                 |
| Ordinals             | Always include suffix: `1st`, `2nd`, `3rd`, `15th`                | `3rd floor` / `15th August`        |
| Decimals             | Period (`.`) not comma; `%` directly after number                 | `8.5%` / `1.5 kg`                  |
