📝 한줄 요약
법령마다 구조가 달라 목적·정의·절차·벌칙을 매번 여러 차례 왕복해 읽던 방식을, 법령명만 말하면 현행 근거를 모으고 검증된 학습가이드를 만드는 AI 스킬로 바꿨습니다. 좋은 프롬프트 하나면 충분할 줄 알았지만, 진짜 업무 도구가 되려면 근거 수집·반박·검사·실패조건까지 함께 설계해야 한다는 것을 배웠습니다.
바쁘시면 이것만 읽어도 돼요:
법령마다 장·절 구조와 핵심 규율 방식이 달라 매번 처음부터 다시 읽어야 했습니다.
처음에는 AI에게 질문만 잘하면 법령별 차이도 알아서 처리할 줄 알았습니다.
Planner·Architect·Critic이 서로 반박하게 하고, 마지막 판정은 실제 법령 데이터에 맡겼습니다.
조문번호가 맞더라도 내용이나 수치가 틀릴 수 있어, 근거 번들과 대조하는 검사기를 만들었습니다.
서로 다른 법률을 대상으로 한 회귀검사 11건이 모두 통과했습니다.
실제 공인중개사법으로 종단 실행해 최종 검사 PASS, WARN 0을 확인했습니다.
아직 테스트 단계이며, 앞으로 실제 업무 법령 표본과 유형 경계 레이블을 늘릴 예정입니다.
결과물 자체보다 더 중요한 교훈은 “확실한 것은 자동화하고, 불확실한 것은 숨기지 않는다”였습니다.
🎯 이런 분들께 도움돼요
법령을 자주 읽지만 낯선 법을 만날 때마다 구조 파악부터 다시 시작하는 실무자
AI에게 법률자료 를 정리시키고 싶지만 그럴듯한 오류가 걱정되는 분
좋은 프롬프트를 재현 가능하고 검증 가능한 업무 절차로 발전시키고 싶은 분
😫 문제 상황: 법령 하나를 읽을 때마다 다시 출발선으로
새로운 법령을 접하면 보통 목적조항부터 정의, 적용 대상, 의무, 감독, 제재, 구제 순서로 읽습니다. 그런데 모든 법령이 같은 구조를 갖고 있지는 않습니다. 어떤 법은 허가와 등록이 중심이고, 어떤 법은 급부와 환수가 중심입니다. 어떤 법은 장 구분이 뚜렷하지만, 어떤 법은 장이 아예 없습니다. 벌칙이 핵심인 법도 있고, 벌칙 없이 강제징수와 가산금으로 작동하는 법도 있습니다.
그래서 법령 하나를 이해하려면 목차와 조문, 벌칙을 여러 차례 왕복해야 했습니다. 한 번 정리해도 다음 법령에서는 같은 방식이 그대로 재사용되지 않았습니다. 정확한 시간을 재지는 않았지만, “새 법령을 만날 때마다 처음부터 다시 읽는다”는 반복이 분명했습니다.
기존에는 직접 목차·조문·벌칙을 읽고 핵심을 정리했습니다. 이 방식은 한 법령을 이해하는 데는 도움이 됐지만, 다음 법령을 위한 도구나 절차로 남지 않았습니다. 매번 사람의 감각으로 다시 구조를 찾아야 했습니다.
🌱 처음에는 무엇을 몰랐나
처음에는 좋은 질문을 하나 만들면 AI가 법령별 차이를 알아서 처리할 줄 알았습니다.
“목적을 요약하고, 핵심 조문을 뽑고, 절차와 벌칙을 설명해 달라”는 프롬프트를 잘 다듬으면 어떤 법령에도 통할 것이라 생각했습니다. 실제로 AI는 그럴듯한 결과를 빠르게 만들었습니다. 문제는 그럴듯함과 정확함이 같은 말이 아니라는 점이었습니다.
조문번호가 실제로 존재해도, 그 조문에 붙은 동의율이나 기간이 다른 조문의 수치일 수 있었습니다. 법령의 장 구조를 제대로 가져오지 못하면 AI는 빈 공간을 자연스러운 설명으로 메울 수 있었습니다. 표본이 적은 상태에서 분류 기준을 고치면 특정 법률에만 잘 맞는 규칙이 만들어졌습니다.
그때 알게 됐습니다. AI가 답을 잘 쓰게 만드는 문제와, AI가 틀릴 수 있는 길을 막는 문제는 다르다는 것을요.
🛠️ 사용한 도구
Claude Code: 최초 설계, 합의형 에이전트 검토, Python 하네스 구현, 회귀검사
Planner·Architect·Critic: 계획 수립, 과설계 축소, 반례와 실패조건 검토
국가법령정보센터 데이터: 현행 법령의 조문·장절 구조·시행정보 수집
Hermes Agent: 기존 하네스를 대화에서 자동 선택되는 재사용 스킬로 연결
Markdown·Mermaid: 신원카드, 구조지도, 절차도, 제재표, 확인문답 작성
🔧 작업 과정
에피소드 1. AI가 AI의 설계를 반박하게 했다
처음부터 정답을 알고 있었던 것은 아닙니다. 그래서 단일 AI에게 계획과 구현을 모두 맡기기보다, 서로 다른 역할이 같은 설계를 공격하게 했습니다.
법령명이 하나 들어오면 그 법령의 핵심을 공부할 수 있는 일반 학습가이드를 만들고 싶다. 법령마다 형식과 조문 수가 달라도 작동해야 한다.
Planner는 데이터 수집 경로와 구현 계획을 만들었습니다. Architect는 계획이 지나치게 커졌다고 지적하며 파일과 검사기의 수를 줄이자고 했습니다. Critic은 축소안이 놓친 반례를 실제 법률로 확인했습니다.
가장 인상적이었던 장면은 강제수단 수집 방식이 뒤집힌 순간이었습니다. 한 설계는 법률 유형에 따라 벌칙, 환수, 강제징수를 서로 다른 방식으로 수집하려 했습니다. 얼핏 합리적으로 보였습니다. 하지만 실제 장애인복지법을 확인하자 급부·지원형 법률 안에 형벌과 환수가 동시에 존재했습니다. 유형별로 하나를 선택하면 중요한 제재가 통째로 사라지는 구조였습니다.
결론은 단순했습니다. 유형에 따라 강제수단을 갈아끼우지 않고, 벌칙·과태료·행정처분·환수·강제징수를 합집합으로 수집해야 했습니다.
이 경험에서 배운 점은 “AI 여러 명을 쓰면 정확해진다”가 아니었습니다. 서로 같은 결론에 합의시키는 것보다, 자신 있는 주장을 서로 반박하게 하고 실제 데이터로 승부하게 해야 한다는 것이었습니다.
에피소드 2. 맞는 조문번호에 붙은 틀린 수치를 잡다
처음에는 존재하지 않는 조문번호를 막는 검사를 중요하게 생각했습니다. 하지만 더 위험한 오류는 따로 있었습니다.
조문번호가 실제로 존재해도, 본문을 읽지 않은 조문에 비율·기간·금액을 붙이면 실패하도록 검사해줘.
도시정비법 학습가이드 초안을 만들던 중, 구역 지정 조문을 설명하는 문장에 4분의 3이라는 수치가 붙었습니다. 조문번호도 실제로 존재했고, 수치 자체도 법 안에 있 었습니다. 문제는 그 수치가 다른 조문에 속한다는 점이었습니다.
사람이 빠르게 읽으면 지나칠 수 있는 문장이었습니다. 그러나 검사기는 “본문을 가져오지 않은 조문을 가리키는 문장에 수치가 함께 등장했다”는 조건으로 이를 실패 처리했습니다. 수치가 어느 조문에 속하는지 다시 명시하자 통과했습니다.
이때 기준이 바뀌었습니다. “없는 조문을 쓰지 말라”에서 멈추면 안 됐습니다. 실재하는 조문에 틀린 내용을 붙이지 말라까지 검사해야 했습니다.
에피소드 3. 모든 것을 자동판정하지 않는 용기
법령마다 구조가 달랐습니다. 장 구분이 없는 평면 법률, 삭제 조문이 절반 이상인 법률, 벌칙이 없는 부담금형 법률도 있었습니다. 하나의 프레임에 맞추려고 규칙을 계속 고치면 다른 법률에서 다시 깨졌습니다.
무작위 법률을 더 분석하고, 외부 근거가 있는 레이블 표본을 만들어 과적합 여부를 확인해줘.
무작위 법률을 추가하자 조직법과 국회 절차법처럼 애초에 이 학습 프레임의 대상이 아닌 법률도 들어왔습니다. 일부는 낮은 신뢰도 신호로 잡혔지만, 기금법처럼 특정 키워드가 많이 등장해 오히려 높은 점수를 받는 사례도 있었습니다.
여기서 임계값을 조금씩 고쳐 100%처럼 보이게 만들 수도 있었습니다. 하지만 표본 두세 개에 선을 맞추는 것은 일반화가 아니라 과적합이었습니다.
그래서 세 가지 원칙을 세웠습니다.
장이 없는 법률, 심장 조문을 역추적할 수 없는 법률을 오류가 아니라 정상 상태로 인정한다.
외부 근거 레이블이 부족한 판정은 자동화하지 않는다.
코드가 맞는지뿐 아니라 실제 법률과 최종 학습가이드를 반복해서 대조한다.
그 결과 두 얼굴 법률 자동 판정은 억지로 완성하지 않고 미판정으로 남겼습니다. 법률 유형이 애매하면 신뢰도와 근거를 노출했습니다. 부담금형에서 강제수단이 실체 조문을 직접 인용하지 않으면 “역추적 불성립”이라고 적었습니다.
불확실성을 숨기지 않는 것이 오히려 도구의 신뢰도를 높였습니다.
전환점: “아, 이렇게 하면 되는구나”
이틀 동안 진행된 개발 로그에서 세 문장이 하나의 원칙으로 합쳐졌습니다.
AI가 답을 잘 쓰게 만드는 것보다 틀릴 수 있는 길을 막는 것이 먼저다.