재심(appeal)을 기능이 아니라 장치로 설계한 이유
삼문판결 만들기 3편: 재심(appeal)을 기능이 아니라 장치로 설계한 이유
삼문판결의 핵심은 단호함이다. 그런데 단호함만 있으면 한 가지 문제가 생긴다.
한 번의 판결이 너무 절대적으로 보인다는 점.
그래서 3편의 주제는 재심이다. 결론부터 말하면, 재심은 판결을 약하게 만드는 장치가 아니라 오히려 판결의 신뢰를 높이는 장치다.
왜 재심이 필요한가
사용자는 보통 첫 입력에서 중요한 맥락을 빼먹는다.
- 유통 채널을 안 적거나
- 가격 조건이 빠지거나
- 기존 대체 습관(대체재) 설명이 없는 경우
이 상태에서 나온 판결은 틀렸다기보다 불완전하다. 재심은 이 누락된 맥락을 붙여서 판결을 다시 내리는 절차다.
즉, “감정적 항소”가 아니라 정보 보강 기반 재판에 가깝다.
재심 입력은 자유서술이 아니라 구조화
재심은 단순히 “다시 해줘”로 받지 않았다. 추가 정보 필드를 명시했다.
- appealText (반박/추가 설명)
- distributionChannel
- pricing
- replacement
- constraint
이렇게 받은 이유는 명확하다. 모델이 잘 답하게 하려면 프롬프트 이전에 입력 구조가 먼저 좋아야 한다.
재심도 같은 규칙으로 판결한다
재심이라고 해서 규칙을 느슨하게 풀지 않았다. 기본 판결과 동일한 계약을 강제한다.
- badge 고정 스키마
- axis 단일 근거
- 문장 길이 제한
- 행동 1개 원칙
- 금지 표현/모욕/추상 처방 차단
결론: 재심은 ‘봐주기’가 아니라 같은 법정에서 증거만 추가된 재판이다.
악용 방지: 재심 체인과 제한
재심을 무제한으로 열어두면 서비스는 금방 장난감이 된다. 그래서 운영 관점에서 재심 체인을 분리했다.
- 원판결(rootSlug)
- 재심 연결(appealFrom)
- 재심 순번(appealIndex)
이 구조 덕분에 어떤 판결이 몇 번째 재심인지 추적 가능하고, 무료 재심 한도도 정책으로 제어할 수 있다.
핵심은 “많이 생성”이 아니라 의미 있는 재판 기록을 남기는 것이다.
재심에서 얻는 제품적 이점
재심은 사용자 만족 장치인 동시에, 제품팀 입장에서는 학습 장치다.
- 어떤 축(axis)에서 반박이 많은지
- 어떤 정보가 누락될 때 오판이 늘어나는지
- 어떤 처방이 실행되지 않는지
즉, 재심 로그는 단순 CS가 아니라 판결 엔진 개선 데이터셋이다.
이번 편 결론
판결 서비스에서 재심은 선택 기능이 아니다. 신뢰를 유지하기 위한 기본 장치다.
삼문판결의 재심은 “처음이 틀렸을 수 있다”를 인정하는 방식이 아니라, “처음은 불완전할 수 있다”를 설계로 받아들인 방식이다.
다음 편에서는 재심과 판결 로그를 어떻게 숫자로 묶어 실제 운영 지표로 보는지 정리한다.