Dec 8

[법률/문서처리] UpRiskChain: 계약 리스크 분석 자동화 파이프라인

📌 프로젝트 소개

AutoRiskChain은 계약서, 등기부등본, 세금서류 등 다양한 문서를 AI가 자동으로 수집/분석/연결하여, 문서 간 불일치와 의미 기반 리스크를 실시간으로 탐지하는 계약 리스크 분석 자동화 파이프라인입니다.
Empty space, drag to resize

🧐 문제 정의

현재 계약 검증은 여전히 수동 중심으로 이루어지고 있습니다. 계약서, 등기부, 세금서류 등 여러 문서를 사람이 직접 읽고 비교해야 하며, 문서 간의 불일치나 시세/권리현황 등 현실 데이터와의 괴리를 자동으로 감지하기 어렵습니다. 또한 리스크는 금액/기간 같은 단순 수치가 아닌 문장 의미 속에 숨어 있어 사람이 꼼꼼히 검토해도 놓치는 부분이 발생합니다. 이러한 비효율적이고 오류 가능성이 높은 수동 검증 과정을 자동화하고자 본 프로젝트를 기획했습니다.
Empty space, drag to resize

💡 문제 해결

AutoRiskChain은 n8n 기반의 5단계 AI 파이프라인(Ingest→Parse→Link→Analyze→Report)을 설계하여 계약 검증 과정을 완전 자동화했습니다. Upstage OCR과 LLM을 활용해 문서를 자동 분류하고 주요 필드를 추출하며, 문서 간 인물·주소·금액 등의 연관성을 분석해 불일치를 감지합니다. 이어 Embedding 기반 의미 분석으로 위험 문장을 탐지하고, 국토부/HUG 등 외부 공공데이터를 자동 연동해 현실 데이터와 비교합니다. 최종적으로 AI가 리스크 리포트를 자동 생성 및 전송함으로써, 사람이 직접 대조하지 않아도 즉시 위험을 확인할 수 있도록 구현했습니다.
Empty space, drag to resize

⚙️ 핵심 기능

1. 다중 파일 업로드 및 문서 수집 자동화
(1-1) 다중 파일 업로드(Form) — 사용자가 여러 PDF·이미지를 업로드하면 워크플로우가 자동 시작되어 입력을 수신한다.
(1-2) Code (파일별 items 생성) — 업로드된 파일을 개별 item으로 분리해 문서별로 독립 처리 가능하게 만든다.
(1-3) Loop Over Items + Wait — 각 문서를 순차적으로 반복 처리하며 API 요청 간 2초 대기해 과부하를 방지한다.
(1-4) HTTP Request (Upstage OCR) — Upstage API로 문서를 OCR 처리해 이미지에서 페이지별 텍스트 데이터를 추출한다.
(1-5) incorrect 문장 탐지 / separate main file — OCR 결과의 인식 오류 문장을 정제하고 문서 유형별(1-6) IF (문서 분기) — 파일명·키워드·내용 기반으로 문서가 계약서·등기부 등 어느 유형인지 분기 처리한다.
(1-7) Edit Fields + HTTP Request (Upstage Classification) — OCR 필드를 JSON 구조로 정리하고 Upstage API로 문서 유형을 자동 분류한다.
(1-8) 텍스트 합치기 + HTTP Request (Auto Field Extraction) — 모든 페이지 텍스트를 병합 후 Upstage LLM으로 주요 정보를 자동 추출한다.
(1-9) Code + Upstage Solar Chat — LLM 응답을 정제해 Upstage API로 리스크 요약·분석을 수행하고 결과를 생성한다.

-> 결과적으로, 사용자는 문서를 업로드하는 것만으로 OCR → 분류 → 필드 추출 → 자동 분석까지 전 과정을 수동 개입 없이 한 번에 수행할 수 있게 된다.


2. 문서 간 연관 자동 분석
(2-1) HTTP Request (Upstage Chat Completions) — 업스테이지 solar-mini로 계약 텍스트에서 person/address/date/money만 JSON 형태로 추출
(2-2) Code (필드 파싱·정제) — LLM 응답의 choices[0].message.content에서 값을 JSON.parse→정규식 Fallback으로 안전 파싱해 기존 컨텍스트에 병합
(2-3) Upstage Solar Chat (위험도 분석) — 추출된 필드를 업스테이지 solar-mini에 입력해 10개 기준 위험 점수 + 종합 요약을 생성

-> 모든 노드는 Upstage API(solar-mini)를 활용해 계약서 텍스트를 자동 분석, 필드 추출, 리스크 평가까지 일련의 과정을 완전히 자동화한다.


3. 리스크 문장 탐지 자동화
(3-1) Normalize Text (Code) — OCR 결과의 불필요한 공백·기호를 제거하고 정제된 텍스트로 변환
(3-2) Sentence Splitter (Code) — 정제된 텍스트를 문장 단위로 분리하여 개별 분석이 가능하도록 함
(3-3) Upstage Embedding (HTTP Request) — 각 문장을 의미 벡터로 변환해 유사도 계산에 사용할 준비
(3-4) Cosine Matching (Code) — 문장 벡터를 위험 문장 DB 벡터와 비교해 코사인 유사도 계산
(3-5) IF (High Risk?) — 유사도 임계값(예: 0.8) 이상인 문장을 ‘위험 문장’으로 분류
(3-6) Item Lists - Aggregate — 감지된 위험 문장들을 모아 하나의 리스트로 정리
(3-7) Upstage Solar Chat (Risk Report) — 위험 문장 리스트를 LLM에 전달해 리스크 원인과 요약 분석 생성
(3-8) Edit Fields (Optional) — LLM 결과를 문장·점수·설명 등의 JSON 구조로 정리
(3-9) Output / Slack / PDF — 최종 리스크 탐지 결과를 보고서나 알림 형태로 출력


4. 외부 데이터 결합 자동화
(4-1) Code (주소 파싱 및 법정동 코드 매핑) — OCR 또는 Upstage API 추출 결과에서 계약서 주소를 분석해 ‘구·동’ 명칭과 면적, 계약 시기 등을 정규화하고 국토부 Open API 호출용 법정동 코드(lawd_cd)를 자동 생성(이전 단계 Upstage API 에서 추출한 텍스트 데이터를 입력으로 활용).

(4-2) HTTP Request (국토부 실거래가 조회 API) — 전 단계에서 산출한 법정동 코드 및 계약 연월을 파라미터로 RTMSDataSvcAptTradeDev 공공데이터 포털 API를 호출해 실제 부동산 거래가 데이터를 수집 (Upstage API 결과와 현실 데이터를 결합하기 위한 외부 데이터 연동 단계).

(4-3) Code (실거래 데이터 필터링 및 매칭) — 응답받은 실거래가 리스트를 주소·면적·날짜 기준으로 필터링해 가장 근접한 거래를 선정하고, 이를 external_data.real_price 필드에 추가해 Upstage API 출처의 문서 정보와 공공 데이터를 통합

-> 이 단계는 Upstage API 로 추출한 문서 정보를 활용해 국토부 공공 API와 자동 연동하고, 현실 실거래 데이터를 계약서 데이터와 결합해 신뢰도 및 리스크 분석 정확도를 높인다.


5. 보고서 생성 자동화
(5-1) Merge (append) — 아래 4개 입력(① incorrect 문장 탐지, ② Solar Chat–2번 기능, ③ Solar Chat–3번 기능, ④ Code_MergeRealPrice)을 하나의 페이로드로 합친다.

- 입력① incorrect 문장 탐지 — OCR 결과 중 오류/위험 문장 리스트와 정제본을 제공.
- 입력② Upstage Solar Chat(2번) — “문서 간 연관 분석”의 위험도/불일치 요약을 제공(Upstage API 결과).
- 입력③ Upstage Solar Chat(3번) — “리스크 문장 탐지”의 위험 문장·사유 요약을 제공(Upstage API 결과).
- 입력④ Code_MergeRealPrice(4번) — 국토부 실거래가 등 외부 데이터 결합 결과(시세/메타)를 제공.

(5-2) Report Schema 생성— 합쳐진 입력을 제목/5줄요약/핵심리스크/권장조치/시세요약 등 표준 리포트 스키마(JSON)로 매핑
(5-3) Upstage chat — 스키마를 프롬프트로 Upstage Chat API(solar-mini) 를 호출해 “5줄 요약 + 리스크 요약 + 권장 조치” 본문 생성
(5-4) Merge (append) — LLM이 생성한 본문 텍스트와 구조화된 점수·시세 필드를 최종 보고서 오브젝트로 결합
(5-5) Code in JavaScript3 — Google Docs에 넣을 문단/헤더/표(옵션) 형식으로 본문을 포맷하고 자리표시자를 치환
(5-6) Create a document (Google Docs) — 리포트 본문으로 새 문서 생성
(5-7) Update a document (Google Docs) — 생성된 문서에 추가 업데이트 수행
Empty space, drag to resize

🎬 데모 영상

Write your awesome label here.
Empty space, drag to resize

👥 팀원 소개

이서영(팀장)
- 보고서 자동 생성화 기능
- 문서 수집 자동화 기능
- 최종 디버깅
Empty space, drag to resize
박연수
- 리스크 문장 탐지 자동화 기능
- API 조사
- ppt 제작
김희진
- 외부 데이터 결합 자동화 기능
- API 조사
- 포스터 제작
Empty space, drag to resize
이슬
- 문서 . 간연관 자동 분석 기능
- 문서 수집 자동화 기능
- 프로젝트 발표
Empty space, drag to resize

💾 참고 자료