끼리 (KKIRI) — 스레드 취합 분석 · 목업 설계 노트
작성: 페이블 · 2026-09-04
입력: wanted 채널 스레드 1b01f144… 의 소넷 · 쏠 · 페이블 산출물 9건 (OUTBOX/KKIRI_기획서_소넷.html, OUTBOX/KKIRI_*.md(쏠), OUTBOX/KKIRI/*.md(페이블)). 스파크는 미제출.
산출물: OUTBOX/KKIRI/mockup/ (정적 목업 사이트, 서버 없음) + mockup/shots/ (헤드리스 스크린샷)
1. 세 기획서 비교
| 항목 | 소넷 | 쏠 | 페이블 |
|---|---|---|---|
| 타깃 인원 | 4~8인 | 4~8인 (가정) | 2~12인 (가정) |
| MVP 장르 | 3인 · 단일 축(예산 또는 일정) 1건 증명 | 팀 워크숍만 | 여행·워크숍·회식 3개 유지 |
| 화면 수 | 6 | 11 (S00~S10) | 10 (S0~S9) |
| 합의 규칙 | 미정 (LLM 협상 실증 요구) | 하드 제약 0 → 최저 만족도 우선 → 평균 → 운영 부담 | 거부권 → 0.5·최저 + 0.5·평균 |
| 협상 연출 | 진행률 + "무엇을 협상 중" 라벨 | 4단계 계산 문구 | 익명 대리인 발언 로그 |
| 결과 뒤 단계 | 확정 + 캘린더 | 개인 영수증 → 전원 재확인(동의/조건부/재조정) → 완료 | 내 대리인 리포트 → 결정 완료·공유, 재조율 1회 |
| 미응답 처리 | 24h 리마인드 (미기획) | 방장 마감, 누락자 명시, 대신 답변 금지 | 마감 시간 + 기본값 대리인 |
| 강조한 리스크 | 콜드스타트, 데모≠제품, 신뢰의 역설 | 미검증 전제 4개, 프라이버시 경계 | 양보 지점 부재, 개인 특정, 구조화 오류 |
세 사람이 모두 같은 말을 한 곳 (그대로 채택)
- 원문 답변은 끝까지 비공개. 공개 결과는 집단 문장, 개인 화면은 본인 것만.
- 하드 제약(상한·금지) 먼저 걸러내고, 다수결이 아니라 가장 불리한 사람을 먼저 본다.
- LLM은 자유서술 구조화와 설명 문장 생성만. 순위 계산은 재현 가능한 규칙.
- 현재 데모가 규칙 기반 시뮬레이션이라는 사실을 숨기지 않는다.
갈린 곳과 목업에서의 결정
| 쟁점 | 결정 | 이유 |
|---|---|---|
| 인원 | 3~8명 (민수님 지시) | 3 미만은 대화가 빠르고, 8 초과는 발언 로그·양보 집계가 길어져 읽히지 않음 |
| 장르 | 워크숍만 동작, 여행·회식은 NEXT 표시 (쏠 안) | 후보 데이터와 질문 구조를 하나만 검증. 랜딩에 다른 장르가 보이긴 해야 제출 원문과 어긋나지 않음 |
| 점수식 | 0.5·최저 + 0.5·평균 (페이블 케이스 스터디와 동일) | 화면에는 최저·평균 둘 다 표시. 쏠의 "최저 우선 → 동률 시 평균"과의 선택은 판단 필요 (§7) |
| 협상 연출 | 4단계 계산 문구(쏠) + 익명 발언 로그(페이블) | 라벨만으로는 "AI가 뭘 했나"가 안 보이고, 로그만으로는 규칙이 안 보임 |
| 결과 뒤 | 내 리포트 → 최종 재확인 3택(쏠) + 재조율 1회 제한(페이블) | 추천과 합의를 구분하는 장치는 재확인뿐 |
| 질문 수 | 6문항 (페이블) — 쏠의 7문항 중 "양보할 수 있는 것"은 상한 토글로 흡수 | 문항마다 "거부권 켜기"를 두면 별도 문항 없이 양보 범위가 잡힘 |
취합 중 발견한 오류 (페이블 케이스 스터디 Case 1) 서연의 예산 상한 3만원이면 C1 양평(4만원)도 거부권에 걸려 탈락한다. 손계산은 이걸 놓치고 양평을 결과로 적었다. 목업 자동 채움은 서연 상한을 5만원으로 수정했고, 엔진 실행 결과 3~8명 전부 양평 리트릿 워크숍이 나온다(§6).
2. 참여 인원 3~8명 규칙
- 스테퍼는 3 미만·8 초과로 못 간다. 3에서 "3명 미만은 그냥 대화가 빨라요", 8에서 "8명이 넘으면 대리인 설명이 읽기 어려워져요" 문구.
- 협상 시작 최소 인원 3명. 마감 시점에 답변이 3명 미만이면 시작하지 않고 연장 또는 방 닫기.
- 공용 링크는 정원이 차면 닫힌다. 개인 링크는 정원 개념이 없다(이름 수 = 정원).
- 익명화 규칙 "2명 이상 공통 조건만 구체화"는 3명 방에서 약하다. 나 빼고 둘 중 하나가 낸 조건은 추정이 쉽다. 엔진 실행 결과 3명 방은 양보 지점이 전부 "단독 양보 4건"으로 뭉개져 나오므로 현재 규칙으로도 개인 특정은 안 되지만, 설명이 빈약해진다. 3명 방은 리포트 중심으로 설계하는 편이 맞다(§7).
3. 초대 링크 발송
| 공용 링크 + 입장 코드 (기본) | 이름별 개인 링크 | |
|---|---|---|
| 형태 | kkiri.app/r/{room} + 6자리 코드 |
kkiri.app/r/{room}/p/{token} 사람마다 다름 |
| 발송 | 단톡방·슬랙에 한 번 | 방장이 이름 입력 후 사람별 전송 |
| 정원 | 인원 차면 닫힘 | 이름 수로 고정 |
| 누가 안 답했나 | 입장한 닉네임 기준 (미입장자는 "참가자 N") | 정확히 앎 |
| 중복 입장 | 코드로 막지만 같은 사람이 두 번 들어올 수 있음 | 불가 |
| 리마인드 | 초대 채널에 다시 공지 | 그 사람에게만 |
| 프라이버시 | 방장이 이름을 미리 알 필요 없음 | 방장이 "누가 미응답"까지 앎. 무엇을 답했는지는 여전히 못 봄 |
| 권장 | 친구·가족 (카카오톡) | 직장 팀 (슬랙·메일) |
공유 시트: 카카오톡 · 슬랙 · 문자/메일 · QR · 링크 복사 · 캘린더 초대(초대 링크를 일정 설명에 첨부). 링크 만료 = 답변 마감 시각. 개인 토큰은 내 리포트 접근 인증에도 쓴다(URL만 아는 다른 참가자는 리포트를 못 본다 — 쏠 S08).
4. 타임아웃 규칙
| 단계 | 값 | 도달했을 때 | 목업 구현 |
|---|---|---|---|
| 답변 마감 | 3시간 / 오늘 자정 / 24시간(기본) / 48시간 | 답변 ≥3명 → 자동 협상 시작, 미응답 조건 미반영 + 결과에 "미응답 N명" 배너. 답변 <3명 → 마감 화면: 24시간 연장(최대 2회) 또는 방 닫기 | advance() |
| 자동 리마인드 | 남은 시간 절반 지점, 마감 1시간 전 | 미응답자에게만. 초대 방식에 따라 채널/개인 | 리마인드 기록 타임라인 |
| 수동 리마인드 | 쿨다운 30분 | 방장 버튼, 미응답자에게만 | 버튼 비활성 + 남은 분 표시 |
| 조기 시작 | 전원 완료 시 3초 뒤 자동 | 미완료 시 방장 확인 모달 "N명 미응답, 조건 미반영" | 모달 |
| 설명 생성(LLM) | 30초 | 규칙 기반 문장으로 폴백, 결과 배지에 "설명은 간략하게 제공돼요" | 패널 토글로 시연 |
| 재확인 마감 | 결과 후 24시간 | 미응답 = 기권 집계, 재조율 요청이 없으면 방장 확정 가능 | tRatify |
| 재조율 | 방당 1회 | 요청자 익명, 새 조건 추가 후 재계산 | 재확인 화면 3번째 선택지 |
| 결정 완료 후 | 7일 읽기 전용, 원문 삭제 | 기간은 정책 확정 후 (가정 표기) | 완료 화면 문구 |
| 미응답자 답변 대행 | 금지 | 방장은 남 대신 답하지 못함 (쏠) | 패널의 "제출"은 시뮬레이션 전용 |
5. 목업 구성
OUTBOX/KKIRI/mockup/ — index.html styles.css(데모 CSS 상속 + 확장) app.js engine.js check.mjs README.md
실행: python3 -m http.server 8765 후 http://localhost:8765/?reset. 오른쪽 아래 「목업 시뮬레이터」로 다른 참가자 입장·제출, 시간 진행(+1h/+6h/마감 1시간 전/마감/재확인 마감), 방장↔참가자 보기, LLM 타임아웃을 흉내 낸다.
화면 13개: 홈 → 방 만들기(인원·마감·초대 방식·방장 이름) → 초대(링크·코드·공유 시트·참여 현황·리마인드 기록) → 약속·이름 → 질문 6(상한 토글, 1·2순위, 자유서술 구조화 확인) → 대기실(내 대리인 카드·현황·마감·수동 알림) → 조율(4단계 + 익명 로그) → 결과(스펙·이유·양보·공정성·차선·제외 후보) → 내 리포트 → 최종 재확인(3택·집계·마감) → 완료(공유·.ics·실행 체크) / 예외: 마감 미달, 합의 불가.
엔진(engine.js): 후보 5개(양평·성수·가평·강남·파주), 자동 채움 페르소나 7명, 규칙은 케이스 스터디 §0 그대로. node check.mjs로 3~8명 표를 재현할 수 있다.
6. 헤드리스 검증 결과 (Playwright · Chromium headless · 430×900 · 2026-09-04)
엔진 단독 (node check.mjs): 자동 채움 페르소나로 3~8명 전부 양평 리트릿 워크숍.
| 인원 | 최저 | 평균 | 후보 점수 | 거부권 탈락 |
|---|---|---|---|---|
| 3 | 61.5 | 76.3 | 68.9 | 가평 |
| 4 | 61.5 | 74.1 | 67.8 | 가평 |
| 5 | 61.5 | 75.3 | 68.4 | 가평 |
| 6 | 52.5 | 71.5 | 62.0 | 가평, 파주 |
| 7 | 52.5 | 75.6 | 64.1 | 가평, 파주 |
| 8 | 52.5 | 77.1 | 64.8 | 가평, 파주 |
브라우저 흐름 A — 4명 · 공용 링크 · 해피패스 (shots/01~15)
- 인원 스테퍼 상한 8 · 하한 3에서 버튼 비활성 확인
- 자유서술 "그냥 싫어요" → 구조화 실패 → 다음 버튼 비활성 / "운전은 안 하고 싶어요" →
운전 없는 동선확인 문구 - 전원 제출 → 3초 뒤 자동 조율 → 결과
양평 리트릿 워크숍, 양보 지점·공정성·차선 2개·제외 후보 1개 표시 - 내 대리인 리포트(본인만) → 최종 재확인 동의 → 미응답 1명 있는 동안 확정 버튼 비활성 → 재확인 마감 → "기권으로 집계" → 확정 → 완료 화면
브라우저 흐름 B — 8명 · 개인 링크 · 타임아웃 (shots/20~28)
- 개인 링크 모드에서 참가자 7명 이름이 방 생성 시 채워짐
- +6h ×2 → 남은 시간 절반 지점 리마인드 기록 / 마감 1시간 전 → 두 번째 자동 리마인드 / 방장 수동 알림 → 30분 쿨다운 비활성
- 답변 2명(방장 포함)에서 마감 도달 → "아직 시작할 수 없어요" 화면 → 24시간 연장 → 대기실 복귀, 연장 기록 남음
- 답변 4명에서 마감 도달 → 자동 시작 배너 → 결과에 "미응답 4명 조건 미반영" 배너, 결과는 여전히 양평
- 재조율 요청(숙박·술자리 제외) → 재계산 → "재조율 1회 반영" 배너 → 두 번째 재조율 버튼 비활성
- 조건부 동의 "점심은 회사 근처에서" → 실행 조건으로 집계 표시 / 참가자 보기에서 "방장의 확정을 기다리는 중"
브라우저 흐름 C — 3명 · 합의 불가 · LLM 타임아웃 (shots/29~30)
- 반나절 상한 + "새벽 출발은 싫어요"(성수 09:00 집결에 걸림) → 후보 0개 → "모든 조건을 동시에 지키는 안이 없어요" 화면, 제외 사유는 주제만 표시
- LLM 타임아웃 토글 → 로그에 "규칙 기반 문장으로 대체" 시스템 줄
검증 못 한 것
- 실제 다기기 동기화·서버·토큰 인증 (목업은 단일 브라우저 + localStorage)
- 카카오톡·슬랙·QR 공유는 토스트로만 동작
- 자유서술 구조화는 키워드 7종 규칙. LLM이 아니다
- 데스크톱 폭·접근성·다국어 미확인
7. 판단 필요 (민수님)
- 점수식 — 0.5·최저 + 0.5·평균(현재) vs 최저 우선·동률 시 평균(쏠). 결과는 지금 데이터에서 같지만 발표에서 "규칙이 뭐냐"에 한 줄로 답해야 한다.
- 초대 기본값 — 공용 링크(친구용) vs 개인 링크(직장 팀용). MVP 타깃이 직장 팀이면 개인 링크가 기본이어야 리마인드·미응답 처리가 정확하다.
- 원문 보관 기간 — 약속 화면에 숫자가 비어 있다. 정책이 정해져야 카피를 채운다.
- 3명 방 익명성 — 2인 공통 규칙이 3명에서는 약하다. 3명 방은 양보 집계를 아예 숨기고 리포트만 줄지 결정 필요.
- 배포 — Cloudflare Pages(기존 데모와 같은 곳)에 별도 프로젝트로 올릴지. 배포는 지시 전까지 하지 않는다.