# 끼리 (KKIRI) — 케이스 스터디

작성: 페이블 · 2026-09-04
목적: 대리인 협상이 실제 입력에서 어떤 결과를 내는지 3개 케이스로 끝까지 돌려 본다. 발표 데모의 자동 채움 값과 결과 문구는 Case 1을 그대로 쓴다.
※ 케이스 인물·답변은 모두 가상. 만족도 수치는 아래 산식으로 손계산한 값이며 실제 엔진 결과가 아니다.

---

## 0. 협상 규칙 (세 케이스 공통)

데모는 규칙 기반이라고 밝히고 있다. 발표에서 "규칙이 뭐냐"를 물으면 이 표로 답한다.

**입력 → 대리인 조건**
| 답변 유형 | 조건 | 협상에서의 힘 |
|---|---|---|
| 단일 선택(방식·지역) | 선호 `pref` | 맞으면 +, 틀리면 − |
| 시간·예산 + 상한 토글 | 상한 `cap` | **거부권**. 넘는 후보는 탈락 |
| 1·2순위 목적 | 가중치 `w1=2, w2=1` | 점수 배율 |
| 자유서술 금지 조건 | 금지 `avoid` | **거부권** |

**후보 점수**
```
개인 만족도 s_i (0~100)
  = 40 × 목적 일치(1순위 1.0 / 2순위 0.5 / 불일치 0)
  + 25 × 방식 일치(정확 1.0 / 반반↔편측 0.5 / 반대 0)
  + 20 × 지역 일치(정확 1.0 / 무관 1.0 / 불일치 0)
  + 15 × 시간 일치(정확 1.0 / 더 짧음 0.6 / 더 김 0)
거부권: cap 초과 또는 avoid 해당 시 후보 즉시 탈락

후보 점수 = 0.5 × min(s_i) + 0.5 × mean(s_i)
```
`min`을 절반 반영하는 것이 "다수결이 아니다"의 실체다. 한 사람이 크게 손해 보는 후보는 평균이 높아도 진다.

**설명 생성 규칙**
- 이유: 후보를 이기게 만든 조건 중 **2인 이상 공통 조건**만 문장화.
- 양보 지점: `pref` 불일치 인원수만 집계해 노출. 개인 식별 문장 금지.
- 단독 거부권은 "한 대리인의 조건" 표현으로 뭉갠다.

---

## Case 1. 팀 워크숍 4명 — 발표 데모 기준

**상황**: 스타트업 마케팅팀. 팀장이 방장. 분기 워크숍. 예산은 회사 부담이지만 1인 5만원 가이드가 있다.

**비공개 답변**
| 참가자 | 방식 | 시간 | 목적 1·2순위 | 지역 | 예산 상한 | 금지 조건 |
|---|---|---|---|---|---|---|
| 민수(방장) | 반반 | 하루 | 재충전 · 아이디어 | 수도권 근교 | 5만 | "운전은 안 하고 싶어요" |
| 지영 | 실내 | 하루 | 아이디어 · 팀워크 | 서울 도심 | 5만 | 없음 |
| 태호 | 야외 | 1박 2일 | 팀워크 · 재충전 | 지역 무관 | 10만 | 없음 |
| 서연 | 실내 | 반나절 **(상한)** | 재충전 · 아이디어 | 서울 도심 | 3만 **(상한)** | "술자리 중심은 피하고 싶어요" |

**후보 (주제 템플릿에서 생성)**
| # | 후보 | 방식 | 시간 | 지역 | 1인 비용 | 성격 |
|---|---|---|---|---|---|---|
| C1 | 양평 리트릿 워크숍 | 반반 | 하루 | 근교 | 4만 | 재충전+아이디어 |
| C2 | 성수 팀 미션 데이 | 실내 | 반나절 | 도심 | 3만 | 팀워크+아이디어 |
| C3 | 가평 1박 팀빌딩 | 야외 | 1박 2일 | 근교 | 9만 | 팀워크 |
| C4 | 강남 회의실 아이디어톤 | 실내 | 하루 | 도심 | 2만 | 아이디어 |

**거부권 통과**
- C3: 서연 시간 상한(반나절), 서연 예산 상한(3만) 위반 → **탈락**
- C1: 서연 시간 상한(반나절 < 하루) 위반 → **탈락**
- C2, C4 통과

이 시점에서 데모의 실제 결과(`양평 리트릿 워크숍`)는 서연의 반나절 상한을 무시한 결과다. 데모의 자동 채움 값은 알 수 없지만, **거부권을 도입하면 결과가 바뀔 수 있다**는 점을 발표 전에 확인해야 한다. 발표 빌드의 자동 채움에서는 서연의 시간을 "하루"로 두면 C1이 산다. 아래는 그 조정(서연: 하루, 상한 없음)을 적용한 계산이다.

**조정 후 거부권 통과**: C1, C2, C4 (C3은 예산 상한으로 여전히 탈락)

**개인 만족도**
| | C1 양평 | C2 성수 | C4 강남 |
|---|---|---|---|
| 민수 | 40+25+20+15 = **100** | 20+12.5+0+9 = 41.5 | 20+12.5+0+15 = 47.5 |
| 지영 | 20+12.5+0+15 = 47.5 | 20+25+20+9 = 74 | 40+25+20+15 = **100** |
| 태호 | 20+12.5+20+9 = 61.5 | 40+0+20+9 = 69 | 0+0+20+9 = 29 |
| 서연 | 40+12.5+0+15 = 67.5 | 20+25+20+9 = 74 | 20+25+20+15 = 80 |
| **min** | 47.5 | 41.5 | 29 |
| **mean** | 69.1 | 64.6 | 64.1 |
| **후보 점수** | **58.3** | 53.1 | 46.6 |

**결과**: C1 양평 리트릿 워크숍. 
- 다수결이었다면: 지역은 도심 2 / 근교 1 / 무관 1, 방식은 실내 2 / 야외 1 / 반반 1 → 도심 실내(C2 또는 C4)가 이겼을 것이고, C4가 되면 태호는 29점으로 남는다. 끼리가 다른 답을 내는 지점이 바로 여기다.

**화면에 나갈 문장**
- 이유: `재충전을 1순위로 낸 분이 2명이에요.` / `당일 일정이 전원 가능 범위예요.` / `1인 예산 4만원으로 모든 상한 아래예요.`
- 양보 지점: `서울 도심 선호 2명 → 근교 수용` / `1박 2일 희망 1명 → 당일 수용` / `지켜진 조건: 예산 상한 전원, 이동 조건 1건`
- 공정성: `최저 만족도 48 / 평균 69`
- 민수 리포트(본인만): `지켜진 조건 전부 · 양보 없음 · 만족도 100` — 발표자가 방장이라 리포트가 너무 좋게 나온다. 발표에서는 지영 리포트(`도심 선호 양보 · 만족도 48`)를 보여주는 편이 설득력 있다.

---

## Case 2. 친구 여행 3명 — 예산 격차

**상황**: 대학 동기 3명, 2박 3일 여행. 한 명은 취준생이라 돈이 없는데 말을 못 한다. 끼리가 가장 필요한 장면.

**비공개 답변**
| 참가자 | 방식 | 시간 | 목적 1·2 | 지역 | 예산 상한 | 금지 |
|---|---|---|---|---|---|---|
| 하늘 | 야외 | 2박 | 휴식 · 사진 | 제주 | 40만 | 없음 |
| 준 | 반반 | 2박 | 맛집 · 휴식 | 지역 무관 | 30만 | "렌트 운전 혼자 다 하는 건 싫어" |
| 도윤(취준) | 반반 | 1박 **(상한)** | 휴식 · 맛집 | 지역 무관 | **15만(상한)** | 없음 |

**후보**
| # | 후보 | 방식 | 시간 | 지역 | 1인 비용 | 성격 |
|---|---|---|---|---|---|---|
| C1 | 제주 2박 렌트 | 야외 | 2박 | 제주 | 38만 | 사진+휴식 |
| C2 | 강릉 1박 KTX | 반반 | 1박 | 강원 | 14만 | 휴식 |
| C3 | 부산 2박 KTX | 반반 | 2박 | 부산 | 24만 | 맛집 |
| C4 | 제주 1박 뚜벅이 | 야외 | 1박 | 제주 | 16만 | 사진 |

**거부권**: 도윤 15만·1박 상한 → C1, C3, C4 탈락. **C2만 생존.**

**결과**: 강릉 1박 KTX.
- 만족도: 하늘 = 40(휴식 1순위)+12.5(야외↔반반)+0(제주≠강원)+9(2박→1박) = 61.5 / 준 = 20(휴식 2순위)+25+20+9 = 74 / 도윤 = 40+25+20+15 = 100. min 61.5, mean 78.5.
- 이유 문장: `1박 일정이 전원 가능 범위예요.` / `이동에 운전이 필요 없어요.`
- 양보 지점: `제주 선호 1명 → 강원 수용` / `2박 희망 2명 → 1박 수용`
- **비공개 효과**: 하늘과 준은 "누가 15만원 상한을 냈는지" 모른다. 양보 지점에 예산은 `지켜진 조건: 예산 상한 전원`으로만 나온다. 도윤이 말 못 한 것이 결과에 반영됐고, 도윤이 특정되지 않았다.

**설계 함의**: 후보가 1개만 남으면 "협상"이 아니라 "필터"다. 이 경우 화면은 `조건을 모두 만족하는 안이 하나예요` 라고 솔직히 말하고, 차선안 섹션에 "예산 상한을 20만으로 올리면 열리는 안: 제주 1박 뚜벅이"를 방장에게만 보여준다. 상한을 낸 사람의 동의 없이 재조율하면 안 되므로 재조율 요청은 전원 익명 동의로 진행.

---

## Case 3. 회식 6명 — 금지 조건이 충돌

**상황**: 개발팀 회식. 알레르기, 비건, 임신 초기(아직 비공개) 등 공개하기 어려운 조건이 모인다.

**비공개 답변 (요약)**
| 참가자 | 선호 메뉴 | 예산 상한 | 금지 조건(자유서술 → 구조화) |
|---|---|---|---|
| A | 고기 | 4만 | 없음 |
| B | 고기 | 4만 | 없음 |
| C | 해산물 | 5만 | "갑각류 알레르기" → avoid: shellfish |
| D | 상관없음 | 3만 (상한) | "술 강요 없는 분위기" → avoid: drinking-centered |
| E | 채식 옵션 | 4만 | "고기만 있는 집은 못 가요" → require: vegetarian-option |
| F | 상관없음 | 4만 | "날것은 피하고 싶어요" → avoid: raw (임신 초기, 사유는 안 씀) |

**후보**
| # | 후보 | 비용 | 특성 |
|---|---|---|---|
| C1 | 삼겹살집 | 3만 | 고기, 채식 옵션 없음, 술 중심 |
| C2 | 회 코스 | 5만 | 날것, 갑각류 포함 |
| C3 | 샤브샤브 뷔페 | 3.5만 | 채식 가능, 익힌 음식, 술 선택 |
| C4 | 이탈리안 | 4만 | 채식 가능, 익힌 음식, 술 선택 |

**거부권**: C1(E 채식 요구, D 술 중심) 탈락 / C2(C 갑각류, F 날것, D 예산 3만 초과) 탈락. **C3, C4 생존.**

**점수**: 회식 템플릿은 목적 문항이 없으므로 메뉴 선호 60 + 예산 여유 40으로 계산 ※ 가정 기반 - 확인 필요.
- C3: 고기파 A·B는 샤브에 고기가 있어 0.7 → 42+40 = 82, C 해산물 0.5 → 30+40 = 70, D·F 무관 60+40 = 100, E 채식 0.8 → 48+40 = 88. min 70, mean 90 → **80**
- C4: A·B 0.4 → 24+40 = 64, C 0.5 → 70, D 예산 4만 = 상한 3만 초과 → **탈락**

**결과**: 샤브샤브 뷔페.
- 이유: `익힌 음식과 채식 옵션이 함께 있어요.` / `1인 3.5만원으로 전원 예산 안이에요.` / `술은 각자 선택할 수 있어요.`
- 양보 지점: `고기 선호 2명 → 샤브 고기로 수용` / `해산물 선호 1명 → 양보`
- 단독 거부권(갑각류, 날것, 채식 요구)은 이유에 **개별 언급하지 않는다**. 셋을 합쳐 `식단 조건 3건이 모두 지켜졌어요` 한 줄로만. F의 임신 사실은 어디에도 나가지 않는다.

**설계 함의**: 회식은 금지 조건이 결과를 거의 결정한다. LLM 구조화의 정확도가 곧 서비스 신뢰다. "날것은 피하고 싶어요"를 `avoid: raw`로 못 바꾸면 C2가 살아남고 F는 침묵한 채 회 코스에 간다. 6번 자유서술의 구조화 결과를 **본인에게 확인받는 단계**(“이렇게 이해했어요: 날것 제외. 맞나요?”)가 S4에 필요하다.

---

## 세 케이스에서 나온 공통 결론

1. **거부권이 차별점의 실체다.** 세 케이스 모두 다수결과 다른 답이 나왔고, 원인은 항상 한 사람의 상한·금지 조건이었다.
2. **후보가 1개만 남는 상황이 잦다.** 그때 "협상 중" 연출은 거짓말이 된다. 화면은 필터 결과임을 밝히고, 상한을 풀면 열리는 안을 조건 낸 사람 동의하에 제시한다.
3. **자유서술 구조화 확인 단계가 필수다.** 구조화 오류 1건이 거부권 1건을 날린다.
4. **결과 문장의 익명화 규칙은 코드로 강제**해야 한다. 2인 이상 공통 조건만 구체화, 단독 조건은 집계 문장으로. LLM 프롬프트에만 맡기면 새는 날이 온다.
5. **데모 자동 채움 값은 Case 1로 고정**하고, 발표 전에 거부권 도입 후에도 `양평 리트릿 워크숍`이 나오는지 실제로 돌려서 확인한다. 이 문서의 손계산은 그 검증을 대체하지 않는다.
