엔라이즈
경력근거: AI 툴을 활용해 최소 기능 제품(MVP)을 구현하고 PMF를 검증합니다.
※ 실제 산출물이 아닌 AI 예측 시안입니다.
엔라이즈는 이 자리를 AI 툴로 MVP 를 구현하고 PMF 를 검증하는 신사업 빌더로 정의하고, 직접 출시한 프로덕트로 유저 반응과 유료 결제·매출을 검증해 본 경험을 자격요건에 둡니다. PMF 가 검증된 프로젝트를 스케일업한다는 업무가 함께 적혀 있어, 어느 MVP 에 사람과 예산을 붙일지 정하는 판정이 이 자리 일의 한가운데에 있습니다. 엔라이즈는 위피와 콰트를 직접 출시해 키운 회사라 MVP 숫자를 견줄 자기 서비스의 출시 지표가 있고, 이 화면은 그 기준표 자리를 비워 두지 않습니다. 이 포트폴리오는 AI 도구로 만든 MVP 에 가입·재방문·결제 기록을 심고 그 기록으로 다섯 판정을 내리는 흐름을 보여줍니다. 위피·콰트의 실제 출시 지표나 소셜 디스커버리·홈트레이닝 시장에 대한 전문성은 주장하지 않습니다.
공고는 이 자리의 일을 AI 툴로 MVP 를 구현해 PMF 를 보고, PMF 가 확인된 프로젝트를 사업으로 키우는 것으로 적었습니다. 어느 MVP 를 키울지 매주 정하는 판정 화면은 그 두 일 사이에 놓입니다.
자격요건이 직접 출시한 프로덕트의 유저 반응과 유료 결제·매출을 묻습니다. 이 포트폴리오는 지원자가 MVP 에 토스페이먼츠 테스트 결제와 취소를 직접 붙이고, 결제율과 7일 안 환불을 판정의 가운데에 둡니다.
정량 데이터로 가설의 성공·실패를 판단하고 빠르게 피보팅한 경험을 찾습니다. 다섯 판정은 가입자 수만 보면 성공처럼 읽히는 MVP 를 결제 없음·바로 환불·재방문 없음으로 나눠, Builder 가 다음 주에 바꿀 MVP 를 숫자로 고르게 합니다.
엔라이즈 신사업 Product Builder 가 AI 도구로 만들어 내놓은 MVP 마다, 가입·방문 이벤트와 테스트 결제 기록을 읽어 다섯 판정 중 하나를 붙이는 관리자 페이지입니다. 기준표와 같은 출시 첫 4주 창에서 가입자가 200명에 못 미치면 판정을 미루고, 그 위에서는 결제 사용자 비율과 둘째 주 재방문율을 Builder 가 MVP 마다 고른 위피·콰트 기준값의 절반과 견주며, 7일 환불 창이 닫힌 결제 가운데 7일 안에 환불된 비중을 셉니다. 매주 월요일 경영진 리뷰에서 Builder 는 피보팅할 MVP 를, 대표와 경영진은 사람과 예산을 붙일 MVP 를 이 판정으로 고릅니다.
AI 로 MVP 를 직접 기획·구현·배포해 시장에 내놓는 엔라이즈 Product Builder 본인과, 매주 그 결과를 함께 보고 스케일업할 신사업을 고르는 대표·경영진. 같은 화면에서 Builder 는 피보팅할 MVP 를, 경영진은 사람과 예산을 붙일 MVP 를 고른다
Product Builder 는 며칠마다 MVP 를 하나씩 내놓지만, 주간 리뷰에서 먼저 보는 숫자는 대개 가입자 수입니다. 가입이 많은 MVP 가 결제는 거의 없거나, 결제가 들어와도 일주일 안에 환불되거나, 첫 주에 온 사용자가 둘째 주에 돌아오지 않아도 가입자 수만 보면 성공처럼 읽힙니다. 결제 사용자 비율, 7일 안 환불 비중, 둘째 주 재방문율을 위피·콰트 출시 첫 4주 기준값과 MVP 마다 견줘 두면, 경영진은 가입자 수가 아니라 결제가 이어지는지를 보고 스케일업할 MVP 를 고릅니다.
지원자가 AI 도구로 만든 MVP 두 개를 Vercel 에 배포하고, 가입·방문 이벤트와 결제·환불 기록이 Supabase 에 쌓이면 판정 화면이 MVP 마다 출시 첫 4주 창으로 센 다섯 판정 중 하나와 근거 수치를 보여줍니다. 토스페이먼츠 테스트 결제창과 취소 웹훅은 실제 결제 흐름 몇 건으로 끝까지 확인하고, 4주치 가입·재방문·결제·환불 이력은 재생 스크립트가 MVP 별 재생 설정과 시드로 같은 기록 함수에 가상 시각을 넘겨 만듭니다. 손으로 적은 표는 입력으로 쓰지 않고, 기준표의 위피·콰트 값은 가정값으로 시작합니다.
매주 월요일 0시에 그 주 판정을 저장해 지난주와 판정이 바뀐 MVP 를 표시하는 주간 리뷰 기록 탭이 열립니다. 가입자 199명과 200명, 7일 안 환불 29% 와 30% 처럼 기준값 바로 위·아래를 겨눈 가상 방문 시험 24개를 돌려, 설계한 판정으로 돌아온 수와 돌아오지 않은 시험의 계산값을 가상 방문 시험 탭에 남깁니다.
결제 뒤 바로 환불함으로 판정된 MVP 를 펼치면 Claude Haiku 4.5 가 환불 사유 문장을 사유 묶음으로 나눈 결과가 원문 인용과 함께 나옵니다. Builder 는 그 묶음을 보고 다음 버전 메모를, 경영진은 결제가 이어지는 MVP 에 스케일업 후보 표시를 주간 리뷰 기록에 남깁니다.
Builder 가 월요일 리뷰에서 화면을 열면 「AI 자기소개 첨삭」(M-01)은 4주 중 27일치 가입 1,920명 중 79명이 결제해 4.11% 로 위피 기준 3.6% 의 절반을 넘어 결제가 이어지는 MVP 에, 「AI 운동 루틴 코치」(M-02)는 출시 첫 4주 결제 0.60% 로 콰트 기준 절반 1.4% 에 못 미쳐 가입은 되는데 결제가 없음에 섭니다. M-02 는 둘째 주 재방문 14.39% 도 기준 절반 19% 밑이지만 대표 판정은 결제 쪽이고, 재방문 판정은 함께 걸린 판정으로 펼침에 남습니다.
경영진은 「AI 데이트 코스 추천」(M-03)을 펼쳐 환불 창이 닫힌 결제 90건 중 27건이 7일 안에 환불돼 정확히 30.0% 로 기준선에 걸린 것을 읽고, 결제 뒤 정확히 168시간에 환불된 결제는 셈에 들고 192시간 뒤 환불은 빠진 것을 결제별로 확인합니다.
가입자 199명인 M-05 와 200명인 M-06, 결제 9건 중 4건만 환불 창이 닫힌 M-06, 이벤트가 0건인 M-07, 출시 전 Builder 본인의 테스트 가입·결제, 웹훅이 두 번 들어온 같은 결제를 한 주에 넣어도 MVP 마다 판정이 하나로 정해집니다. M-07 은 비율을 0 으로 나누지 않고 비워 둔 채 판정하기엔 가입자가 적음에 섭니다.
2주차 가상 방문 시험 탭은 기준값 바로 위·아래를 겨눈 시험 24개의 설계 판정과 화면 판정을 시험별로 보여주고, 돌아오지 않은 시험에는 그때 계산된 결제율·환불 비중·재방문율을 함께 띄웁니다.
위 수치는 재생 스크립트가 만든 가상 방문 기록으로 잰 자가채점이며, 이 판정이 스케일업할 신사업을 실제로 바로 고르는지는 엔라이즈 신사업 MVP 의 실제 가입·결제 기록과 위피·콰트 출시 첫 4주의 실제 지표가 있어야 측정됩니다. 실제 MVP 기록이 쌓이면 replay 행을 빼고 live 행만으로 같은 4주 창 판정을 다시 돌립니다.
가상 방문자가 언제 가입하고 결제하고 환불할지는 MVP 마다 제가 적은 재생 설정의 확률이 정합니다. 그 설정에서 나온 M-01 의 결제율 4.11% 는 판정 화면이 숫자를 어떻게 읽는지 보여주는 값이고, 「AI 자기소개 첨삭」에 실제 사용자가 돈을 낼지와는 관계가 없습니다.
MVP 마다 한 판정에만 뚜렷하게 걸리도록 확률을 잡으면 판정 차례나 168시간 셈이 틀려도 화면은 멀쩡해 보입니다. 결제율과 재방문이 둘 다 기준 밑인 M-02 는 차례가 재방문 먼저였다면 재방문 없음에 섰을 MVP 이고, M-03 은 정확히 168시간째 환불 한 건이 빠지면 26/90(28.89%)으로 기준 밑에 내려가는 MVP 입니다. 이 두 MVP 의 판정이 리뷰 화면에서 문서와 같은지가 차례와 168시간 셈을 지키는지 알려주는 표시입니다.
출시 28일이 안 된 MVP 는 가입 뒤 결제가 쌓일 시간이 짧아 결제율이 낮게 잡히고, 환불 창이 닫힌 결제도 적어 한두 건에 환불 비중이 크게 흔들립니다. M-06 은 4주 중 10일치에 환불 창이 닫힌 결제가 4건뿐이라, 화면은 그 일수와 분모를 판정 옆에 띄우고 4주가 찬 뒤 판정을 다시 냅니다.
위피·콰트는 앱 인앱 결제로 큰 서비스이고 MVP 는 웹 결제라, 같은 결제율이라도 결제 문턱이 다릅니다. 기준값의 절반을 문턱으로 둔 것도 이 차이를 감안한 제 가정이라, 실제 기준을 넣은 뒤 문턱 배수를 다시 잡을 도입 과제로 둡니다.
출시 첫 주를 출시 시각부터 7일로 세므로, 첫 주 마지막 날 가입한 사용자는 하루 만에 둘째 주를 맞아 재방문율이 낮게 잡힐 수 있습니다. 가입 시각부터 세는 방식으로 바꿀지는 실제 MVP 의 가입 분포를 본 뒤 정합니다.
토스페이먼츠 테스트 결제는 live 몇 건의 흐름 확인에만 쓰고 카드 승인도 실제로 일어나지 않아, 결제 실패·부분 취소·정기결제 갱신 실패가 live 와 replay 어느 기록에도 없습니다. 실결제로 옮겨 mvp_payments 에 결제 실패 행이 생기면 결제율의 분모와 분자를 어떻게 셀지 다시 정해야 합니다.
① 인라인 샘플 · ② seed.json 다운로드 · ③ 증강 프롬프트. 세 층 모두 동일한 schema 에서 파생.
Builder 가 MVP 에 심은 기록 함수가 Supabase 에 남기는 이벤트 기록입니다. 가입 완료, 로그인한 사용자의 화면 진입, 결제창 열기 세 가지를 남기고, 재생 스크립트가 배포된 MVP 를 호출해 일으킨 방문은 source 를 replay 로 적습니다. 아래 행은 그 기록에서 사용자 몇 명의 흐름을 잘라 온 것이고, 출시 전 Builder 본인의 테스트 가입을 일부러 담았습니다.
| project_id | user_id | event | occurred_at | source |
|---|---|---|---|---|
| M-01 | u-0000 | signup | 2026-09-07T21:10:00+09:00 | live |
| M-01 | u-1001 | signup | 2026-09-08T10:02:14+09:00 | replay |
| M-01 | u-1001 | visit | 2026-09-16T08:40:51+09:00 | replay |
| M-01 | u-1002 | signup | 2026-09-14T23:50:03+09:00 | replay |
| M-01 | u-1002 | checkout_open | 2026-09-15T00:05:40+09:00 | replay |
아래 JSON Schema 에 맞는 MVP 이벤트 행을 더 만들어 주세요. {"type":"object","properties":{"project_id":{"type":"string","description":"이벤트가 일어난 MVP 번호입니다. projects.project_id 와 같습니다."},"user_id":{"type":"string","description":"MVP 가입 인증이 준 사용자 번호입니다."},"event":{"type":"string","enum":["signup","visit","checkout_open"],"description":"MVP 에 심은 기록 함수가 남긴 이벤트 이름입니다. signup 은 가입 완료, visit 은 로그인한 사용자의 화면 진입, checkout_open 은 결제창 열기입니다."},"occurred_at":{"type":"string","format":"date-time","description":"이벤트 시각입니다. 실제 방문은 서버 시각, 재생 방문은 재생 스크립트가 보낸 가상 시각입니다."},"source":{"type":"string","enum":["live","replay"],"description":"live 는 실제 방문, replay 는 재생 스크립트가 배포된 MVP 를 호출해 일으킨 방문입니다."}},"required":["project_id","user_id","event","occurred_at","source"]} MVP 두세 개, 사용자 수십 명의 가입·방문·결제창 열기 이벤트를 시간순으로 만듭니다. 대부분은 source 가 replay 이고 live 는 일부입니다. 쉬운 데이터만 만들지 말 것 — 다음 하드 케이스를 의도적으로 섞어라: (1) projects.launched_at 보다 앞선 Builder 본인의 테스트 가입, (2) 출시 첫 주가 끝나기 몇 분 전 가입한 사용자와 둘째 주가 시작된 직후 방문한 사용자, (3) 가입만 하고 다시 오지 않는 사용자. 생성한 행은 위 스키마를 통과해야 하며, 형식을 깨뜨리는 시도는 별도로 3건만 표시해 두세요.{"type":"object","properties":{"project_id":{"type":"string","description":"이벤트가 일어난 MVP 번호입니다. projects.project_id 와 같습니다."},"user_id":{"type":"string","description":"MVP 가입 인증이 준 사용자 번호입니다."},"event":{"type":"string","enum":["signup","visit","checkout_open"],"description":"MVP 에 심은 기록 함수가 남긴 이벤트 이름입니다. signup 은 가입 완료, visit 은 로그인한 사용자의 화면 진입, checkout_open 은 결제창 열기입니다."},"occurred_at":{"type":"string","format":"date-time","description":"이벤트 시각입니다. 실제 방문은 서버 시각, 재생 방문은 재생 스크립트가 보낸 가상 시각입니다."},"source":{"type":"string","enum":["live","replay"],"description":"live 는 실제 방문, replay 는 재생 스크립트가 배포된 MVP 를 호출해 일으킨 방문입니다."}},"required":["project_id","user_id","event","occurred_at","source"]}결제 기록 함수가 Supabase 에 남기는 결제 기록입니다. 결제 한 건에 한 줄이고, 환불되면 같은 줄에 refunded_at 과 환불 사유가 채워집니다. 토스페이먼츠 테스트 결제창을 실제로 거친 몇 건은 source 가 live 이고 승인·취소 웹훅의 실제 시각이 찍힙니다. 4주치 결제 이력은 재생 스크립트가 같은 함수에 가상 시각을 넘겨 만든 replay 행입니다. 웹훅 재전송으로 같은 payment_key 가 두 줄 생긴 결제와 정확히 7일째 환불된 결제를 일부러 담았습니다.
| payment_key | project_id | user_id | amount | paid_at | refunded_at | cancel_reason | source |
|---|---|---|---|---|---|---|---|
| tgen_20260907211500M01T | M-01 | u-0000 | 4,900 | 2026-09-07T21:15:02+09:00 | 2026-09-07T21:20:40+09:00 | 출시 전 결제 테스트 | live |
| tgen_20260915000712M01a | M-01 | u-1002 | 4,900 | 2026-09-15T00:07:12+09:00 | — | — | replay |
| tgen_20260915000712M01a | M-01 | u-1002 | 4,900 | 2026-09-15T00:07:12+09:00 | — | — | replay |
| tgen_20260918200005M01b | M-01 | u-1014 | 9,900 | 2026-09-18T20:00:05+09:00 | 2026-09-20T09:00:31+09:00 | 첨삭이 너무 짧아요 | replay |
| tgen_20260920131044M01c | M-01 | u-1020 | 4,900 | 2026-09-20T13:10:44+09:00 | — | — | replay |
아래 JSON Schema 에 맞는 MVP 결제 행을 더 만들어 주세요. {"type":"object","properties":{"payment_key":{"type":"string","description":"토스페이먼츠 테스트 모드가 결제 승인 때 준 결제 키입니다. 웹훅이 다시 들어오면 같은 키의 행이 한 번 더 생깁니다."},"project_id":{"type":"string","description":"결제가 일어난 MVP 번호입니다."},"user_id":{"type":"string","description":"결제한 사용자 번호입니다. mvp_events.user_id 와 같습니다."},"amount":{"type":"integer","minimum":0,"description":"결제 금액(원)입니다."},"paid_at":{"type":"string","format":"date-time","description":"결제 시각입니다. live 결제는 토스페이먼츠 테스트 결제 승인 웹훅이 찍은 실제 시각이고, replay 결제는 재생 스크립트가 같은 결제 기록 함수에 넘긴 가상 시각입니다."},"refunded_at":{"type":["string","null"],"format":"date-time","description":"환불 시각입니다. live 결제는 결제 취소 웹훅이 찍은 실제 시각이고, replay 결제는 재생 스크립트가 넘긴 가상 시각입니다. 환불이 없으면 null 입니다."},"cancel_reason":{"type":["string","null"],"description":"환불 요청 창에 적힌 사유입니다. replay 결제는 재생 설정의 사유 문장 목록에서 고릅니다. 환불이 없으면 null 입니다."},"source":{"type":"string","enum":["live","replay"],"description":"live 는 토스페이먼츠 테스트 결제창을 실제로 거친 결제, replay 는 재생 스크립트가 결제 기록 함수를 직접 불러 넣은 결제입니다."}},"required":["payment_key","project_id","user_id","amount","paid_at","refunded_at","cancel_reason","source"]} MVP 두세 개의 결제 행을 만들고 대부분은 source 를 replay 로, live 는 몇 건만 둡니다. 금액은 4,900~15,000원 사이 월 구독가로 둡니다. 쉬운 데이터만 만들지 말 것 — 다음 하드 케이스를 의도적으로 섞어라: (1) 승인 웹훅이 두 번 들어와 payment_key 가 같은 두 행, (2) paid_at 부터 정확히 168시간 뒤 환불된 결제와 그보다 몇 시간 늦게 환불된 결제, (3) launched_at 앞 Builder 본인의 테스트 결제와 즉시 취소. 생성한 행은 위 스키마를 통과해야 하며, 형식을 깨뜨리는 시도는 별도로 3건만 표시해 두세요.{"type":"object","properties":{"payment_key":{"type":"string","description":"토스페이먼츠 테스트 모드가 결제 승인 때 준 결제 키입니다. 웹훅이 다시 들어오면 같은 키의 행이 한 번 더 생깁니다."},"project_id":{"type":"string","description":"결제가 일어난 MVP 번호입니다."},"user_id":{"type":"string","description":"결제한 사용자 번호입니다. mvp_events.user_id 와 같습니다."},"amount":{"type":"integer","minimum":0,"description":"결제 금액(원)입니다."},"paid_at":{"type":"string","format":"date-time","description":"결제 시각입니다. live 결제는 토스페이먼츠 테스트 결제 승인 웹훅이 찍은 실제 시각이고, replay 결제는 재생 스크립트가 같은 결제 기록 함수에 넘긴 가상 시각입니다."},"refunded_at":{"type":["string","null"],"format":"date-time","description":"환불 시각입니다. live 결제는 결제 취소 웹훅이 찍은 실제 시각이고, replay 결제는 재생 스크립트가 넘긴 가상 시각입니다. 환불이 없으면 null 입니다."},"cancel_reason":{"type":["string","null"],"description":"환불 요청 창에 적힌 사유입니다. replay 결제는 재생 설정의 사유 문장 목록에서 고릅니다. 환불이 없으면 null 입니다."},"source":{"type":"string","enum":["live","replay"],"description":"live 는 토스페이먼츠 테스트 결제창을 실제로 거친 결제, replay 는 재생 스크립트가 결제 기록 함수를 직접 불러 넣은 결제입니다."}},"required":["payment_key","project_id","user_id","amount","paid_at","refunded_at","cancel_reason","source"]}출시한 신사업 MVP 목록입니다. launched_at 은 배포 스크립트가 첫 운영 배포 시각을 적고, benchmark_service 는 Builder 가 출시 때 견줄 기준 서비스를 고릅니다. MVP 이름은 예시 데이터이고 엔라이즈가 실제로 벌이는 신사업 분야가 아닙니다.
| project_id | project_name | launched_at | benchmark_service |
|---|---|---|---|
| M-01 | AI 자기소개 첨삭 | 2026-09-08T10:00:00+09:00 | 위피 |
| M-02 | AI 운동 루틴 코치 | 2026-09-01T10:00:00+09:00 | 콰트 |
| M-03 | AI 데이트 코스 추천 | 2026-09-10T10:00:00+09:00 | 위피 |
| M-04 | AI 요가 자세 피드백 | 2026-09-03T10:00:00+09:00 | 콰트 요가 |
| M-05 | AI 사진 프로필 보정 | 2026-10-02T10:00:00+09:00 | 위피 |
아래 JSON Schema 에 맞는 신사업 MVP 행을 더 만들어 주세요. {"type":"object","properties":{"project_id":{"type":"string","description":"신사업 MVP 번호입니다."},"project_name":{"type":"string","description":"MVP 이름입니다."},"launched_at":{"type":"string","format":"date-time","description":"첫 운영 배포 시각입니다. 배포 스크립트가 Vercel 운영 배포가 끝난 시각을 적습니다."},"benchmark_service":{"type":"string","description":"이 MVP 를 견줄 기준 서비스 이름입니다. launch_benchmarks.service 와 같은 값이고, Builder 가 출시 때 고릅니다."}},"required":["project_id","project_name","launched_at","benchmark_service"]} 신사업 MVP 행을 더 만듭니다. project_name 은 AI 를 쓴 B2C 웹 서비스 이름으로 짓고, launched_at 은 최근 6주 안에 흩뿌립니다. 쉬운 데이터만 만들지 말 것 — 다음 하드 케이스를 의도적으로 섞어라: (1) 기준 시각 하루 전에 출시해 기록이 거의 없는 MVP, (2) 출시 14일이 아직 안 된 MVP, (3) week2_return_rate 가 null 인 기준 서비스를 고른 MVP. 생성한 행은 위 스키마를 통과해야 하며, 형식을 깨뜨리는 시도는 별도로 3건만 표시해 두세요.{"type":"object","properties":{"project_id":{"type":"string","description":"신사업 MVP 번호입니다."},"project_name":{"type":"string","description":"MVP 이름입니다."},"launched_at":{"type":"string","format":"date-time","description":"첫 운영 배포 시각입니다. 배포 스크립트가 Vercel 운영 배포가 끝난 시각을 적습니다."},"benchmark_service":{"type":"string","description":"이 MVP 를 견줄 기준 서비스 이름입니다. launch_benchmarks.service 와 같은 값이고, Builder 가 출시 때 고릅니다."}},"required":["project_id","project_name","launched_at","benchmark_service"]}MVP 를 견줄 기준 서비스의 출시 첫 4주 지표입니다. 위피·콰트와 그 갈래 서비스 행을 두고, 두 앱과 거리가 먼 MVP 를 위한 참고 행 둘을 더했습니다. 수치는 모두 제가 넣은 가정값이고, 엔라이즈가 가진 실제 값으로 바꿔 넣는 자리입니다. 위피 재팬의 둘째 주 재방문율은 비워 두었습니다.
| service | signup_to_paid_rate | week2_return_rate |
|---|---|---|
| 위피 | 0.036 | 0.42 |
| 콰트 | 0.028 | 0.38 |
| 위피 재팬 | 0.031 | — |
| 위피 한일 매칭 | 0.024 | 0.35 |
| 콰트 요가 | 0.033 | 0.4 |
아래 JSON Schema 에 맞는 기준 서비스 행을 더 만들어 주세요. {"type":"object","properties":{"service":{"type":"string","description":"기준 서비스 이름입니다."},"signup_to_paid_rate":{"type":"number","minimum":0,"maximum":1,"description":"출시 첫 4주 가입자 가운데 한 번이라도 결제한 사용자의 비율입니다."},"week2_return_rate":{"type":["number","null"],"minimum":0,"maximum":1,"description":"출시 첫 주 가입자 가운데 둘째 주에 다시 들어온 사용자의 비율입니다. 값이 없으면 null 입니다."}},"required":["service","signup_to_paid_rate","week2_return_rate"]} 기준 서비스 행을 더 만듭니다. 값은 실제 지표가 아닌 가정값이라는 것을 전제로, signup_to_paid_rate 는 0.01~0.06, week2_return_rate 는 0.15~0.5 사이로 둡니다. 쉬운 데이터만 만들지 말 것 — 다음 하드 케이스를 의도적으로 섞어라: (1) week2_return_rate 가 null 인 서비스, (2) 결제율은 높고 재방문율은 낮은 판매형 서비스. 생성한 행은 위 스키마를 통과해야 하며, 형식을 깨뜨리는 시도는 별도로 3건만 표시해 두세요.{"type":"object","properties":{"service":{"type":"string","description":"기준 서비스 이름입니다."},"signup_to_paid_rate":{"type":"number","minimum":0,"maximum":1,"description":"출시 첫 4주 가입자 가운데 한 번이라도 결제한 사용자의 비율입니다."},"week2_return_rate":{"type":["number","null"],"minimum":0,"maximum":1,"description":"출시 첫 주 가입자 가운데 둘째 주에 다시 들어온 사용자의 비율입니다. 값이 없으면 null 입니다."}},"required":["service","signup_to_paid_rate","week2_return_rate"]}| AI 도구(Claude Code·Cursor) | MVP 두 개와 판정 화면을 기획부터 배포까지 AI 도구로 만듭니다. 첫 MVP 의 골격(가입·기록 함수·결제창)을 그대로 써서 두 번째 MVP 를 하루 안에 띄웁니다. |
| Next.js | MVP 두 개와 판정 관리자 페이지의 웹 코드입니다. |
| Vercel | MVP 와 판정 화면을 배포하고, 배포 스크립트가 첫 운영 배포 시각을 projects.launched_at 에 적습니다. 2주차에 매주 월요일 판정을 저장하는 작업은 Vercel Cron 이 돌립니다. |
| Supabase(PostgreSQL) | MVP 가입 인증과 mvp_events·mvp_payments·projects·launch_benchmarks 네 표를 담고, 출시 이후 고유 사용자 수와 주 단위 재방문 계산을 SQL 함수로 둡니다. |
| 토스페이먼츠 테스트 모드 | 개발자센터 가입만으로 받는 테스트 키로 결제창과 결제 취소를 붙이고, 승인·취소 웹훅이 결제 기록 함수를 불러 live 결제의 paid_at·refunded_at 을 실제 시각으로 남깁니다. 가맹 계약 없이 결제 흐름을 끝까지 확인하는 데 몇 건만 쓰고, 4주치 이력은 맡기지 않습니다. |
| Playwright | 배포된 MVP 의 가입 화면과 토스페이먼츠 테스트 결제창을 실제로 거치는 live 흐름 몇 건을 자동으로 돌려, 기록 함수가 실제 화면에서도 같은 행을 남기는지 봅니다. |
| 재생 스크립트(Node.js) | MVP 별 재생 설정(가입자 수·결제·환불·재방문 확률·난수 시드)으로 수천 명의 가상 방문자를 만들고, 이벤트·결제 기록 함수에 가상 시각을 넘겨 4주치 replay 행을 남깁니다. 같은 시드로 다시 돌리면 같은 셈이 나옵니다. |
| PMF 검증 | 출시 이후 가입자 수, 결제 사용자 비율, 7일 안 환불 비중, 둘째 주 재방문율 네 계산과 판정 차례로 MVP 마다 PMF 신호를 정합니다. |
| Claude Haiku 4.5 | 3주차에 결제 뒤 바로 환불한 사용자의 환불 사유 문장을 사유 묶음으로 나눕니다. |
✗ fail → 경영진이 결제 없음과 재방문 없음이 함께 걸린 MVP 를 재방문 문제로 먼저 봐야 한다고 하면, 차례를 바꿔 대표 판정만 달라지고 함께 걸린 판정은 펼침에 그대로 남는지 봅니다.
✓ pass → 두 MVP 의 판정만으로 주간 경영진 리뷰를 한 번 치를 수 있으면 1주차로 충분합니다. 이어간다면 매주 월요일 판정을 저장해 두는 리뷰 기록과 기준값 근처를 겨눈 가상 방문 시험이 다음입니다.
✗ fail → 돌아오지 않은 시험의 기록을 열어 시각 경계 계산부터 고치고, 환불 사유 묶음은 미룹니다.
✓ pass → 환불 사유 묶음과 스케일업 후보 표시로 3주차를 엽니다.
위 예측 UI 는 3주차까지 완주했을 때의 화면입니다. 1주차에 실제로 만드는 것은 아래 표시된 화면 하나입니다.
verdict사유 라벨 · project_id + 한 줄 요약(근거 수치 포함)화면·코드·면접에서 이 단어를 그대로 씁니다. 키는 출력 스키마의 enum 과 같습니다.
결제가 이어지는 MVP결제 이어짐가입은 되는데 결제가 없음결제 없음결제 뒤 바로 환불함바로 환불첫 주 뒤 돌아오지 않음재방문 없음판정하기엔 가입자가 적음가입자 부족MVP PMF 신호 판정입니다. MVP 하나가 출시 이후 가입·결제·환불·재방문 기록과 기준 서비스의 출시 첫 4주 지표를 견줘 다섯 판정 중 어디에 서는지와, 그 판정에 쓴 수를 남기는 형식입니다. 결제율과 환불 비중은 기준표와 같은 출시 첫 4주 창으로 셉니다.
{"type":"object","properties":{"project_id":{"type":"string"},"project_name":{"type":"string"},"verdict":{"type":"string","enum":["결제가 이어지는 MVP","가입은 되는데 결제가 없음","결제 뒤 바로 환불함","첫 주 뒤 돌아오지 않음","판정하기엔 가입자가 적음"]},"also_matched":{"type":"array","items":{"type":"string","enum":["결제가 이어지는 MVP","가입은 되는데 결제가 없음","결제 뒤 바로 환불함","첫 주 뒤 돌아오지 않음","판정하기엔 가입자가 적음"]},"description":"대표 판정 말고 함께 걸린 판정입니다. 판정하기엔 가입자가 적음이면 다른 규칙을 보지 않아 빈 배열입니다."},"benchmark_service":{"type":"string"},"launched_at":{"type":"string","format":"date-time"},"as_of":{"type":"string","format":"date-time","description":"주간 리뷰의 기준 시각입니다. 이 시각까지의 기록만 셉니다."},"window_days":{"type":"integer","minimum":0,"maximum":28,"description":"기준표와 같은 출시 첫 4주 창에서 as_of 까지 센 날수입니다. min(as_of, launched_at + 28일) − launched_at 을 일 단위로 내림합니다."},"window_status":{"type":"string","description":"출시 28일이 지났으면 '4주 다 셈', 아니면 '4주 중 N일치' 입니다(N = window_days)."},"signup_users":{"type":"integer","minimum":0,"description":"launched_at 부터 min(as_of, launched_at + 28일) 까지 event 가 signup 인 고유 user_id 수입니다."},"paid_users":{"type":["integer","null"],"minimum":0,"description":"같은 4주 창 안에 결제한 고유 user_id 수입니다. 가입자가 적어 판정을 미루면 null 입니다."},"paid_rate":{"type":["number","null"],"minimum":0,"maximum":1,"description":"paid_users / signup_users 를 소수 넷째 자리로 반올림한 값입니다."},"paid_rate_floor":{"type":["number","null"],"minimum":0,"maximum":1,"description":"launch_benchmarks.signup_to_paid_rate × 0.5 입니다."},"payment_count":{"type":["integer","null"],"minimum":0,"description":"4주 창 안의 결제 건수입니다. payment_key 가 같은 행은 한 건으로 셉니다."},"refund_window_closed_count":{"type":["integer","null"],"minimum":0,"description":"payment_count 가운데 paid_at + 168시간이 as_of 이전이라 7일 환불 창이 닫힌 결제 건수입니다."},"refund_7d_count":{"type":["integer","null"],"minimum":0,"description":"환불 창이 닫힌 결제 가운데 refunded_at 이 paid_at 부터 168시간 이내인 건수입니다."},"refund_7d_share":{"type":["number","null"],"minimum":0,"maximum":1,"description":"refund_7d_count / refund_window_closed_count 를 소수 넷째 자리로 반올림한 값입니다. 창이 닫힌 결제가 0건이면 null 입니다."},"week1_signups":{"type":["integer","null"],"minimum":0,"description":"launched_at 부터 7일 안에 가입한 고유 user_id 수입니다."},"week2_returned":{"type":["integer","null"],"minimum":0,"description":"week1_signups 가운데 launched_at + 7일부터 + 14일 전까지 이벤트가 하나라도 있는 사용자 수입니다."},"week2_return":{"type":["number","null"],"minimum":0,"maximum":1,"description":"week2_returned / week1_signups 를 소수 넷째 자리로 반올림한 값입니다. 둘째 주가 끝나지 않았으면 null 입니다."},"week2_return_floor":{"type":["number","null"],"minimum":0,"maximum":1,"description":"launch_benchmarks.week2_return_rate × 0.5 입니다. 기준값이 null 이면 null 입니다."},"return_rule_status":{"type":"string","enum":["판정함","둘째 주가 끝나지 않음","기준값 없음","가입자가 적어 보지 않음"]},"evidence":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"agg":{"type":["string","null"],"enum":["count","sum","avg","min","max",null]},"value":{}},"required":["field","value"]}},"summary":{"type":"string"},"hedge":{"type":["string","null"]}},"required":["project_id","project_name","verdict","also_matched","benchmark_service","launched_at","as_of","window_days","window_status","signup_users","paid_users","paid_rate","paid_rate_floor","payment_count","refund_window_closed_count","refund_7d_count","refund_7d_share","week1_signups","week2_returned","week2_return","week2_return_floor","return_rule_status","evidence","summary","hedge"]}[
{
"project_id": "M-01",
"project_name": "AI 자기소개 첨삭",
"verdict": "결제가 이어지는 MVP",
"also_matched": [],
"benchmark_service": "위피",
"launched_at": "2026-09-08T10:00:00+09:00",
"as_of": "2026-10-05T23:59:59+09:00",
"window_days": 27,
"window_status": "4주 중 27일치",
"signup_users": 1920,
"paid_users": 79,
"paid_rate": 0.0411,
"paid_rate_floor": 0.018,
"payment_count": 86,
"refund_window_closed_count": 70,
"refund_7d_count": 9,
"refund_7d_share": 0.1286,
"week1_signups": 610,
"week2_returned": 287,
"week2_return": 0.4705,
"week2_return_floor": 0.21,
"return_rule_status": "판정함",
"evidence": [
{
"field": "launched_at",
"value": "2026-09-08T10:00:00+09:00"
},
{
"field": "user_id",
"agg": "count",
"value": 1920
},
{
"field": "user_id",
"agg": "count",
"value": 79
},
{
"field": "signup_to_paid_rate",
"value": 0.036
},
{
"field": "payment_key",
"agg": "count",
"value": 70
},
{
"field": "week2_return_rate",
"value": 0.42
},
{
"field": "payment_key",
"value": "tgen_20260915000712M01a"
},
{
"field": "user_id",
"value": "u-0000"
}
],
"summary": "AI 자기소개 첨삭은 출시 뒤 27일치 기록에서 가입 1,920명 중 79명이 결제해 4.11% 로 위피 기준 3.6% 의 절반 1.8% 를 넘고, 환불 창이 닫힌 결제 70건 중 7일 안 환불 9건(12.86%)과 둘째 주 재방문 47.05% 도 기준 안이라 결제가 이어지는 MVP 입니다.",
"hedge": "4주 중 27일치로 센 결제율이라 남은 하루치 결제가 들어오면 조금 오를 수 있습니다. 출시 전 Builder 본인 계정 u-0000 의 테스트 가입과 live 결제는 launched_at 앞이라 세지 않았고, 웹훅 재전송으로 두 행이 된 tgen_20260915000712M01a 는 한 건으로 셌습니다."
},
{
"project_id": "M-02",
"project_name": "AI 운동 루틴 코치",
"verdict": "가입은 되는데 결제가 없음",
"also_matched": [
"첫 주 뒤 돌아오지 않음"
],
"benchmark_service": "콰트",
"launched_at": "2026-09-01T10:00:00+09:00",
"as_of": "2026-10-05T23:59:59+09:00",
"window_days": 28,
"window_status": "4주 다 셈",
"signup_users": 2180,
"paid_users": 13,
"paid_rate": 0.006,
"paid_rate_floor": 0.014,
"payment_count": 13,
"refund_window_closed_count": 13,
"refund_7d_count": 2,
"refund_7d_share": 0.1538,
"week1_signups": 820,
"week2_returned": 118,
"week2_return": 0.1439,
"week2_return_floor": 0.19,
"return_rule_status": "판정함",
"evidence": [
{
"field": "launched_at",
"value": "2026-09-01T10:00:00+09:00"
},
{
"field": "user_id",
"agg": "count",
"value": 2180
},
{
"field": "user_id",
"agg": "count",
"value": 13
},
{
"field": "signup_to_paid_rate",
"value": 0.028
},
{
"field": "user_id",
"agg": "count",
"value": 820
},
{
"field": "user_id",
"agg": "count",
"value": 118
},
{
"field": "week2_return_rate",
"value": 0.38
}
],
"summary": "AI 운동 루틴 코치는 출시 첫 4주 가입 2,180명 중 13명만 결제해 0.60% 로, 콰트 기준 2.8% 의 절반 1.4% 에 못 미쳐 가입은 되는데 결제가 없는 MVP 입니다.",
"hedge": "출시 첫 주 가입자 820명 중 둘째 주에 돌아온 사람이 118명(14.39%)으로 기준 절반 19% 에도 못 미쳐 첫 주 뒤 돌아오지 않음이 함께 걸렸습니다. 결제 규칙을 먼저 보는 차례라 대표 판정은 결제 쪽이고, 4주가 지난 뒤 들어온 가입과 결제는 이 셈에 넣지 않았습니다."
},
{
"project_id": "M-03",
"project_name": "AI 데이트 코스 추천",
"verdict": "결제 뒤 바로 환불함",
"also_matched": [],
"benchmark_service": "위피",
"launched_at": "2026-09-10T10:00:00+09:00",
"as_of": "2026-10-05T23:59:59+09:00",
"window_days": 25,
"window_status": "4주 중 25일치",
"signup_users": 1350,
"paid_users": 80,
"paid_rate": 0.0593,
"paid_rate_floor": 0.018,
"payment_count": 96,
"refund_window_closed_count": 90,
"refund_7d_count": 27,
"refund_7d_share": 0.3,
"week1_signups": 520,
"week2_returned": 240,
"week2_return": 0.4615,
"week2_return_floor": 0.21,
"return_rule_status": "판정함",
"evidence": [
{
"field": "launched_at",
"value": "2026-09-10T10:00:00+09:00"
},
{
"field": "user_id",
"agg": "count",
"value": 1350
},
{
"field": "signup_to_paid_rate",
"value": 0.036
},
{
"field": "payment_key",
"agg": "count",
"value": 90
},
{
"field": "refunded_at",
"agg": "count",
"value": 27
},
{
"field": "refunded_at",
"value": "2026-09-19T19:00:00+09:00"
},
{
"field": "paid_at",
"value": "2026-09-12T19:00:00+09:00"
},
{
"field": "refunded_at",
"value": "2026-09-21T20:00:00+09:00"
}
],
"summary": "AI 데이트 코스 추천은 결제율 5.93% 로 기준을 넘지만, 환불 창이 닫힌 결제 90건 중 27건이 결제 뒤 7일 안에 환불돼 30.0% 로 기준선 30% 에 걸려 결제 뒤 바로 환불한 MVP 입니다.",
"hedge": "4주 중 25일치 기록이고, 기준 시각 전 7일 안에 들어온 결제 6건은 환불 창이 아직 열려 있어 분모에서 뺐습니다. tgen_20260912190000M03a 는 결제 뒤 정확히 168시간에 환불돼 7일 안으로 셌고, tgen_20260913200000M03b 는 192시간 뒤 환불이라 셈에서 뺐습니다. 26건이었다면 28.89% 로 기준 밑입니다."
},
{
"project_id": "M-04",
"project_name": "AI 요가 자세 피드백",
"verdict": "첫 주 뒤 돌아오지 않음",
"also_matched": [],
"benchmark_service": "콰트 요가",
"launched_at": "2026-09-03T10:00:00+09:00",
"as_of": "2026-10-05T23:59:59+09:00",
"window_days": 28,
"window_status": "4주 다 셈",
"signup_users": 900,
"paid_users": 38,
"paid_rate": 0.0422,
"paid_rate_floor": 0.0165,
"payment_count": 41,
"refund_window_closed_count": 37,
"refund_7d_count": 3,
"refund_7d_share": 0.0811,
"week1_signups": 400,
"week2_returned": 60,
"week2_return": 0.15,
"week2_return_floor": 0.2,
"return_rule_status": "판정함",
"evidence": [
{
"field": "launched_at",
"value": "2026-09-03T10:00:00+09:00"
},
{
"field": "user_id",
"agg": "count",
"value": 900
},
{
"field": "signup_to_paid_rate",
"value": 0.033
},
{
"field": "user_id",
"agg": "count",
"value": 400
},
{
"field": "user_id",
"agg": "count",
"value": 60
},
{
"field": "week2_return_rate",
"value": 0.4
}
],
"summary": "AI 요가 자세 피드백은 출시 첫 4주 결제율 4.22% 와 7일 안 환불 8.11% 는 기준 안이지만, 출시 첫 주 가입자 400명 중 둘째 주에 돌아온 사람이 60명(15.0%)으로 콰트 요가 기준 40% 의 절반 20% 에 못 미쳐 첫 주 뒤 돌아오지 않는 MVP 입니다.",
"hedge": "4주 창 안 결제 41건 가운데 10월 1일 창 끝 무렵 결제 4건은 7일 환불 창이 닫히지 않아 환불 비중의 분모를 37건으로 두었습니다."
},
{
"project_id": "M-05",
"project_name": "AI 사진 프로필 보정",
"verdict": "판정하기엔 가입자가 적음",
"also_matched": [],
"benchmark_service": "위피",
"launched_at": "2026-10-02T10:00:00+09:00",
"as_of": "2026-10-05T23:59:59+09:00",
"window_days": 3,
"window_status": "4주 중 3일치",
"signup_users": 199,
"paid_users": null,
"paid_rate": null,
"paid_rate_floor": null,
"payment_count": null,
"refund_window_closed_count": null,
"refund_7d_count": null,
"refund_7d_share": null,
"week1_signups": null,
"week2_returned": null,
"week2_return": null,
"week2_return_floor": null,
"return_rule_status": "가입자가 적어 보지 않음",
"evidence": [
{
"field": "launched_at",
"value": "2026-10-02T10:00:00+09:00"
},
{
"field": "user_id",
"agg": "count",
"value": 199
},
{
"field": "user_id",
"value": "u-5001"
}
],
"summary": "AI 사진 프로필 보정은 출시 나흘째인 기준 시각까지 가입자가 199명으로 200명에 한 명 모자라 판정하기엔 가입자가 적습니다.",
"hedge": "가입자가 200명을 넘기 전에는 결제·환불·재방문 규칙을 보지 않습니다. 실제 방문자 u-5001 처럼 live 로 들어온 가입도 같은 셈에 듭니다."
},
{
"project_id": "M-06",
"project_name": "AI 러닝 페이스 코치",
"verdict": "결제가 이어지는 MVP",
"also_matched": [],
"benchmark_service": "콰트 러닝",
"launched_at": "2026-09-25T09:00:00+09:00",
"as_of": "2026-10-05T23:59:59+09:00",
"window_days": 10,
"window_status": "4주 중 10일치",
"signup_users": 200,
"paid_users": 9,
"paid_rate": 0.045,
"paid_rate_floor": 0.011,
"payment_count": 9,
"refund_window_closed_count": 4,
"refund_7d_count": 1,
"refund_7d_share": 0.25,
"week1_signups": 168,
"week2_returned": null,
"week2_return": null,
"week2_return_floor": 0.155,
"return_rule_status": "둘째 주가 끝나지 않음",
"evidence": [
{
"field": "launched_at",
"value": "2026-09-25T09:00:00+09:00"
},
{
"field": "user_id",
"agg": "count",
"value": 200
},
{
"field": "user_id",
"agg": "count",
"value": 9
},
{
"field": "signup_to_paid_rate",
"value": 0.022
},
{
"field": "payment_key",
"agg": "count",
"value": 4
},
{
"field": "week2_return_rate",
"value": 0.31
},
{
"field": "payment_key",
"value": "tgen_20260927062233M06a"
}
],
"summary": "AI 러닝 페이스 코치는 가입자가 정확히 200명이라 판정에 들어가고, 열흘치 결제율 4.5% 가 콰트 러닝 기준 2.2% 의 절반 1.1% 를 넘으며 환불 창이 닫힌 결제 4건 중 환불이 1건(25.0%)이라 결제가 이어지는 MVP 입니다.",
"hedge": "4주 중 10일치만 센 판정입니다. 결제 9건 중 5건은 환불 창이 아직 열려 있어, 그중 두 건만 7일 안에 환불돼도 결제 뒤 바로 환불함으로 넘어갑니다. 둘째 주도 10월 9일 9시에 끝나 재방문 규칙은 아직 보지 않았고, 다음 주 리뷰에서 다시 계산합니다."
},
{
"project_id": "M-07",
"project_name": "AI 한일 채팅 번역",
"verdict": "판정하기엔 가입자가 적음",
"also_matched": [],
"benchmark_service": "위피 한일 매칭",
"launched_at": "2026-10-05T10:00:00+09:00",
"as_of": "2026-10-05T23:59:59+09:00",
"window_days": 0,
"window_status": "4주 중 0일치",
"signup_users": 0,
"paid_users": null,
"paid_rate": null,
"paid_rate_floor": null,
"payment_count": null,
"refund_window_closed_count": null,
"refund_7d_count": null,
"refund_7d_share": null,
"week1_signups": null,
"week2_returned": null,
"week2_return": null,
"week2_return_floor": null,
"return_rule_status": "가입자가 적어 보지 않음",
"evidence": [
{
"field": "launched_at",
"value": "2026-10-05T10:00:00+09:00"
},
{
"field": "user_id",
"agg": "count",
"value": 0
},
{
"field": "benchmark_service",
"value": "위피 한일 매칭"
}
],
"summary": "AI 한일 채팅 번역은 출시 뒤 기록된 이벤트가 하나도 없어 가입자 0명으로 판정하기엔 가입자가 적습니다.",
"hedge": "가입자가 0명이라 결제율을 0 으로 나누지 않고 비워 두었습니다. 출시 14시간째라 기록 함수가 빠졌는지는 Builder 가 MVP 에서 가입을 한 번 해 보고 확인합니다."
},
{
"project_id": "M-08",
"project_name": "AI 일본어 자기소개",
"verdict": "결제가 이어지는 MVP",
"also_matched": [],
"benchmark_service": "위피 재팬",
"launched_at": "2026-09-12T10:00:00+09:00",
"as_of": "2026-10-05T23:59:59+09:00",
"window_days": 23,
"window_status": "4주 중 23일치",
"signup_users": 640,
"paid_users": 26,
"paid_rate": 0.0406,
"paid_rate_floor": 0.0155,
"payment_count": 28,
"refund_window_closed_count": 22,
"refund_7d_count": 2,
"refund_7d_share": 0.0909,
"week1_signups": 300,
"week2_returned": 120,
"week2_return": 0.4,
"week2_return_floor": null,
"return_rule_status": "기준값 없음",
"evidence": [
{
"field": "launched_at",
"value": "2026-09-12T10:00:00+09:00"
},
{
"field": "user_id",
"agg": "count",
"value": 640
},
{
"field": "user_id",
"agg": "count",
"value": 26
},
{
"field": "signup_to_paid_rate",
"value": 0.031
},
{
"field": "week2_return_rate",
"value": null
},
{
"field": "service",
"value": "위피 재팬"
}
],
"summary": "AI 일본어 자기소개는 23일치 결제율 4.06% 가 위피 재팬 기준 3.1% 의 절반 1.55% 를 넘고, 환불 창이 닫힌 결제 22건 중 7일 안 환불이 2건(9.09%)이라 결제가 이어지는 MVP 입니다.",
"hedge": "위피 재팬 기준표에 둘째 주 재방문율이 비어 있어 재방문 규칙은 건너뛰었습니다. 둘째 주 재방문 40.0% 는 계산해 두었지만 견줄 기준이 없습니다."
}
][자동 검증 · 코드가 판정합니다] 1. verdict 가 결제가 이어지는 MVP·가입은 되는데 결제가 없음·결제 뒤 바로 환불함·첫 주 뒤 돌아오지 않음·판정하기엔 가입자가 적음 다섯 값 중 하나이고, also_matched 의 값도 그 다섯 값 안에 있는지 확인합니다. 2. project_id·project_name·verdict·also_matched·benchmark_service·launched_at·as_of·window_days·window_status·signup_users·paid_users·paid_rate·paid_rate_floor·payment_count·refund_window_closed_count·refund_7d_count·refund_7d_share·week1_signups·week2_returned·week2_return·week2_return_floor·return_rule_status·evidence·summary·hedge 필드가 빠짐없이 있는지 확인합니다. 3. paid_rate·paid_rate_floor·refund_7d_share·week2_return·week2_return_floor 가 0 이상 1 이하이고, window_days 가 0 이상 28 이하이며, 사람 수·건수 필드가 0 이상인지 확인합니다. 4. 4주 창을 launched_at 부터 min(as_of, launched_at + 28일) 까지로 잡고, signup_users 를 그 창 안에서 event 가 signup 인 고유 user_id 수로, paid_users 를 그 창 안에서 결제한 고유 user_id 수로, payment_count 를 그 창 안의 결제 건수로 다시 셉니다. paid_rate = paid_users / signup_users, paid_rate_floor = signup_to_paid_rate × 0.5, refund_7d_share = refund_7d_count / refund_window_closed_count, week2_return = week2_returned / week1_signups, week2_return_floor = week2_return_rate × 0.5 를 다시 계산합니다. 건수는 payment_key 가 같은 행을 한 건으로 셉니다. 5. signup_users 가 200 미만이면 verdict 는 판정하기엔 가입자가 적음이고 also_matched 는 빈 배열입니다. 6. 앞 조건에 걸리지 않고 paid_rate 가 paid_rate_floor 보다 작으면 verdict 는 가입은 되는데 결제가 없음입니다. 7. 앞 두 조건에 걸리지 않고 refund_7d_share 가 0.3 이상이면 verdict 는 결제 뒤 바로 환불함입니다. 8. 앞 세 조건에 걸리지 않고 return_rule_status 가 판정함이며 week2_return 이 week2_return_floor 보다 작으면 verdict 는 첫 주 뒤 돌아오지 않음이고, 그렇지 않으면 결제가 이어지는 MVP 입니다. 9. paid_at + 168시간이 as_of 이전이면 그 결제는 refund_window_closed_count 에 들고, 그중 refunded_at 이 paid_at 부터 168시간 이내이면 refund_7d_count 에도 듭니다. 10. as_of 가 launched_at + 28일 이후이면 window_status 는 4주 다 셈이고, 아니면 4주 중 window_days 일치입니다. 11. launched_at + 14일이 as_of 보다 뒤이면 return_rule_status 는 둘째 주가 끝나지 않음이고, 기준 서비스의 week2_return_rate 가 null 이면 return_rule_status 는 기준값 없음입니다. 12. evidence 의 field 이름이 mvp_events·mvp_payments·projects·launch_benchmarks 에 있는 컬럼인지 대조합니다. 13. agg 가 없는 evidence 의 value 가 수록된 행의 그 컬럼 값과 같은지 확인합니다. 여러 행을 센 수는 agg 를 적습니다. 14. summary 와 hedge 가 존댓말로 끝나는지 확인합니다. [판정 차례 · 둘 이상 걸릴 때] MVP 하나에는 대표 판정을 하나만 남기고, 걸린 나머지는 also_matched 에 둡니다. ① 판정하기엔 가입자가 적음 → ② 가입은 되는데 결제가 없음 → ③ 결제 뒤 바로 환불함 → ④ 첫 주 뒤 돌아오지 않음 → ⑤ 결제가 이어지는 MVP. 가입자가 200명 미만이면 다른 규칙을 보지 않습니다. 결제가 거의 없으면 환불과 재방문은 다음 문제라 결제 규칙을 먼저 보고, 결제가 들어와도 일주일 안에 돌려받는 MVP 는 재방문보다 먼저 드러냅니다. M-02 가 결제 없음과 재방문 없음에 함께 걸린 MVP 입니다. [하드 케이스 · 판정이 갈리는 이유] M-05 는 가입자 199명이라 판정하기엔 가입자가 적음이고, M-06 은 정확히 200명이라 판정에 들어갑니다. M-07 은 출시 뒤 이벤트가 0건이라 signup_users 가 0 이고 비율은 0 으로 나누지 않고 null 로 둡니다. M-03 은 환불 창이 닫힌 결제 90건 중 27건으로 정확히 30.0% 라 결제 뒤 바로 환불함에 걸립니다. 같은 MVP 의 tgen_20260912190000M03a 는 결제 뒤 정확히 168시간에 환불돼 셈에 들고, tgen_20260913200000M03b 는 192시간이라 빠집니다. M-06 은 결제 9건 중 4건만 환불 창이 닫혀 분모가 4 입니다. M-01 의 u-0000 은 launched_at 앞 Builder 본인의 테스트 가입·결제라 세지 않습니다. tgen_20260915000712M01a 는 재생 설정의 웹훅 재전송으로 같은 payment_key 가 두 행인 중복이고 한 건으로 셉니다. 위피 재팬은 week2_return_rate 가 null 인 결측이라 M-08 의 재방문 규칙을 건너뜁니다. [확정 카드 판정식과 다른 점] 1. 카드는 가입자가 적음만 먼저 본다고 적었고 나머지 셋의 차례는 적지 않았습니다. 결제 없음 → 환불 → 재방문 순으로 정하고, 함께 걸린 판정을 also_matched 에 남깁니다. 2. 기준표가 출시 첫 4주 값이라 가입자·결제자·결제 건수를 launched_at 부터 28일까지만 셉니다. 카드는 기간을 적지 않았습니다. 출시 28일이 안 된 MVP 는 그때까지의 기록으로 판정하고 window_status 에 4주 중 N일치를 남깁니다. 3. 카드의 7일 안은 paid_at 부터 168시간 이내로 셉니다. 환불 비중의 분모는 카드의 전체 결제가 아니라 paid_at + 168시간이 기준 시각 이전인 결제만 둡니다. 같은 payment_key 는 한 건으로 셉니다. 4. 카드의 가입 첫 주는 출시 시각부터 7일로, 둘째 주는 그다음 7일로 셉니다. 카드에 없는 예외로, 출시 14일이 지나지 않았거나 기준 서비스의 week2_return_rate 가 null 이면 재방문 규칙을 건너뛰고 return_rule_status 에 이유를 적습니다. 5. 카드는 결제가 이어지는 MVP 의 식을 따로 적지 않았습니다. 네 규칙에 하나도 걸리지 않은 MVP 를 이 판정으로 둡니다. [출처 · 공고 밖 사실] 공고는 엔라이즈의 사업을 밝히지 않습니다. 위피·콰트가 엔라이즈 서비스라는 것은 원티드 회사 프로필 https://www.wanted.co.kr/company/5005 에서, 위피 재팬과 한일 매칭 출시는 기사 https://www.epnc.co.kr/news/articleView.html?idxno=400101 에서 가져왔습니다. 콰트의 요가·러닝·운동 용품 갈래도 원티드 회사 프로필의 서비스 소개를 따랐습니다. launch_benchmarks 의 수치는 위피·콰트의 실제 출시 지표가 아니라 제가 넣은 가정값입니다. MVP 이름(AI 자기소개 첨삭·AI 운동 루틴 코치 등)은 엔라이즈가 실제로 벌이는 신사업 분야가 아니라 예시 데이터이고, 공고와 기사 어디에도 신사업 분야는 나오지 않습니다. [재생 설정 · 기대 출력의 셈을 다시 만드는 값] 재생 스크립트는 MVP 마다 아래 설정 한 줄과 난수 시드로 가상 방문자를 만들고, 가입·방문 이벤트는 이벤트 기록 함수에, 결제·환불은 결제 기록 함수에 가상 시각으로 넘깁니다. 가입 시각은 출시 뒤 사흘에 40% 가 몰리고 그 뒤로 날마다 줄어드는 분포에서 뽑고, 결제는 가입 뒤 0~5일, 환불은 결제 뒤 0~10일에서 고르게 뽑습니다. 웹훅 재전송 확률 0.01 로 같은 결제를 한 번 더 넘깁니다. 같은 시드로 다시 돌리면 아래 셈이 그대로 나옵니다. M-01 · 시드 20260908 · 4주 창 가입 1,920명 · 결제 확률 0.041 · 7일 안 환불 확률 0.13 · 둘째 주 재방문 확률 0.47 · 결과 결제 79명·86건, 창 닫힌 70건 중 환불 9건, 첫 주 610명 중 287명 재방문 M-02 · 시드 20260901 · 가입 2,180명 · 결제 0.006 · 환불 0.15 · 재방문 0.14 · 결과 결제 13명·13건, 13건 중 환불 2건, 첫 주 820명 중 118명 M-03 · 시드 20260910 · 가입 1,350명 · 결제 0.06 · 환불 0.30 · 재방문 0.46 · 결과 결제 80명·96건, 창 닫힌 90건 중 환불 27건, 첫 주 520명 중 240명 M-04 · 시드 20260903 · 가입 900명 · 결제 0.042 · 환불 0.08 · 재방문 0.15 · 결과 결제 38명·41건, 창 닫힌 37건 중 환불 3건, 첫 주 400명 중 60명 M-05 · 시드 20261002 · 가입 198명(live 가입 1명을 더해 199명) · 결제·환불·재방문 확률은 쓰지 않습니다 M-06 · 시드 20260925 · 가입 200명 · 결제 0.045 · 환불 0.25 · 재방문 0.31 · 결과 결제 9명·9건, 창 닫힌 4건 중 환불 1건, 첫 주 168명 M-07 · 재생을 돌리지 않습니다(이벤트 0건) M-08 · 시드 20260912 · 가입 640명 · 결제 0.04 · 환불 0.09 · 재방문 0.40 · 결과 결제 26명·28건, 창 닫힌 22건 중 환불 2건, 첫 주 300명 중 120명 [평가 러너 · 2주차] 가상 방문 시험 24개는 판정마다 기준값 바로 위·아래를 겨눈 재생 설정(가입자 199명과 200명, 7일 안 환불 29% 와 30%, 결제율이 기준 절반의 0.9배와 1.1배, 둘째 주 재방문이 기준 절반 바로 위·아래)으로 만든 기록입니다. 시험마다 설계한 판정과 화면 판정을 견줘 돌아온 수를 세고, 돌아오지 않은 시험은 그때 계산된 결제율·환불 비중·재방문율을 함께 남깁니다. [수동 검증 · 사람이 봅니다] 1. 결제가 이어지는 MVP 에 사람과 예산을 붙일지는 대표·경영진이 정합니다. 2. MVP 마다 어느 기준 서비스와 견줄지는 Builder 가 출시 때 정하고, 주간 리뷰에서 그 선택이 맞는지 함께 봅니다.
근거: AI 툴을 활용해 최소 기능 제품(MVP)을 구현하고 PMF를 검증합니다.