Skip to main content

AI market research simulation using NVIDIA Nemotron personas and Claude Code Agents

Project description

market-simulation

AI-powered market research simulation for Korean consumers — no local LLM or API key required.

Simulate how real Korean personas respond to your product, price point, or service concept using NVIDIA Nemotron-Personas-Korea (1M demographically grounded personas, CC BY 4.0) and Claude Code's built-in agent system.


How it works

HuggingFace dataset          Claude Code skill
(1M Korean personas)  ──▶   filter by target segment
                      ──▶   batch into groups of 5
                      ──▶   6 parallel sub-agents (isolated context per batch)
                      ──▶   collect responses → CSV + report

Each sub-agent receives a batch of 5 persona profiles and responds in character as each person — independently, with no cross-contamination between batches. Results are saved as a CSV and a structured Markdown report.


Requirements

  • Claude Code (any plan — uses your existing subscription, no extra API key)
  • Python 3.10+
pip install datasets pandas pyarrow

First run downloads and caches the Nemotron dataset (~few GB). Subsequent runs load from cache instantly.


Quick start

As a Claude Code skill

  1. Install the package:
pip install market-simulation
  1. Copy SKILL.md to your Claude Code skills directory:
pip show market-simulation | grep Location | awk '{print $2}'
# copy SKILL.md from that location, or download directly:
curl -o ~/.claude/skills/market-simulation.md \
  https://raw.githubusercontent.com/lumatic2/market-simulation/master/SKILL.md
  1. Trigger from any Claude Code session:
서울 30대 직장인들이 월 9,900원 커피 구독 서비스에 어떻게 반응할지 시뮬해줘

Claude will ask for your target segment and question, then run the simulation.

Simulation outputs (CSV + report) are saved to output/ in your current working directory.

Programmatically

from market_simulation import load_pool, filter_pool, occupation_kw

# Load and filter personas
df = load_pool('korea', sample_n=50000)
pool = filter_pool(
    df,
    province='서울',
    age_range=(25, 39),
    occupation_keywords=occupation_kw('IT'),
)
sample = pool.sample(20, random_state=42)
print(f'{len(sample)} personas ready')

Simulation limits

Value Why
Default 20 personas Sufficient for theme saturation
Hard cap 30 personas 6 agents × 5 personas. Returns diminish beyond this
Batch size 5 per agent Context isolation + response quality

Simulation results are LLM-generated hypotheses, not real market data. Use for directional insight and relative comparisons (segment A vs B, price X vs Y), not absolute predictions.


Output

output/
├── 2026-05-02_coffee-subscription.csv       # raw responses
└── 2026-05-02_coffee-subscription.report.md # auto-generated stats report

CSV columns: id, age, sex, occupation, province, district, answer

Report includes: response rate, demographic breakdown, full response quotes, and a prompt to synthesize a .summary.md with pattern clusters and key insights.


Dataset

Field Value
Source nvidia/Nemotron-Personas-Korea
Size ~1M personas
License CC BY 4.0 (commercial use allowed)
Grounding Korean census data, demographic distributions
Also available Japan, USA, France, and more

Disclaimer

  • Simulation results are LLM-generated hypotheses, not real survey data.
  • Response rates and approval ratios are inflated by LLM positive bias — trust relative comparisons within the same simulation, not absolute values.
  • Persona dataset is publicly available under CC BY 4.0; cite NVIDIA accordingly.

Project structure

market-simulation/
├── SKILL.md          ← Claude Code skill entrypoint
├── src/
│   ├── personas.py   ← HuggingFace loader, filter, card builder
│   └── analyze.py    ← CSV → stats report generator
└── output/           ← simulation results (gitignored)

License

Code: MIT
Persona data: CC BY 4.0 (NVIDIA)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

market_simulation-0.1.0.tar.gz (9.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

market_simulation-0.1.0-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file market_simulation-0.1.0.tar.gz.

File metadata

  • Download URL: market_simulation-0.1.0.tar.gz
  • Upload date:
  • Size: 9.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for market_simulation-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e2a57a6777fb69eed4de5f3242a57a4dd90fc81c5ddddf5e04634ed8f176114e
MD5 5505035a49b1eab4d9333bce168fd57a
BLAKE2b-256 dc26863f2a347f832aa991be603eb3da5c9941a990ad0ee02dede9b9ea48c063

See more details on using hashes here.

File details

Details for the file market_simulation-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for market_simulation-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c100beb1692376b2862b9020d41de7b6f5865b0bb79ee06d6972c6aa04fb9c11
MD5 628f5adcecc48bae81ea7431ee551615
BLAKE2b-256 4543b38245096c5a4fb2695feaa0213bd6bc9759f129b837338f44399dd5caef

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page