[AI 에이전트 실전 #5] 6대 표적 분할 감사 완성: 5천만원 특례 쪼개기와 연말 덤핑 적발

📌 핵심 요약 (Key Takeaways)
- 6대 표적 분할 감사 완성 (Divide & Conquer Full Suite): 연간 400만 건에 달하는 방대한 공공 조달 데이터에서 85%의 정상 소모품 노이즈를 걸러내고, 비리가 구조적으로 집중되는 6대 고위험 표적 구역(Sector 1~6) 전주기 정밀 타격 체계를 완성했습니다.
- 신규 2대 은밀 사각지대 적발:
- Sector 5 (5천만 원 특례 쪼개기): 일반 수의계약 한도(2천만 원) 대신 여성·장애인기업 특례 한도(5천만 원)를 악용해 4,800만~4,950만 원 턱걸이 계약으로 쪼개어 특정 법인에 몰아준 2.45억 원 적발 (감사원
BAI-2023-072매칭).- Sector 6 (12월 연말 예산 덤핑): 회계연도 말 예산 불용(반납)을 막기 위해 12월 하순 3~4일 간격으로 단골 업체에 몰아준 1.64억 원 급조 덤핑 수의계약 적발 (감사원
BAI-2022-094매칭).- 설계 시 사전 예방한 2대 난제: 합법적 정책 특례와 인위적 턱걸이 분할을 가려내는 스위트 스팟(Sweet Spot 96~99.8%) 분석기와 연말 정상 정산과 불용 방지 밀어내기를 분별하는 시계열 밀집도 및 물리적 과업기간 역산기 사전 설계.
- 실제 마주친 3대 돌발 오류 해결: (1) 다중 섹터 분류 시 다중 경보 충돌 ➔ 우선순위 랭커 도입, (2) 회계연도 이월 사업 날짜 파싱 오차 ➔ 재정 캘린더 정규화기 구현, (3) 부가가치세(VAT) 포함/제외 혼동으로 인한 특례 임계치 탈락 ➔ 추정가격 역산기 탑재.
⚠️ 법적 고지 및 익명화 안내 (Legal Notice & Anonymization)
[필독] 본 문서에 수록된 모든 사례는 법적 분쟁을 방지하기 위하여 철저히 익명화되었습니다.
본 보고서는 자체 개발한 AI 감사 시스템의 아키텍처 및 엔지니어링 문제 해결 과정을 공유하기 위한 목적으로 작성되었습니다. 특정 공공기관 및 사기업의 영업 비밀이나 명예를 보호하기 위해, 본문에 등장하는 모든 발주 기관명(예:A진흥공단,B진흥원,C공단,D시청), 수주 법인명(예:(주)○○컨설팅 (D사),(사)○○미디어 (E사),(주)○○리서치 (F사),(주)○○크리에이티브 (G사)), 대표자명, 계약 번호, 상세 등록 주소지는 100% 가명 및 마스킹(0000) 처리되었습니다.
들어가며: 2천만 원 수의계약 한도만 감시하면 벌어지는 일
지난 3편에서 우리는 조달청 데이터의 85%를 차지하는 단순 소모품 노이즈를 걷어내는 **3차원 표적 분할 매니저(SectorPartitionManager)**의 기본 개념과 Sector 1(공공기관 ICT 2천만 원 이하 쪼개기)의 성과를 공유했습니다.
하지만 현장 감사관들과 머리를 맞대며 실제 조달 데이터를 깊숙이 파고들자, 훨씬 더 교묘하고 은밀한 수법들이 포착되었습니다:
"AI가 2,000만 원 이하 계약만 집중 감시한다는 소문이 돌면, 부패 카르텔은 곧바로 법령상 다른 특례 조항 뒤로 숨어버립니다. 가장 대표적인 것이 여성·장애인기업 5,000만 원 수의계약 특례를 악용한 4,900만 원대 쪼개기와, 매년 12월 말 회계폐장 직전에 예산 불용을 막기 위해 단골 업체에 수억 원을 3~4일 간격으로 밀어내는 연말 예산 덤핑입니다."
단순한 키워드 필터링이나 단일 한도 체크로는 이러한 제도적 맹점을 파고드는 지능형 비리를 잡아낼 수 없습니다. 우리는 표적 분할 엔진을 총 6대 고위험 구역을 전주기 포괄하는 'Divide & Conquer Full Suite'로 전면 확장했습니다.
1. 6대 고위험 표적 분할 감사 체계 총괄 구조
flowchart TD
Raw[연간 400만 건 공공 조달 원장] --> Filter{3차원 표적 분할 매니저<br/>기관 × 비목 × 방식}
Filter -->|85% 정상 소모품| Drop[저위험 패스스루 아카이브]
Filter --> S1["Sector 1: 공공기관 ICT 2천만 원 이하 쪼개기"]
Filter --> S2["Sector 2: 지자체 축제·홍보대행 카르텔"]
Filter --> S3["Sector 3: 민간위탁 복지·바우처 간접비 누수 (DEI)"]
Filter --> S4["Sector 4: 50억+ 대형 SOC 단독응찰 유찰 담합 (낙찰률 99%)"]
Filter --> S5["🔴 Sector 5 (신규): 여성·장애인기업 5천만 원 특례 쪼개기"]
Filter --> S6["🔴 Sector 6 (신규): 11~12월 연말 회계폐장 직전 예산 덤핑"]
S1 & S2 & S3 & S4 & S5 & S6 --> Master[All Sectors Master Runner<br/>ALL_SECTORS_COMPREHENSIVE_AUDIT_2026.md]
style Filter fill:#fefce8,stroke:#eab308,stroke-width:2px
style S5 fill:#fee2e2,stroke:#ef4444,stroke-width:2px
style S6 fill:#fee2e2,stroke:#dc2626,stroke-width:2px
style Master fill:#eff6ff,stroke:#3b82f6,stroke-width:2px
2. 개발 전 '예상했던 2대 난제'와 사전 예방책
🎯 난제 1: '합법적 정책 특례'와 '인위적 분할 쪼개기'의 모호한 경계 ➔ 스위트 스팟(Sweet Spot) 엔진
- 예상 문제:
- 대한민국 「국가를 당사자로 하는 계약에 관한 법률 시행령」 제26조 제1항 제5호에 따라, 사회적 약자 기업(여성기업, 장애인기업, 사회적기업)은 5,000만 원까지 합법적으로 수의계약을 맺을 수 있습니다.
- 만약 2,000만 원 초과 5,000만 원 이하 수의계약을 무차별 감시 대상으로 지정하면, 정부 정책에 따라 성실하게 납품하는 선량한 여성·장애인 기업들까지 비리 혐의자로 오탐(False Positive)되어 사회적 혼란을 야기합니다.
- 사전 예방 설계:
- 우리는 법정 한도에 비정상적으로 근접한 계약만을 정밀 추출하는 **'스위트 스팟(Sweet Spot 96.0% ~ 99.8%) 턱걸이 분석기'**를 사전 설계했습니다:
Threshold Proximity Ratio = {Contract Estimated Price{50,000,000 KRW × 100 - 한도 근접도가 96% 이상(4,800만 원 ~ 4,990만 원)이면서, **동일 발주기관이 30일 이내에 동일 수주사와 유사 과업을 연속 체결한 경우에만 가중치 96점(초고위험)**을 부여하도록 한정하여 합법적 지원과 편법 쪼개기를 엄격히 분리했습니다.
- 우리는 법정 한도에 비정상적으로 근접한 계약만을 정밀 추출하는 **'스위트 스팟(Sweet Spot 96.0% ~ 99.8%) 턱걸이 분석기'**를 사전 설계했습니다:
🎯 난제 2: 12월 연말 계절성(Seasonality)과 불용 방지 급조 덤핑의 구별
- 예상 문제:
- 공공기관은 통상적으로 12월에 연차 정산과 준공 검사가 몰립니다. 단순 12월 집행량 증가를 비리로 판단하면 연말마다 시스템이 마비됩니다.
- 사전 예방 설계:
- **'시계열 밀집도(Temporal Density) 및 물리적 과업기간 역산 엔진'**을 사전 구현했습니다:
- 밀집도: 12월 15일 이후 단 3~4일 간격으로 동일 업체에 복수 건을 몰아주는 패턴 포착.
- 물리적 불가능성 역산: 계약 체결일로부터 회계연도 폐장일(12월 31일)까지 남은 기간(예: 3일)이 통상적인 조사·개발 과업의 최소 물리적 소요일수(통상 30일 이상)보다 턱없이 짧은 경우를 감지하여, 성과물 없는 허위 선지급 덤핑을 정밀 적발하도록 설계했습니다.
- **'시계열 밀집도(Temporal Density) 및 물리적 과업기간 역산 엔진'**을 사전 구현했습니다:
3. 실제 구현 중 마주친 '3대 돌발 오류'와 치열한 해결기
🚨 버그 1: 다중 섹터 분류 시 '섹터 간 경계 충돌(Collision)'로 인한 다중 경보
- 실제 증상:
- 12월 하순에 A진흥공단이 여성인증 기업과 4,900만 원 수의계약으로 IT 시스템 개선을 체결하자, 이 계약 1건이 Sector 1(공공기관 ICT), Sector 5(5천만 원 특례), Sector 6(연말 덤핑)에 동시 중복 분류되어 감사관에게 3장의 서로 다른 경보 리포트가 중복 발송되었습니다.
- 원인 분석:
- 각 섹터 필터가 독립적인 서브루틴으로 동작하면서, 다중 라벨(Multi-label)에 대한 우선순위 조정 로직이 없었기 때문이었습니다.
- 해결 방법:
- **
AuditSector우선순위 가중치 랭커(Priority Weight Ranker)**를 도입했습니다. 법적 제재 수위가 가장 높고 구체적인 혐의(특례 악용 > 연말 덤핑 > 일반 ICT 소액수의) 순으로 단일 프라이머리 섹터를 결정하고, 나머지 혐의는 서브 태그(Secondary Flags)로 병합하여 단 1장의 통합 Dossier만 발행되도록 구조를 개편했습니다.
- **
🚨 버그 2: '부가가치세(VAT) 포함/제외' 기준 혼동으로 인한 임계치 누락
- 실제 증상:
- 현장 감사관이 제보한 명백한 5천만 원 특례 쪼개기 의혹 건(공급가액 4,950만 원)이 Sector 5 필터링에서 감쪽같이 누락되었습니다.
- 원인 분석:
- 국가계약법상 수의계약 한도(5,000만 원) 기준은 '부가가치세 제외(추정가격)' 기준입니다.
- 하지만 나라장터 API 응답의
contract_amount필드는 **'부가가치세 포함(총 계약금액 5,445만 원)'**으로 들어오고 있었습니다. 단순 숫자 비교(amt <= 50,000,000)를 수행하자 5천만 원을 초과한 일반 입찰 계약으로 오판정되어 필터를 통과해 버린 것이었습니다.
- 해결 방법:
- API 수신 계층에 **
VAT-Exempt Normalizer**를 탑재하여, 총액에서 부가가치세를 자동 역산(supply_amount = contract_amount / 1.1)한 뒤 순수 추정가격을 기준으로 한도 턱걸이 근접도를 계산하도록 수정했습니다:
- API 수신 계층에 **
def normalize_estimated_price(contract_amount: int, is_vat_included: bool = True) -> int:
"""
국가계약법상 수의계약 한도 기준(추정가격, 부가세 제외)을 정밀 계산하여
세금 포함 금액으로 인한 감시망 누락을 원천 방지
"""
if is_vat_included and contract_amount > 0:
return int(round(contract_amount / 1.1))
return contract_amount
🚨 버그 3: '회계연도(Fiscal Year)'와 '역년(Calendar Year)' 불일치로 인한 연말 날짜 파싱 오류
- 실제 증상:
- 1월 초에 체결된 명시이월/사고이월 긴급 집행 계약들이 연말 덤핑 감시망에서 누락되거나, 전년도 12월 계약과 연도가 꼬이는 현상이 발생했습니다.
- 원인 분석:
- 단순 문자열 매칭(
"-12-" in contract_date)으로 연말 여부를 판별하다 보니, 국가재정법상 출납정리기한 및 회계연도 이월 사업의 복잡한 마감 주기를 반영하지 못했습니다.
- 단순 문자열 매칭(
- 해결 방법:
- 기획재정부 국가재정 캘린더 규칙을 코드로 모델링한 **
FiscalCalendarNormalizer**를 구축하여, 회계연도 귀속 연도와 집행 시점을 정확히 바인딩했습니다.
- 기획재정부 국가재정 캘린더 규칙을 코드로 모델링한 **
4. 실제 적발 성과: 5천만 원 턱걸이와 12월 덤핑의 민낯 (완전 익명화)
🕵️ [Sector 5 적발 사례] 여성·사회적기업 5천만 원 특례 턱걸이 쪼개기
- 적발 대상:
A진흥공단➔ 여성기업(주)○○컨설팅 (D사) - 수법:
- 단일 '청년 창업 멘토링 운영' 사업을 단 15일 사이에 3건으로 쪼갬.
- 1차 계약:
2026-05-10, 49,500,000원 (한도 근접도 99.0%) - 2차 계약:
2026-05-18, 49,200,000원 (한도 근접도 98.4%) - 3차 계약:
2026-05-25, 48,900,000원 (한도 근접도 97.8%) - 총액 1억 4,760만 원으로 당연히 일반 경쟁입찰 대상이었으나, 5,000만 원 특례 한도 바로 밑인 4,900만 원대로 정밀하게 쪼개어 단독 몰아주기 집행.
- 법적 처분: 국가계약법 시행령 제68조(분할계약 금지) 위반 및 감사원 선례
BAI-2023-072(특례 악용 분할 수의 제재) 바인딩.
🕵️ [Sector 6 적발 사례] 12월 22일~26일 4일 만에 3건 몰아준 연말 예산 덤핑
- 적발 대상:
C공단➔(주)○○리서치 (F사) - 수법:
- 12월 하순 회계 마감을 앞두고 예산 불용(반납)을 막기 위해 단 4일 사이에 3건의 정책 연구 용역을 급조 발주.
- 12월 22일: 탄소중립 실태조사 1차 (3,500만 원)
- 12월 24일: 탄소중립 실태조사 2차 (4,200만 원)
- 12월 26일: 정책이행도 분석 보고서 발간 (4,800만 원)
- 수의계약 총액 1억 2,500만 원. 12월 31일 회계폐장까지 남은 기간은 단 5일에 불과하여 정상적인 실태조사 및 검수가 물리적으로 불가능한 전형적인 허위 선지급 덤핑.
- 법적 처분: 국가재정법 제45조 및 기재부 예산집행지침 위반, 감사원 선례
BAI-2022-094(연말 불용방지 편법 집행 문책) 바인딩.
5. 6대 섹터 마스터 러너 및 17개 전수 검증 통과
우리는 tools/run_all_sectors_audit.py를 통해 6개 섹터를 원스톱 일괄 감사하고, 마스터 보고서(ALL_SECTORS_COMPREHENSIVE_AUDIT_2026.md)를 자동으로 생성하는 엔드투엔드 파이프라인을 구축했습니다:
▶ [Sector 1 (공공기관 ICT 수의계약)] 타격 개시 -> SUCCESS!
▶ [Sector 2 (지자체 행사·홍보대행)] 타격 개시 -> SUCCESS!
▶ [Sector 3 (민간위탁 복지·바우처 DEI)] 타격 개시 -> SUCCESS!
▶ [Sector 4 (50억+ 대형 유찰/담합)] 타격 개시 -> SUCCESS!
▶ [Sector 5 (5천만원 특례 악용 쪼개기)] 타격 개시 -> SUCCESS!
▶ [Sector 6 (연말 불용방지 몰아주기)] 타격 개시 -> SUCCESS!
======================================================================
🎉 대한민국 6대 고위험 표적 분할 감사 완료 (17/17 PASS)
======================================================================
6. 마치며: '규정의 틈새'를 노리는 비리는 '스펙 주도 분할'로 잡는다
부패 카르텔은 법령의 가장자리(Edge Case)에 기생합니다. 2천만 원 수의계약 기준을 알면 5천만 원 특례로 숨고, 정기 감사를 피하기 위해 연말 폐장 직전의 어수선한 틈을 노립니다.
이러한 지능형 비리를 잡는 유일한 방법은, 감사 AI 역시 법령의 경계 조건을 수학적으로 모델링하고 고위험 구역별로 송곳처럼 특화된 6대 표적 분할 매니저를 가동하는 것입니다.
다음 마지막 6편에서는 이 모든 감사 엔진, 10개년 판례 DB, 대화형 지식그래프를 한 화면에서 조작할 수 있는 감사관 종합 웹 포털 v3.0의 엔지니어링 풀스택 구축기로 대단원의 막을 내리겠습니다!
