インタビュー記録を証拠として符号化し最初の顧客層を選ぶ
한국어 원문으로 표시합니다.
목표
인터뷰 기록에서 질문 형태의 편향을 걸러 내고, '최근에 겪었고 대가를 치른' 증거만 세어, 표본 크기를 반영한 구간으로 첫 고객군을 고른다.
왜 중요한가
사람들은 남의 아이디어에 예의 바르게 답한다. 유도·가정 질문의 대답과 칭찬을 수요로 읽으면 없는 시장에 몇 달을 쓴다. 기록을 증거로 부호화하고 표본의 크기까지 따지는 습관이 만들기 전 검증의 전부다.
재료 — /opt/fixtures/founder/problem/interviews.csv
id,segment,question_style,said_problem,days_since_last,workaround,spent_krw_month,commitment
- segment: freelance_designer · inhouse_marketer · small_agency
- question_style: past · hypothetical · leading
- said_problem: 문제가 있다고 말했는가(0/1), days_since_last: 마지막으로 겪은 지 며칠(말하지 않았으면 빈칸)
- spent_krw_month: 지금 그 문제에 매달 쓰는 돈, commitment: none · compliment · followup · pilot · preorder
정의
- 쓸 수 있는 인터뷰: question_style == "past".
- 최근 문제: said_problem == 1 이고 days_since_last ≤ 30.
- 대가: spent_krw_month > 0 이거나 commitment 가 pilot·preorder.
- 증거: 쓸 수 있는 인터뷰 가운데 최근 문제이고 대가가 있는 것.
- 윌슨 95% 구간: z =
NormalDist().inv_cdf(0.975), p = k/n 일 때 중심 = (p + z²/2n)/(1 + z²/n), 반폭 = z·√(p(1−p)/n + z²/4n²)/(1 + z²/n). - 비율은 소수 넷째 자리.
단계
/root/founder/problem/counts.json에 세그먼트마다all(인터뷰 수)과by_style(past·hypothetical·leading 별 수)을 쓴다./root/founder/problem/said.json에 세그먼트마다said_all_rate(모든 인터뷰의 said_problem 비율)와said_usable_rate(쓸 수 있는 인터뷰만)를 쓴다./root/founder/problem/problem.py에evidence(row)(csv.DictReader 의 한 줄 → True/False)를 만든다./root/founder/problem/evidence.json에 세그먼트마다usable·evidence·rate(evidence ÷ usable)를 쓴다./root/founder/problem/signals.json에 세그먼트마다median_spend(쓸 수 있고 최근 문제이며 돈을 쓰는 사람의 월 지출 중앙값, 없으면 0),strong(쓸 수 있는 인터뷰의 pilot·preorder 수),compliments(모든 인터뷰의 compliment 수)를 쓴다.problem.py에wilson(k, n)→[low, high]를 더한다(n 이 0 이면 [0.0, 1.0])./root/founder/problem/ranking.json에by_said_all(said_all_rate 가 가장 높은 세그먼트),by_point(증거 비율이 가장 높은),by_lower_bound(증거 윌슨 하한이 가장 높은),lower_bounds(세그먼트 → 하한)를 쓴다./root/founder/problem/decision.json에target(by_lower_bound),need_more(하한 < 0.5 ≤ 상한인 세그먼트, 정렬),drop(상한 < 0.5 인 세그먼트, 정렬)을 쓴다.
참고
csv.DictReader는 값을 전부 문자열로 준다. 빈 days_since_last 는""다.- 흔한 실수: 유도·가정 질문의 대답을 증거에 넣기, 칭찬을 약속으로 세기, 경계(30일)를 미만으로 잡기, 점추정으로 작은 표본을 고르기.
누구에게 어떤 질문을 했나
/root/founder/problem/counts.json 에 세그먼트마다 all 과 by_style(past·hypothetical·leading)을 쓴다.
csv.DictReader 로 읽어 segment 와 question_style 로 셉니다. 세그먼트마다 질문 형태의 비중이 다른지 보세요.
질문 형태가 대답을 부풀린다
/root/founder/problem/said.json 에 세그먼트마다 said_all_rate 와 said_usable_rate 를 쓴다.
분자는 said_problem == "1" 인 인터뷰, 분모는 앞의 것은 그 세그먼트 전체, 뒤의 것은 question_style 이 past 인 인터뷰입니다.
증거 조건을 함수로
/root/founder/problem/problem.py 에 evidence(row) 를 만든다(과거 질문 · 최근 30일 안에 겪음 · 돈이나 파일럿·선주문).
세 조건을 모두 만족해야 True 입니다. 빈 days_since_last 는 int 로 바꾸기 전에 거르세요. 30일은 포함입니다.
세그먼트별 증거
/root/founder/problem/evidence.json 에 세그먼트마다 usable·evidence·rate 를 쓴다.
분모는 쓸 수 있는(past) 인터뷰 수입니다. 전체 인터뷰 수로 나누지 않습니다.
돈과 약속, 그리고 칭찬
/root/founder/problem/signals.json 에 세그먼트마다 median_spend·strong·compliments 를 쓴다.
median_spend 의 대상은 쓸 수 있고, 최근 문제이며, 지출이 0 보다 큰 사람입니다(없으면 0). compliments 는 질문 형태와 무관하게 셉니다.
작은 표본을 구간으로
problem.py 에 wilson(k, n) → [low, high] 를 더한다.
z 는 NormalDist().inv_cdf(0.975). 지시문의 중심과 반폭 식을 그대로 옮기세요. n=0 이면 [0.0, 1.0].
세 가지 순위
/root/founder/problem/ranking.json 에 by_said_all·by_point·by_lower_bound·lower_bounds 를 쓴다.
같은 기록으로 세 번 줄 세웁니다 — 모든 대답의 '문제 있음' 비율, 증거 비율(점추정), 증거의 윌슨 하한.
첫 고객군과 다음 인터뷰
/root/founder/problem/decision.json 에 target·need_more·drop 을 쓴다.
구간이 0.5 를 사이에 두면 아직 모르는 것(need_more), 상한마저 0.5 아래면 접을 것(drop)입니다.