📑 이 챕터에서 다룰 내용
권1 제1장에서 SPEC v1을 의도적으로 불완전하게 작성했습니다. 이제 두 번째 의견을 받는 자리 — 5확장 E3(두 검토자 사각지대)의 첫 라운드입니다.
Claude가 만든 SPEC을 Claude에게 다시 검토 요청 = 같은 회사 모델 = 같은 맹점. Gemini는 다른 회사(Google) AI = 다른 학습 데이터 = 다른 사각지대. "두 회사 사각지대 차이"가 E3의 본질입니다.
1탄 v2 부록 H-3 표: Claude 강점 (비즈니스 로직·사용자 행동·측정 임계값) vs Gemini 강점 (인프라·edge case·외부 의존성).
[gemini.google.com 접속 → 새 대화] 아래 앱 SPEC을 5가지 관점에서 검토해줘: 1. 보안: 악용할 수 있는 구멍이 있는가? 2. 수익화: Phase 1에서 실제로 돈을 받을 수 있는가? 3. 범위: 혼자 10주 안에 완성 가능한 규모인가? 4. 누락: 없으면 앱이 작동 안 되는 필수 기능이 빠진 게 없는가? 5. DB: N+1 쿼리·보안 취약점·확장성 문제가 있는 설계인가? 추가로: - LLM 분류 파이프라인의 신뢰성 점검 - 외부 API 4개 의존성 (호출 한도·응답 변경·인증) - 한국 서비스 특수 (행정구역 코드·PIPA 등) [SPEC.md v1 전체 붙여넣기 — 약 8KB]
Gemini의 응답이 6건 발견. 줍줍 사례에서 나온 결과입니다.
[발견 1 — DB 설계: 통계 조작 가능]
jupjups 테이블에 UNIQUE (user_id, benefit_id) 가 있지만, 한 사용자가 여러 카카오 계정으로 우회 가능. IP 기반 제한이 추가로 필요. 한 IP에서 1시간에 5회 이상 INSERT 시 reject 권장.
[발견 2 — LLM 분류 신뢰성: confidence 임계값 미명시]
3단계 Parser에서 LLM이 JSON 분류 후 confidence를 산출하는데, SPEC에 임계값(예: 0.7 미만 NULL) 명시 부재. confidence 0.4의 결과가 사용자에게 노출되면 신뢰 손상. 운영자 검수 큐 구조 필요.
[발견 3 — 보안: 개인정보 처리 범위 불명확]
카카오 로그인 외 IDFA·디바이스 식별자 수집 여부 미명시. 한국 PIPA 준수 명시 필요.
[발견 4 — 수익화: 0~6개월 무수익이 의도적인지 누락인지 모호]
SPEC §6에 Phase 1 의도적 무수익이 명시됐지만, 변호 논리 없음. 명시적 근거가 필요.
[발견 5 — 외부 API: 호출 한도·응답 변경 처리 부재]
공공데이터 API 4개 모두 호출 한도가 있을 가능성 높음. pg_cron 매일 03:00 호출이지만, 한도 초과 시 fallback 명시 부재.
[발견 6 — 한국 서비스 특수: 행정구역 코드 변경 처리 부재]
한국 행정구역은 통폐합으로 변경됨. 변경 시 기존 benefits 데이터의 region 자동 재매핑 정책 부재.
Gemini가 잡은 6건 중 5건이 인프라·edge case·외부 의존성 영역 — 1탄 v2 부록 H-3 표의 "Gemini 강점" 패턴 데이터 입증입니다.
모든 발견을 "무조건 반영"하지 않습니다. 정직한 평가를 적용합니다.
| # | 발견 | 처리 | 근거 |
|---|---|---|---|
| 1 | UNIQUE + IP 추적 | 받아들임 (즉시 SPEC v2) | 통계 조작은 줍줍의 핵심 가치 (집단 지성 신뢰) 직결. |
| 2 | LLM confidence 임계값 + 검수 큐 | 받아들임 (즉시) | 사용자 신뢰 직결. confidence 0.7 미만 NULL + 검수 큐 추가. |
| 3 | 개인정보 처리 범위 + PIPA | 받아들임 (즉시) + E1 본격 (권1 제3장) | PIPA 준수 명시 + IDFA 미수집. 본격 결정은 권1 제3장. |
| 4 | 수익화 변호 논리 + Phase 2 시점 명시 | 받아들임 (즉시) | SPEC §6에 변호 논리 추가 + Phase 2 시작 6개월 명시. |
| 5 | API 호출 한도 + 응답 schema 검증 | 받아들이지만 PLAN.md로 미룸 | 운영 단계의 fallback. SPEC에 의도만 명시. |
| 6 | 행정구역 코드 변경 처리 | 받아들이지만 PLAN.md로 미룸 | Phase 1.0에서 발생 빈도 낮음. PLAN R8 리스크 등록부에 추가. |
받아들임 (즉시 SPEC v2) — 4건: 통계 신뢰 / LLM 신뢰 / 개인정보 / 수익 변호 논리 → 모두 줍줍의 "신뢰" 본질 직결
받아들이지만 PLAN으로 미룸 — 2건: API 한도 fallback / 행정 코드 → 운영 단계 / 발생 빈도 낮음 / Phase 1.0 본질 아님
기각 — 0건 (Gemini 검토 6건 모두 정당)
# Gemini 발견 반영은 단순 수정 작업 → Sonnet으로 전환 /model claude-sonnet-4-6 /effort high SPEC.md를 v2로 패치해줘: [즉시 반영 4건] 1. §3 DB 스키마 jupjups 테이블: + IP 기반 제한: 한 IP에서 1시간 5회+ INSERT 시 reject (트리거) 2. §3-2 LLM 분류: + confidence 임계값 0.7 명시 + confidence < 0.7 필드는 NULL + source_url 보완 + 운영자 검수 큐 (어드민 페이지에서 확인·승인) 3. §3 + §8: + 개인정보 수집 범위: 카카오 ID·자발적 필터만 + 미수집 명시: IDFA·디바이스 식별자 + PIPA 준수 명시 4. §6 수익화: + 변호 논리: "수익화 시도는 커뮤니티 신뢰를 망친다" + Phase 2 시작 명시: "Phase 1 출시 6개월 후" [PLAN으로 미루는 2건 — SPEC에는 의도만] 5. API 호출 한도 fallback — PLAN G2 (4주차)에서 본격 구현 6. 행정구역 코드 변경 처리 — PLAN R8 리스크 등록부
git add SPEC.md git commit -m "SPEC v2: Gemini 1차 6건 분류 (즉시 4 + PLAN 2)" # BUILD.md Day 2 entry: # [LogOnTable 트레이스] # 결정: 6건 중 4건 즉시 SPEC v2 + 2건 PLAN.md로 미룸 # 근거: 정직한 우선순위 평가. "신뢰 본질" 직결 4건은 즉시 # 누적 시간: 1.5h (Day 1) + 2h (Day 2) = 3.5h
권1 제2장에서 SPEC v2까지 완성됐습니다. 이제 5확장 E1(회색지대 결정)의 4단계 결정 프레임을 적용하는 자리. 2탄 v2의 가장 가치 있는 챕터 중 하나입니다.
- ① 영역 식별 (30분)
- ② 포함/배제 (1h)
- ③ 표현 정제 — 외부 노출 텍스트 (1h)
- ④ SPEC 명시 (30분)
총 약 3h. 9개 표준 도구가 모두 다루지 못하는 영역 — 법적·윤리적·시장적 "회색지대"에서 "안전하고 솔직한 자기 위치"를 명세적으로 정합니다.
줍줍의 회색지대 두 가지
| 회색지대 | 영역 | 위험 |
|---|---|---|
| ① "줍줍" 표현의 정직한 위치 | 시장적·언어적 | 정부 공식 절차와 거리 → 사용자 항의 / 단속 위험 |
| ② 개인정보 최소 수집 정체성 | 법적 (PIPA) | 민감 정보 인접 → 심사 거절 / 신뢰 손상 |
단계 ① 영역 식별
Junho: "줍줍"이 가벼운 톤이라 후기 공유 커뮤니티에는 자연스러운데, 정부 공식 사이트(복지로·보조금24)의 톤과 거리가 너무 큼. 사용자가 "공짜로 받게 해주는 곳"으로 오해할 수 있음.
Claude: 시장적·언어적·법적 회색지대 동시 발생. "줍는다" = "공식 절차 없이" 뉘앙스도 가능. 표시·광고 공정화에 관한 법률 제3조 (부당 표시·광고 금지) 적용 가능성.
단계 ② 포함 / 배제
| 구분 | 내용 |
|---|---|
| [포함] — 본 서비스가 약속하는 것 | ① 정부 공식 정보를 한 곳에 정리 ② 사용자 후기를 통한 신청 노하우 공유 ③ 마감일·자격 요건·우선순위 정보 알림 ④ 익명·자유 후기 작성 공간 제공 |
| [배제] — 본 서비스가 약속하지 않는 것 ★ | ① 무조건 받게 해준다 (신청 결과 보장 ❌) ② 공식 신청 절차 대행 ❌ ③ 자격 요건 미달자에게 보장 ❌ ④ 정부와의 직접적 연관 ❌ |
단계 ③ 표현 정제 — 외부 노출 텍스트
줍줍은 정부 지원금 정보를 정리하고, 사용자 후기를 공유하는 미디어입니다.
✓ 우리가 약속하는 것:
- 정부 공식 정보를 한 곳에 정리합니다
- 마감일·자격 요건·우선순위를 알려드립니다
- 사용자가 직접 신청해본 후기를 공유합니다
✗ 우리가 약속하지 않는 것:
- 무조건 받게 해드리지 않습니다 (신청 결과 보장 X)
- 공식 신청 절차를 대행하지 않습니다
- 자격 요건 미달자에게 보장하지 않습니다
- 정부와 직접 연관된 공식 서비스가 아닙니다 (사기업 운영)
단계 ④ SPEC 명시 — 변호 논리
"줍줍은 정부 공식 정보를 정리하고 사용자 후기를 공유하는 미디어이며, 신청 결과를 보장하거나 대행하지 않는다."
이 한 줄이 SPEC § 회색지대 결정 ①에 박혀야 합니다. 6개월 후 단속·신고 발생 시 변호 논리가 사실로 성립합니다.
단계 ① 영역 식별
줍줍은 사용자의 "민감 정보"가 가까이 있습니다:
- 자영업자: 사업장 시군구·업종·매출 단계 (사업 정보)
- 일반 시민: 가구 형태·소득 분위·생애주기 (가구 정보)
이 정보들이 자발적 입력이지만, 한국 PIPA 기준에서 "민감 정보" 인접. 처음부터 "수집 안 함" 정체성을 명세적으로 결정해야 합니다.
단계 ② 수집 / 미수집 / 제3자 제공
| 구분 | 내용 |
|---|---|
| [수집] — 사용자 동의받음 | ① 카카오 ID (인증·중복 방지) ② 자발적 필터: 시군구·업종·매출 단계·소득·가구 형태 (기본값 OFF) ③ jupjups 행위 데이터 |
| [미수집] — 명시적 X ★ | ⚖️ IDFA (광고 식별자) ⚖️ 디바이스 고유 식별자 ⚖️ 위치 정보 (GPS·자동 수집) |
| [제3자 제공] — 모두 X | 광고 회사 X / 분석 회사 X B2B 데이터 판매 시 ★ 익명 집계만 |
단계 ③ 개인정보처리방침 §1
✓ 수집:
- 카카오 ID (인증 목적)
- 자발적 필터: 시군구·업종·매출 단계·가구 형태·소득 분위 → 기본값 비활성
- jupjups 행위: 어떤 benefit를 줍줍했는지·result·후기 텍스트
✗ 수집 안 함 (명시):
- 광고 식별자 (IDFA)
- 디바이스 고유 식별자
- 위치 정보 (GPS·자동 수집)
✗ 제3자 제공 안 함 (명시): 광고 회사, 분석 회사, 개인 식별 가능 정보 외부 판매·공유 X
단계 ④ 변호 논리
"줍줍은 PIPA의 최소 수집 원칙을 적극 준수하며, IDFA 같은 추적 식별자를 수집하지 않습니다. 어떤 형태로든 개인 식별 가능 정보를 제3자에게 판매·공유하지 않습니다."
- PrivacyTrackingEnabled: false
- PrivacyAccessedAPITypes: 명시
- 심사 1차 통과 가속화 효과 (R3 리스크 완화)
외부 노출 4자리 미리 점검표
| 자리 | 회색지대 ① (줍줍 표현) | 회색지대 ② (개인정보) |
|---|---|---|
| About 페이지 | "약속하지 않는 4가지" 명시 | "광고 추적 X·위치 X·제3자 X" 명시 |
| 약관 | §3 서비스 범위 한정 | §4 개인정보 처리 한정 |
| 개인정보처리방침 | 표현 정제 일관 | 전체 한 페이지 (수집/미수집/제3자) |
| Footer | "정보 제공 목적, 결과 보장 X" | 개인정보처리방침 링크 |
이 4자리에 같은 메시지가 일관 노출되면 변호 논리 사실 성립. 권3 배포 직전 30분 체크리스트에서 본격 점검합니다.
git add SPEC.md git commit -m "SPEC v3: ⚖️ E1 회색지대 결정 본격 (줍줍 표현 + 개인정보 최소)" # BUILD.md Day 3 entry: # 결정: 두 회색지대 모두 4단계 프레임 적용 # 부작용 ①: 외부 노출 4자리 일관 의무 발생 (권3에서 본격) # 누적 시간: 3.5h (Day 1~2) + 3h (Day 3) = 6.5h
📌 권1 제2·3장 정리
- 1️⃣ E3 첫 라운드: Gemini 1차 검토 6건 발견 → 정직한 분류 (4 즉시 + 2 미룸) → SPEC v2
- 2️⃣ Gemini 6건 패턴: 5건이 인프라·edge case — 부록 H-3 "Gemini 강점" 패턴 입증
- 3️⃣ ⚖️ E1 회색지대 ①: "줍줍" 표현 정직한 위치 — 포함 4 / 배제 4 / 변호 논리 명시
- 4️⃣ ⚖️ E1 회색지대 ②: 개인정보 최소 수집 — IDFA·위치·디바이스 식별자 미수집 명시
- 5️⃣ SPEC v3: § 회색지대 결정 섹션 신설 / 외부 노출 4자리 점검표 확인
- 6️⃣ 다음 장: 권1 제4장 — 두 검토자 라운드 → SPEC v4 (12건 4+6+2 패턴)
줍줍의 "무엇을 약속하지 않는가"가 SPEC § 회색지대 결정 섹션에 박혔고, 외부 노출 4자리에 같은 메시지로 일관 노출될 준비가 됐습니다.
다음 장에서 두 번째 검토자 라운드 — Claude 시뮬 + Gemini 동시 가동 → 12건 4+6+2 패턴 데이터 입증.