Python API

pip install indian-fakedata

Requires Python 3.8+. Zero runtime dependencies. The whole database is bundled (JSON) — no downloads, works offline.

Core generation

from indian_fakedata import (
    generate,
    generate_stream,
    get_distribution_summary,
)

# Generate 5 profiles
profiles = generate(count=5)

# Seeded + constrained
tn = generate(
    count=3,
    seed="011",                     # numbers or strings
    constraints={
        "state": "Tamil Nadu",
        "gender": "female",
        "areaType": "rural",
        "minAge": 18,
        "maxAge": 45,
    },
)

# Memory-efficient stream
for p in generate_stream(count=100000):
    pass  # process one by one

# Distribution summary
summary = get_distribution_summary()

generate() parameters

ParameterTypeDescription
countintNumber of profiles (default 1)
seedint | strReproducibility seed (default random)
constraintsdictDemographic filters (below)
include_probability_metricsboolInclude probability chain (default True)

Constraint keys are camelCase: state, gender, religion, caste, socialCategory, areaType, minAge, maxAge, education, occupation, maritalStatus, surname.

Enrichment API

from indian_fakedata import (
    generate_enriched,
    generate_enriched_stream,
    simulate_outcomes,
    generate_narrative,
    generate_all_narratives,
    generate_agent_persona,
)

enriched = generate_enriched(
    count=1,
    include_outcomes=True,       # Layer 2
    narrative_types=["all"],     # Layer 3
    include_agent_persona=True,  # Layer 4
    bias_level=0.3,
)[0]

print(enriched["profile"]["firstName"], enriched["outcomes"]["credit"]["creditScore"])
print(enriched["agentPersona"]["systemPrompt"])

User / Family / Persona (faker-style)

from indian_fakedata import generate_user, generate_users, generate_family, generate_persona

# One profile (README sample shape)
user = generate_user(seed=7)

# Many users from one seed
users = generate_users(count=5, seed="011")

# Shortcut flags
dev = generate_user(
    highly_educated=True,
    gender="female",
    marital_status="married",
    constraints={"state": "Karnataka"},
)

# Whole household: spouse, parents, children, siblings
family = generate_family(seed="011")

# User + LLM-ready persona
out = generate_persona(seed="011")
user, persona = out["user"], out["persona"]
# persona["systemPrompt"], persona["fullPrompt"], persona["beliefs"],
# persona["memorySeeds"], persona["behaviorRules"]
print(user["educationTimeline"])   # chronological school/college history
print(user["personalityTraits"])   # descriptive traits from Big Five
print(user["moviePreferences"])    # genres, languages, anime preferences
print(user["appearance"])          # face, skin tone, eyes, hair, build
print(user["employmentTimeline"])  # v2.0.9: chronological job spells
print(user["skills"])              # v2.0.9: skills, certs, languages

Validation, privacy & personas (v2.0.9)

from indian_fakedata import (
    validate_profile, get_profile_schema, strip_pii,
    generate_agent_persona,
)

result = validate_profile(user)   # {"valid": ..., "errors": [...]}
schema = get_profile_schema()     # versioned JSON Schema
safe = strip_pii(user)            # share-safe copy
hindi = generate_agent_persona(user, "hindi")

Exporters

from indian_fakedata import generate_enriched, save_profiles, format_profiles

dataset = generate_enriched(count=50, include_outcomes=True)

save_profiles(dataset, "./output.json", "json")
save_profiles(dataset, "./output.jsonl", "jsonl")
save_profiles(dataset, "./output.csv", "csv")  # flattened automatically
csv_string = format_profiles(dataset, "csv")

Custom data

from indian_fakedata import load_database

# Merge custom JSON files (states.json, religions.json, casteMap.json,
# firstNames.json, surnames.json, districts.json) from a directory
db = load_database("./my-data-dir")

Module contents

generate, generate_stream, get_distribution_summary, generate_enriched, generate_enriched_stream, simulate_outcomes, generate_narrative, generate_all_narratives, generate_agent_persona, generate_user, generate_users, generate_persona, generate_family, create_rng, weighted_sample, weighted_sample_from_record, load_database, format_profiles, save_profiles.