SK Networks Family AI 캠프 팀 프로젝트

WorkShield — 표준계약서 비교 MCP

표준계약서와 비교해 사람이 확인할 조항 후보를 좁히는 5인 팀 프로젝트입니다. AI 제안으로 기능 범위가 검증하기 어려운 상세 비교까지 커졌고, 실제 검색 점수와 판정 기준이 맞지 않는 문제도 확인했습니다. 상세 비교를 제외한 뒤 실제 실행 기록과 분리된 평가 데이터로 기준선을 관리했습니다. 법률 판단을 대신하지 않으며, 문제 정의와 중단 기준을 사람이 소유한 사례입니다.

30초 요약

맥락
표준계약서 대비 사람이 검토할 조항 후보와 근거를 좁히는 MCP 서버를 개발한 5인 팀 프로젝트입니다.
문제
검색 모듈이 반환하는 RRF 점수와 후속 분류 임계값의 범위가 맞지 않아 모든 조항이 매칭 실패하는 문제가 발생했습니다.
판단
검색·재정렬·상태 분류는 같은 입력에 같은 결과를 내는 서버가 담당하고, 자연어 설명은 선택적으로 분리했습니다.
역할
5인 팀의 PM으로 시스템 구조와 MCP 서버 구현을 담당했습니다.
결과
실행 점수 범위와 분류 임계값의 계약 오류를 수정하고, 골든 데이터 135건에서 F1 0.754의 분류 회귀 기준선을 관리했습니다.
검증
실제 판정에 사용한 검색 후보와 점수를 기록하고, 골든 데이터 135건을 조정용과 분리 평가용으로 나눠 회귀 기준선을 관리했습니다.
한계
평가 지표는 법률적 정확도가 아니라 표준조항 대응 상태의 분류 기준선입니다.
증명하는 역량
AI 제안으로 커진 범위를 실제 실행 기록과 평가 가능성으로 되돌리고, 채택·중단 기준을 사람이 소유하는 역량을 보여줍니다.

검증과 근거

확인 가능한 근거

주장의 적용 범위와 측정 조건을 함께 표시합니다.

  1. 사용자 확인오류 진단과 수정

    약 0.0328 범위의 RRF 점수와 0.5 분류 임계값이 직접 비교되던 계약 오류를 실제 실행에서 확인하고 수정했다.

    테스트 대역은 실제 점수 범위를 재현하지 못했다.
  2. 사용자 확인평가 구조

    평가 시 검색을 재실행하지 않고 실제 판정에 사용한 후보와 점수를 실행 기록으로 보존했다.

  3. 회고AI 보조 개발의 범위 통제와 중단 판단

    AI 제안으로 검색 도구의 범위가 검증하기 어려운 상세 비교까지 커진 뒤, 실제 실행 기록과 평가 가능성을 기준으로 상세 비교 기능을 제외하고 목표·비목표와 실험의 채택·중단 기준을 다시 정했다.

    도구 사용 자체의 성과가 아니라 문제 정의·검증·중단 판단의 책임을 사람이 소유한 사례로 표현한다.원문 근거 보기

사용 기술

구현에 직접 연결된 기술

보조 기술 보기
  • Pydantic
  • Docker
  • Pytest

법률적 결론을 대신하지 않고, 표준계약서와 비교해 사람이 확인할 조항과 근거의 범위를 좁히는 도구입니다.

1. 목표와 비목표

WorkShield는 IT·SW 계약서를 표준계약서와 조항 단위로 비교해 다음 정보를 MCP 도구로 제공합니다.

법률 자문, 위법·합법 판단, 계약의 유·불리 확정과 안전성 보장은 범위에 포함하지 않았습니다. 주의 문구 신호가 없다는 사실도 계약이 안전하다는 의미로 해석하지 않습니다.

2. 역할과 책임 경계

직접 담당

  • 시스템 구조 설계
  • MCP 서버 구현
  • RRF 점수 계약 오류 수정
  • 실제 실행 기록 기반 평가 구조 개선

  • 계약·표준조항 데이터 준비
  • 모델과 평가 실험
  • 데모 작업

외부 구성

  • Chroma 벡터 검색
  • BM25 키워드 검색
  • RunPod 임베딩·rerank 실행 프로세스

3. MCP 서버의 책임 경계

1차 MCP는 LLM 없이 문서 파싱, 조항 분리, 검색, 재정렬, 상태 분류와 법령 원문 연결을 수행합니다. 외부 MCP 클라이언트 또는 데모 계층의 선택적 LLM은 이 결과를 자연어로 설명합니다.

WorkShield 시스템 책임 경계외부 클라이언트가 FastMCP 서버를 호출하고, 서버의 파이프라인이 문서와 검색 어댑터 및 RunPod 모델 실행 프로세스를 사용하는 구조

외부 client
선택적 LLM

FastMCP server

pipe
런타임 조립

core
검색·분류

adapter
문서·DB·법령

RunPod 실행 프로세스
embedding·rerank

contracts
model·enum·port

이 경계는 자연어 생성 결과가 검색과 상태 분류 자체를 바꾸지 않도록 분리합니다. 운영 Docker 배포 대상은 MCP 단일 컨테이너이며, 데모 소스는 현재 배포 대상에 포함되지 않습니다.

4. 전체 검색 파이프라인

WorkShield 계약서 검색 파이프라인계약서를 파싱하고 조항으로 나눈 뒤 Chroma와 BM25로 검색하고 RRF와 rerank를 거쳐 대응 상태와 누락 상태를 계산하는 흐름

계약서

kordoc 파싱

조항 분리

Chroma + BM25
hybrid 검색

RRF / rerank

NONE / EXTRA / NO_MATCH

전체 표준조항과
역방향 비교

MISSING

법령 원문과 MCP 응답

상태는 다음 책임 범위를 가집니다.

상태의미
NONE표준조항과 1차 잠정 매칭
EXTRA근접 후보는 있지만 임계값 미달
NO_MATCH검색 후보 자체가 없음
MISSING사용자 계약서 전체에서 대응되지 않은 표준조항

주의 문구 유사 신호는 이 상태와 별도의 축입니다. 알려진 문구와의 유사성을 나타낼 뿐 위법 또는 불공정을 확정하지 않습니다.

5. Chroma·BM25·RRF·rerank

Chroma의 벡터 검색과 BM25의 키워드 검색 결과를 결합하고, RRF와 rerank를 거쳐 후속 상태 분류에 전달했습니다. 임베딩과 rerank 실행은 RunPod의 별도 실행 프로세스로 분리했습니다.

이 구조에서 확인한 결과는 모델 의존성과 GPU 실행 환경이 MCP 애플리케이션과 분리됐다는 점입니다. 비용 절감, 처리 속도 또는 오토스케일링 효과는 측정하지 않았으므로 성과로 포함하지 않습니다.

6. RRF 점수 계약 오류

실제 실행에서 모든 조항이 매칭에 실패했습니다. RRF 결과의 최대 범위는 약 0.0328이지만 후속 분류 임계값은 0.5였기 때문에 직접 비교하면 어떤 후보도 기준을 넘을 수 없었습니다.

테스트 대역은 실제 RRF 점수 대신 0.95 같은 값을 반환했습니다. 자료형은 같은 float였지만 값의 생성 방식과 범위, 의미가 달랐기 때문에 모듈 간 계약 오류를 발견하지 못했습니다.

점수 기준과 테스트 대역을 실제 실행 특성에 맞게 수정했습니다. 이 사례에서 인터페이스 계약은 자료형뿐 아니라 값의 범위와 의미까지 포함해야 한다는 점을 확인했습니다.

7. 실제 실행 기록 기반 평가

초기 평가 과정은 최종 실행 후 외부 검색을 다시 수행해 후보와 점수를 수집했습니다. 외부 모델을 재호출하면 실제 판정에 사용된 후보와 평가 후보가 달라질 수 있었습니다.

평가 과정에서 검색을 다시 실행하지 않고, 실제 파이프라인이 사용한 후보와 점수를 실행 기록으로 보존해 평가 입력으로 사용하도록 변경했습니다.

골든 데이터 135건

SI 하도급, SM 하도급, SW 프리랜서 유형별로 45건씩 구성했습니다. 각 유형은 조정용 30건과 분리 평가용 15건으로 나눴으며, 같은 주제 그룹이 두 데이터 묶음에 걸치지 않도록 분리했습니다.

v5 기준선

Precision
0.742
Recall
0.767
F1
0.754
Confusion
TP 69 · FP 24 · FN 21 · TN 21
유형F1
SI 하도급0.800
SM 하도급0.781
SW 프리랜서0.653

이 지표는 정해진 골든 데이터에서 1차 조항 대응 상태를 분류한 회귀 기준선입니다. 법률적 정확도나 전체 계약의 안전성을 나타내지 않습니다.

8. 채택·보류·폐기한 실험

일부 지표가 좋아졌는지만 보지 않고, 사전에 정한 기준과 부작용을 함께 확인했습니다.

S 실험

판단: 폐기
변경
S 실험 설정으로 조정용 데이터를 다시 평가
데이터셋
유형별 조정용 데이터
지표
F1
결과
0.563에서 0.462로 하락
부작용·한계
기준선보다 성능이 낮아져 제품 설정에 반영하지 않았습니다.

C1 실험

판단: 보류
변경
C1 실험 설정으로 SW 분리 평가 데이터를 다시 평가
데이터셋
SW 분리 평가 15건
지표
F1, FN, FP
결과
F1 0.706 → 0.800, FN 4 → 2
부작용·한계
FP가 1건에서 2건으로 늘어 채택하지 않고 보류했습니다.

9. 실제 실행 예시

2026년 7월 13일 prod 구성에서 합성 계약서 하나를 실행했습니다.

항목건수
파싱된 사용자 조항17
NONE5
EXTRA12
NO_MATCH0
MISSING18
총 결과35
주의 문구 신호가 발견된 사용자 조항4

이는 하나의 합성 계약서 실행 예시이며 전체 품질 지표나 법률적 결론이 아닙니다.

10. AI와 개발하며 범위를 통제한 과정

초기 목표는 계약서 조항마다 표준조항 후보를 찾아 사람이 검토할 범위를 좁히는 것이었습니다. 개발 중 AI가 제안한 상세 비교 구조를 따라 조항의 금액·기한·부정 표현까지 판정하려 하면서, 검색 도구가 검증하기 어려운 법률 의미 비교 엔진으로 범위가 커졌습니다.

테스트가 통과하는 것만으로는 이 판단을 검증할 수 없었습니다. 실제 실행 기록을 다시 보니 검색 질의와 코퍼스의 표현 차이가 있었고, 당시 진단 과정은 실제 판정 경로를 보존하지 않은 채 검색을 다시 실행하고 있었습니다. 이 상태에서는 기능을 더 붙여도 결과가 좋아졌는지 설명하기 어려웠습니다.

그래서 다음 경계로 되돌렸습니다.

이 사례의 핵심은 AI 도구 사용 자체가 아닙니다. 문제 정의, 검증 가능성, 기능을 중단할 기준을 사람이 소유해야 한다는 점을 프로젝트 범위에 적용한 사례입니다.

11. 근거