페르소나 구매/반응 시뮬레이션
mymai 가격 전략 수립에서 검증된 방법론 (2026-08-10~11, r1/r2/r3). 어떤 제품이든 적용 가능.
언제 쓰나
- 가격 구조·기능 우선순위·포지셔닝에 대한 가설이 필요하고 실사용자가 아직 없을 때.
- 쓰면 안 되는 것: PMF 판정(Sean Ellis 대체), 시장 규모 추정, 실제 전환율 예측. 숫자의 절대치가 아니라 비율 구조와 반론 카탈로그가 산출물이다.
절차
0. 제품 브리프 작성 (가장 중요)
product_brief.md를 만든다. 약점을 전부 명시해야 결과가 쓸모 있다(다운로드 크기, 메모리, 지연, 생태계 부재, 인지도 0, 가격 비교대상 등). 가격/기능 선택지는 A/B/C… 라벨로. 각 라운드에서 바뀐 것만 "vN 변경점" 섹션에 명시.
1. 표본 추출 — scripts/sample_personas.py
- 소규모(정성, ~30명): HF 공개 샘플 999명 (datasets-server API, 디코딩된 wide 포맷) — 스크립트가 자동 처리.
- 대규모(정량): 원본 shard 다운로드 + 니블 디코딩 — 스크립트가 자동 처리. 필요 n은
n = z²·p(1-p)/e² (99%·±3%p·p=0.5 → 1,844; 95%·±3%p → 1,068).
- 필터·층화 기준을 인자로 지정 (예:
--eco Apple,Mixed --min-age 18 --stratify tech_savviness).
- 모집단 정의를 정직하게 기록: 필터 결과가 특정 소스(예: 스택오버플로=개발자)로 쏠리면 그 사실이 곧 모집단 정의다. 리포트에 반드시 명시.
- 주의: 공개 샘플에는 아동·모순 페르소나(나이 필드 오류)가 섞여 있다. 연령 필터를 걸고, 모순 발견 시 처리 원칙(성인 재해석 vs 미성년 유지)을 기록.
2. 시뮬레이션 실행
정성 모드 (탐색·반론 수집): 서브에이전트 5명/팀 × 6팀, 자유 서술 출력(첫 반응/반론 목록/가격 반응/전환 조건/타겟 적합도). 결과를 종합 에이전트가 세그먼트·반론 카탈로그·가격 논리로 정리.
정량 모드 (확인·CI): Workflow로 20명/에이전트 × ~95, schema 강제 구조화 출력 — 파싱 오류 0가 된다:
{id, install: yes|no, trial: yes|no, pay: yes|no|conditional, reason(한 줄), segment, price_feel}
아첨 방지 규칙 (프롬프트에 반드시 포함):
- "현실의 사람 대부분은 유틸리티 앱을 안 산다. 기본값은 회의."
- 설치-후-방치(install-and-forget)는 매우 흔한 패턴 — 반영 강제.
- 약점(브리프의 마찰 목록)에 in-character로 반응할 것.
- 언어 미지원 = 실제 블로커 (영어 능숙도 고려), 멀티 기기 환경 = 가치 희석, 저소득/구독 피로 = 결제 저항.
- 재평가 라운드(vN→vN+1)는 일관성 원칙: 변경점이 진짜 블로커였던 페르소나만 결과 변화 허용. "개선된 시나리오가 무관한 페르소나까지 부풀리는" 것을 금지하고, 에이전트에게 이전 라운드 결과 파일을 주고 차이만 정당화시킨다.
3. 집계 — scripts/aggregate.py
Wilson 99% CI(깔때기 각 단계), 교차분석(페르소나 카드 속성 join: 생태계/연령/태도/보안민감도별 결제율), 미결제 사유 키워드 테마 클러스터, 조건부 결제의 조건 분류.
4. 리포트 필수 섹션
방법론(표본 프레임·모집단 정의·디코더 검증) / 깔때기+CI / 교차분석 / 사유 카탈로그 / 이전 라운드와의 정합성 / 한계 / 권고.
한계 섹션 보일러플레이트 (생략 금지):
- 합성 시뮬레이션 — CI는 시뮬레이션 추정치의 정밀도이지 현실 적중률이 아니다. 정밀하게 틀릴 수 있다.
- 노출 가정의 낙관성 — "제품 설명을 끝까지 읽은" 상태에서 출발하므로 발견 깔때기가 빠져 절대치가 부풀려진다.
- 모집단 ≠ 전체 시장 (필터가 만든 모집단을 명시).
- 단일 판정, 아첨 편향 잔존 가능.
5. 라운드 운영
r1 정성(넓게 탐색) → 발견을 반영해 브리프 수정 → r2 정성(변경점 검증, 일관성 원칙) → 의사결정 수렴 후 r3 정량(확정안 단일 시나리오, CI). 세 라운드면 충분 — 그 이상은 같은 그림을 더 정밀하게 그릴 뿐이며, 다음 정보 증분은 실측에서만 나온다고 보고할 것.
데이터셋 기술 세부 (재유도 방지용)
MatrAIx2026/MatrAIx_Persona_1M (HF). 공개 샘플: datasets-server API ?dataset=...&config=sample&split=train (999행, wide). 원본: data/persona-1m-NNNN.parquet 10개 shard (행 10만 개씩).
- 원본 포맷:
attributes fixed_size_binary[645] = 1,290속성 × 4비트 니블, low-first(짝수 인덱스=하위 니블). null_bitmap 162바이트, 비트=0이 populated (LSB-first). 어휘 16개 초과 필드는 attribute_overrides(field_index→문자열). 코드북: persona_codes.schema.json의 columns (id, values 순서 = 코드).
- 디코더 검증법: 행별
populated_attribute_count == 비트맵 popcount(극성 확인), populated 필드의 코드 범위초과율 0%(니블 순서 확인).
- shard 구성: 0–2 wiki(Q-id), 3 wiki+amazon, 4 amazon+stackoverflow, 5 stackoverflow+GSS+실제설문, 6–9 synthetic(희소). 기기 생태계 필드는 사실상 스택오버플로 소스에만 존재 → 생태계 필터를 걸면 모집단은 개발자가 된다.
- 대용량 shard는 사용 후 삭제(1GB+), 표본/판정 JSON은 보존.
1---2name: persona-sim3description: 제품/가격/기능에 대한 소비자 반응을 MatrAIx_Persona_1M 실측 기반 페르소나로 시뮬레이션. 정성 라운드(~30명, 서브에이전트 패널)로 가설을 만들고, 정량 라운드(n≥1,844, 99% CI ±3%p, Workflow)로 확인한다. 합성 가설 생성 도구이며 실측(설문·베타)을 대체하지 않는다.4---56# 페르소나 구매/반응 시뮬레이션78mymai 가격 전략 수립에서 검증된 방법론 (2026-08-10~11, r1/r2/r3). 어떤 제품이든 적용 가능.910## 언제 쓰나11- 가격 구조·기능 우선순위·포지셔닝에 대한 **가설이 필요**하고 실사용자가 아직 없을 때.12- 쓰면 안 되는 것: PMF 판정(Sean Ellis 대체), 시장 규모 추정, 실제 전환율 예측. 숫자의 절대치가 아니라 **비율 구조와 반론 카탈로그**가 산출물이다.1314## 절차1516### 0. 제품 브리프 작성 (가장 중요)17`product_brief.md`를 만든다. **약점을 전부 명시**해야 결과가 쓸모 있다(다운로드 크기, 메모리, 지연, 생태계 부재, 인지도 0, 가격 비교대상 등). 가격/기능 선택지는 A/B/C… 라벨로. 각 라운드에서 바뀐 것만 "vN 변경점" 섹션에 명시.1819### 1. 표본 추출 — `scripts/sample_personas.py`20- **소규모(정성, ~30명)**: HF 공개 샘플 999명 (datasets-server API, 디코딩된 wide 포맷) — 스크립트가 자동 처리.21- **대규모(정량)**: 원본 shard 다운로드 + 니블 디코딩 — 스크립트가 자동 처리. 필요 n은 `n = z²·p(1-p)/e²` (99%·±3%p·p=0.5 → **1,844**; 95%·±3%p → 1,068).22- 필터·층화 기준을 인자로 지정 (예: `--eco Apple,Mixed --min-age 18 --stratify tech_savviness`).23- **모집단 정의를 정직하게 기록**: 필터 결과가 특정 소스(예: 스택오버플로=개발자)로 쏠리면 그 사실이 곧 모집단 정의다. 리포트에 반드시 명시.24- 주의: 공개 샘플에는 아동·모순 페르소나(나이 필드 오류)가 섞여 있다. 연령 필터를 걸고, 모순 발견 시 처리 원칙(성인 재해석 vs 미성년 유지)을 기록.2526### 2. 시뮬레이션 실행27**정성 모드** (탐색·반론 수집): 서브에이전트 5명/팀 × 6팀, 자유 서술 출력(첫 반응/반론 목록/가격 반응/전환 조건/타겟 적합도). 결과를 종합 에이전트가 세그먼트·반론 카탈로그·가격 논리로 정리.2829**정량 모드** (확인·CI): Workflow로 20명/에이전트 × ~95, **schema 강제 구조화 출력** — 파싱 오류 0가 된다:30`{id, install: yes|no, trial: yes|no, pay: yes|no|conditional, reason(한 줄), segment, price_feel}`3132**아첨 방지 규칙 (프롬프트에 반드시 포함)**:33- "현실의 사람 대부분은 유틸리티 앱을 안 산다. 기본값은 회의."34- 설치-후-방치(install-and-forget)는 매우 흔한 패턴 — 반영 강제.35- 약점(브리프의 마찰 목록)에 in-character로 반응할 것.36- 언어 미지원 = 실제 블로커 (영어 능숙도 고려), 멀티 기기 환경 = 가치 희석, 저소득/구독 피로 = 결제 저항.37- 재평가 라운드(vN→vN+1)는 **일관성 원칙**: 변경점이 진짜 블로커였던 페르소나만 결과 변화 허용. "개선된 시나리오가 무관한 페르소나까지 부풀리는" 것을 금지하고, 에이전트에게 이전 라운드 결과 파일을 주고 차이만 정당화시킨다.3839### 3. 집계 — `scripts/aggregate.py`40Wilson 99% CI(깔때기 각 단계), 교차분석(페르소나 카드 속성 join: 생태계/연령/태도/보안민감도별 결제율), 미결제 사유 키워드 테마 클러스터, 조건부 결제의 조건 분류.4142### 4. 리포트 필수 섹션43방법론(표본 프레임·모집단 정의·디코더 검증) / 깔때기+CI / 교차분석 / 사유 카탈로그 / 이전 라운드와의 정합성 / **한계** / 권고.4445**한계 섹션 보일러플레이트 (생략 금지)**:461. 합성 시뮬레이션 — CI는 시뮬레이션 추정치의 정밀도이지 현실 적중률이 아니다. 정밀하게 틀릴 수 있다.472. 노출 가정의 낙관성 — "제품 설명을 끝까지 읽은" 상태에서 출발하므로 발견 깔때기가 빠져 절대치가 부풀려진다.483. 모집단 ≠ 전체 시장 (필터가 만든 모집단을 명시).494. 단일 판정, 아첨 편향 잔존 가능.5051### 5. 라운드 운영52r1 정성(넓게 탐색) → 발견을 반영해 브리프 수정 → r2 정성(변경점 검증, 일관성 원칙) → 의사결정 수렴 후 r3 정량(확정안 단일 시나리오, CI). **세 라운드면 충분** — 그 이상은 같은 그림을 더 정밀하게 그릴 뿐이며, 다음 정보 증분은 실측에서만 나온다고 보고할 것.5354## 데이터셋 기술 세부 (재유도 방지용)55- `MatrAIx2026/MatrAIx_Persona_1M` (HF). 공개 샘플: datasets-server API `?dataset=...&config=sample&split=train` (999행, wide). 원본: `data/persona-1m-NNNN.parquet` 10개 shard (행 10만 개씩).56- 원본 포맷: `attributes` fixed_size_binary[645] = 1,290속성 × 4비트 니블, **low-first**(짝수 인덱스=하위 니블). `null_bitmap` 162바이트, **비트=0이 populated** (LSB-first). 어휘 16개 초과 필드는 `attribute_overrides`(field_index→문자열). 코드북: `persona_codes.schema.json`의 `columns` (id, values 순서 = 코드).57- 디코더 검증법: 행별 `populated_attribute_count` == 비트맵 popcount(극성 확인), populated 필드의 코드 범위초과율 0%(니블 순서 확인).58- shard 구성: 0–2 wiki(Q-id), 3 wiki+amazon, 4 amazon+stackoverflow, 5 stackoverflow+GSS+실제설문, 6–9 synthetic(희소). **기기 생태계 필드는 사실상 스택오버플로 소스에만 존재** → 생태계 필터를 걸면 모집단은 개발자가 된다.59- 대용량 shard는 사용 후 삭제(1GB+), 표본/판정 JSON은 보존.