7년 차 광진구청 주무관이
HWP 지옥·법령 미로·문서 홍수·통계 미아에서 탈출하기 위해 만든
공공 도메인 오픈소스 7선.
법령·판례·헌재·조세심판·관세해석까지 17개 도메인. Claude·Cursor·Windsurf·Zed·Claude.ai 웹에서 바로 호출. v4.0의 impact_map·time_travel·action_plan + 환각을 실시간으로 잡아내는 verify_citations.
"화관법 38조 알려줘" — 약칭을 실명으로, 조문번호를 API 코드로, 3단 위임(법률→시행령→시행규칙)을 트리로. 그리고 AI가 지어낸 가짜 조문·가짜 판례를 verify_citations가 법제처 DB로 직접 교차검증한다.
LLM이 쓴 "상법 제401조의2 제7항" — 실제로는 제2항이 끝이다. 법제처 DB로 교차검증해 존재하지 않는 조문을 ✗로 리턴한다. v3.5의 킬러 피처.
판례·헌재·조세심판·공정위·노동위·관세해석·개인정보위·권익위·학칙·공사공단·조약·영문법령 — search_decisions(domain) 하나로.
"화관법" → "화학물질관리법". v3.3.1에서 LAW_ALIAS 11 → 52종 확장. 산안법·중처법·청탁금지법·공정거래법까지 커버.
"제38조" ↔ "003800". 사람의 언어와 기계의 언어 사이, 오래된 번역 문제를 도구 한 개로 끝낸다.
"과태료 감경" "FTA 통관" "위임입법 미비" — 질문 하나에 법령·판례·해석례·조례·개정이력까지 묶어서 돌려준다.
대한민국 공공문서의 절반은 HWP다. 세상의 나머지 절반은 이 포맷을 파싱할 수 없다. kordoc이 순수 JS로 엔진을 짜고, kordoc-ai가 그 위에 Gemini 3 Flash를 얹은 데스크톱 앱을 올린다.
HWP 5.x 바이너리를 UTF-16LE, zlib 해제, 21종 제어 캐릭터까지 직접 풀어낸다. 한컴오피스 없이, 순수 JavaScript로.
colSpan·rowSpan 꼬이지 않는다. 선 기반 PDF 표 감지 + 한국 공문서 key-value 자동 인식까지.
관공서 "열람 제한" HWP는 rhwp AES-128 포팅. DRM이 걸린 HWPX는 한컴 COM API로 자동 추출(v2.4.0).
fillHwpx()가 HWPX XML을 직접 조작해 글꼴·크기·정렬 100% 보존한 채 빈칸만 교체. 체크박스·어노테이션까지.
AI가 쓴 답변을 다시 보고서 양식으로. heading·bold·table 서식 유지. 복붙 노가다 제거.
npm 라이브러리 · CLI · MCP 서버(8 tools) · Tauri 데스크톱 앱(kordoc-ai). 어디서 불러도 같은 Markdown.
React 19 + Tauri 2.10 + Node.js Sidecar. kordoc으로 로컬 파싱하고, Gemini 3 Flash로 요약·OCR·K팀장 검토. MCP 원클릭 설치, 폴더 드래그드롭, 15개 액션 · 24개 RPC 메서드. Windows MSI 하나.
학교교육과정 · 사전기획 보고서 · 법률 별표 · 구 소식지 · 공공데이터 파이프라인. 수천 개의 진짜 관공서 문서가 부러지지 않고 지나갔다. korean-law-mcp와 Anything에도 같은 엔진이 내장되어 돈다.
HWPX·PDF·Office 수천 개 문서 본문을 1초 안에. 100% 로컬. 폐쇄망 환경에서 AI 기능을 꺼도 모든 검색이 동작한다.
SQLite FTS5 + usearch HNSW를 RRF로 병합. Lindera 2.0 한국어 형태소 분석 내장. 파일명을 몰라도, 열어보지 않아도, 안에 있는 문장을 찾는다.
KoSimCSE-roberta(768차원) ONNX로 임베딩, PaddleOCR ONNX로 OCR — 전부 로컬. AI를 끄면 네트워크 트래픽 제로, 폐쇄망 PC에서 그대로 동작.
Clean Architecture로 Parsers / Indexer / Search Engine 분리. 메모리·바이너리에서 Electron을 이긴다. MSI 하나로 배포, WebView2·VC++까지 번들.
"2026년 예산 얼마야?" 자연어 질문에 Gemini가 근거 문서와 페이지 번호까지 같이 답한다. BYOK 방식, API 키는 로컬에만.
청크 RAG도 아니고 그래프 RAG도 아니다. Gemini 3 Flash가 Function Calling으로 법제처 API 46개 도구를 스스로 고르고, 조문 원문을 글자 그대로 주입해서 답한다. AI 법률 검색 · 3단 비교 · 영향 추적 · 조례 벤치마킹 · 위임 미비 · 타임머신 · 신구 diff까지.
일상 언어 질문에 법령·판례를 근거로. Gemini 3 Flash + Function Calling 46 tools + Citation Verify. 후속 질문 맥락 기억.
법이 바뀌면 어디까지 파급되는가. 상위법 → 시행령 → 시행규칙 → 자치법규 연쇄 영향 + AI 심각도 자동 분류.
"출산장려금 조례"를 전국 226개 시군구에서 한 번에. 우리 구 vs 옆 구를 AI가 표로 비교.
"대통령령으로 정한다"고 써놓고 시행령이 없는 조항을 자동 탐지. 입법 공백을 한눈에.
개정 전후 +/− diff와 AI 한 줄 요약. 날짜를 선택하면 그 시점의 법령 원문을 현행법과 나란히.
Google 로그인 후 하루 5회 무료. 본인 Gemini API 키를 브라우저 로컬에 저장하면 무제한. 서버 DB는 키를 모른다.
공시·재무·지분·XBRL + 버핏급 애널리스트 프레임. 내부자 매수/매도 클러스터, 회계 리스크 0–100 스코어, 5지표 자동 랭킹. 증권사 리포트 없이, 원본 공시를 한 줄 프롬프트로. korean-law-mcp의 금융판.
"삼성전자 최근 재무제표 요약해" — 공시 종류 외울 필요 없이 프리셋 22개. "임원 매매 시그널" — 보고서 파싱 대신 strong_buy_cluster 한 호출. "회계 정정 많아?" — 리스크 스코어 0–100으로 자동 플래그.
임원·대주주의 매수 vs 매도 보고를 한 번에 클러스터링. strong_buy_cluster / strong_sell_cluster로 리턴. "Skin in the game"을 한 호출로.
정정공시 비율 · 자본 스트레스 공시(유증·CB) · 감사보고서 이슈를 종합해 0–100 점수로. 임계 초과 항목은 WARN 플래그로 즉시 표시.
ROE · FCF 흐름 · 부채비율 · 이익 지속성 · 현금흐름 대비 순이익 — Warren Buffett "Owner Earnings" 철학을 자동 점수화. 종목 리스트에 한 호출.
calculation linkbase의 summation-item 관계로 "부모 = 자식 합산" 자동 검증 → 공시 오기재 즉시 탐지. 6MB XBRL → 8,905자 마크다운 (99.85% 절감).
DART 코드 외울 필요 없음. pblntf_ty + report_nm 정규식을 프리셋이 자동 조립. 전체시장 3개월 제약도 90일 자동분할로 우회(최대 10년).
기자 편향 싫어 원본 공시 직접 보는 중급 개미 · 증권사 리포트 안 사고 직접 기업 분석하는 투자자 · 네이버 금융·HTS 정보 부족해 답답한 사람. 원본 공시로 승부.
통계표 ID 찾고, 분류 코드 조립하고, 자치구 행 스크롤하던 일을 자연어 한 줄로. 시정연설·의회 답변·정책보고서·민원 응대까지 — 모든 답변에 통계표 ID가 자동으로 붙어 그대로 인용 가능. ChatGPT가 기억으로 답한 옛 수치를 보고서에 넣는 사고를 막는다.
91개 키워드 + 자연어 별칭 100종. 17개 시도 + 자치구·시군 230여 곳까지 직접 라우팅. "광진구 고용률" 한 줄이면 광역 평균에 묻히지 않고 자치구 행 정확히. 추계는 "추계"라고 명시하고, 자치구 미수록이면 광역값을 자치구인 척 답하지 않는다.
모든 답변에 KOSIS DT_xxx가 따라붙는다. 추정이 아니라 인용 — 그대로 보고서·연설문·국정감사 자료에 넣을 수 있다. ChatGPT가 학습 시점 기억으로 찍어준 옛 수치를 그대로 인용하는 사고를 차단.
"광진구 고용률" 한 줄이면 서울 평균이 아닌 자치구 행. KOSIS 표준 통계표(자치구 코드)를 1순위로, 미수록 분야는 자치구 통계연보 .xlsx로 보완. "부산 중구"처럼 광역 결합도 정확히 구분.
chain_region_brief는 13개 지표 종합 + 연설용 한 줄 모드. chain_compare_regions는 최대 17×8 비교 매트릭스. chain_policy_indicator는 저출산·고령화 등 7개 영역 10년 시계열.
노령화지수 등 장래추계가 포함된 통계는 "이 수치는 통계청 추계"라고 자동 표기. 미래 추계를 실측처럼 인용하는 실수를 막는다. 자치구 데이터가 없으면 광역값을 자치구인 척 답하지 않고 "광역시도 값으로 대체"를 첫 문장에 명시.
`집값` → 주택매매가격, `노인` → 고령인구, `연봉` → 월평균임금, `청년실업` → 실업률. 률/율 오타·공백·영문도 인식. "민선 8기", "임기 4년차", "작년 대비", "역대" 같은 기간 표현도 자동으로 연수 환산.
KOSIS OpenAPI 미지원 분야는 .xlsx 파일통계표로. kordoc 엔진이 직접 파싱 — 자치구 통계연보의 분야 순서 자치구별 동적 매핑까지.
광진구 아차산로 400, 자양동 870, 광진구청 — 셋 다 같은 곳이다. 표준주소실록은 이걸 같은 형식으로 돌려준다. 도로명 + 지번 + 행정동을 한 번에, 엑셀·지도·Tableau·Chrome 확장까지.
광진구 15개 행정동 1,400개 표지판 전수조사 실전에서 태어났다. 엑셀 한 장이면 끝. Kakao Local API 직결, 평균 120ms. 현장방문·감사자료·민원 접수 정비 — 관공서가 매일 만나는 주소 지옥을 한 번에.
CSV / XLSX 드래그 한 번. 한글 인코딩(EUC-KR · CP949) 자동 감지. 도로명·지번·행정동·위경도 컬럼을 붙여서 다시 돌려준다.
1,400개 주소를 Leaflet 지도에 한 번에. 번호 마커로 표지판 전수조사 · 민원 방문 · 현장 실측의 동선을 최단 경로로.
CSV 올리면 위도·경도 컬럼을 붙여서 돌려준다. Tableau · Power BI로 바로 지도 시각화. 내부망에서도 쓰라고 경량 SaaS.
Plasmo 기반. 민원 페이지·보고서 화면에서 주소 드래그 → 클릭 한 번에 표준 주소가 뜬다. 공무원·감사팀·현장직원용.
포트폴리오 7선 옆에, 혼자 쓰려고 만들었다가 공개한 작은 도구들. 로그인 없음 · 설치 없음 · 바로 딸깍.
7년 동안 HWP 파일을 밀어내며 살았다. 어느 날 전부 파싱하기로 했다.
npm 패키지 하나, MCP 서버 셋, 데스크톱 앱 둘, 웹 서비스 둘, 익스텐션 하나. 그리고 이 페이지.