Abhay557/IndianPersona-1M
IndianPersona-1M — Synthetic Indian Demographics & LLM Agent Personas 1,000,000 culturally-grounded synthetic Indian demographic profiles plus 250,000 ready-to-use LLM agent personas — generated entirely with the open-source indian-fakedata library (PyPI · npm). This dataset is 100% synthetic. Every row carries synthetic = true. All identifiers (Aadhaar, PAN, voter ID, phone, email) are fabricated and exist in no government or commercial database. No real individual is… See the full description on the dataset page: https://huggingface.co/datasets/Abhay557/IndianPersona-1M.
IndianPersona-1M — Synthetic Indian Demographics & LLM Agent Personas
1,000,000 culturally-grounded synthetic Indian demographic profiles plus 250,000 ready-to-use LLM agent personas — generated entirely with the open-source `indian-fakedata` library (PyPI · npm).
This dataset is 100% synthetic. Every row carries synthetic = true. All identifiers (Aadhaar, PAN, voter ID, phone, email) are fabricated and exist in no government or commercial database. No real individual is represented.Why this dataset
Most synthetic demographic generators produce statistically independent fields — a name that could be from anywhere, an income that ignores education, an address that ignores everything. This dataset is built on a correlated generation model: each person is drawn through a realistic dependency chain (religion → state → caste → mother tongue → names → education → occupation → income), calibrated against Census 2011, NFHS-5 and public survey statistics.
The personas config goes further: every profile is expanded into a complete LLM agent — a short systemPrompt and a ~3KB self-contained fullPrompt covering identity, education timeline, work & finances, Big Five personality traits, movie & anime preferences, habits, beliefs, memories and behaviour rules. Feed it to any LLM and it acts as that person.
Configs
from datasets import load_dataset
# LLM personas (roleplay / simulation / eval)
personas = load_dataset("abhay557/IndianPersona-1M", split="train")
# raw tabular profiles (testing, dashboards, ML)
base = load_dataset("abhay557/IndianPersona-1M", "base", split="train")Sample persona prompt (personas[0].fullPrompt, truncated)
You are Reema Yadav, a 27-year-old female from Khagaria, Bihar, India...
IDENTITY
- Religion: Hindu; Caste/community: Yadav; Social category: OBC
...
EDUCATION
- 2006-2012: Primary School — Government Primary School, Khagaria (Bihar School Examination Board)
...
PERSONALITY
- A balanced, adaptable person who is practical, easy-going and kind-hearted...
INTERESTS & PREFERENCES
- Movies: Drama, Comedy (in Hindi); Anime fan: yes
HOW TO SPEAK & BEHAVE
- Occasionally use Hindi words or phrases when expressing strong emotions...
- Stay fully in character at all times.Reproducibility
Every shard was generated with a fixed seed recorded in `manifest.json` (indianpersona-base-0..9, indianpersona-personas-0..4) — regenerate byte-identical data locally:
pip install indian-fakedata pandas pyarrow
python generate_dataset.pyIntended use
Software testing, ML/AI research, social simulation, game/fiction character generation, education, dashboard prototyping.
Prohibited use
Fake identity documents or KYC evasion; bot accounts or personas interacting with real humans; disinformation, impersonation or spam; presenting this data as real statistics about real people. See the full policy in the repository README.
Citation
@misc{mourya2026indianpersona,
title = {IndianPersona-1M: Synthetic Indian Demographic Profiles and LLM Agent Personas},
author = {Abhay Mourya},
year = {2026},
url = {https://github.com/Abhay557/indian-fakedata}
}