Skip to content

Repository files navigation

Greenwashing Counsel

이 문서 하나로 전체를 이해하고, 수정·보완·개선의 기준점으로 삼는다. 기준일 2026-09-04 관련: PLAN.md(로드맵) · EVALUATION-SOP.md(② 절차) · MAINTENANCE.md(최신화) · INSTALL.md(오프라인·zip 배포)

지속가능경영보고서·광고·홍보자료를 입력하면 환경 주장을 추출·평가하고, 변호사 승인 하에 공정위 신고서·환경부 조사요청서·수사기관 고발장 초안을 만드는 로컬 도구다. 기본은 한국법 직접평가이고, 목표시장이 특정되면 미국·EU·영국을 관할별 직접평가로 분리할 수 있다. 외국 규범을 한국법의 직접 근거로 혼용하지 않는다.

핵심 철학 — 추출도 판단도 정규식이 하지 않는다. 어휘 기반 정규식은 환경 단어가 없는 위험 문장("1~2급수 수질 유지")을 놓치고 목차·거버넌스 잡음을 올린다(실측). 주장 추출과 법적 판단은 Claude 세션이 하고, CLI(Python)는 결정론적 검증·잡일(원문 앵커·해시·병합·문서생성)만 한다. 이 분리가 전체 설계의 뼈대다.


1. 3계층 플로우

┌─ ① 통독 추출 (세션) + 앵커 검증 (CLI) ─────────────────────────┐
│  세션이 보고서 전문을 통독 → 환경 주장 추출 → 1-claims.json         │
│  CLI(assess)가 각 인용문을 PDF와 문자 대조(할루시네이션 게이트)      │
│  산출: 1-claims.json, 1-worklist.md(앵커 상태), 1-assessment.json   │
│  (1-claims.json 없으면 정규식 폴백 — 권장하지 않음)                 │
└──────────────────────────────┬─────────────────────────────────┘
                               │
┌─ ② 정밀 법적 평가 (Claude 세션 + korean-law MCP + 웹) ──────────┐
│  ②-0 관문 쟁점(gateway): 광고 해당성 정면 검토 + 대안 경로 비교      │
│  ②-1 사건 서사(narratives): 회사 서사 vs 확인된 사실, 괴리 축 1~3개  │
│  ②-2 주장별: 조문 포섭·심결례(주장별 검색)·오인가능성·★웹 검증        │
│  산출: 2-evaluation.json  ← ①과 ③을 잇는 유일한 접점               │
└──────────────────────────────┬─────────────────────────────────┘
                               │
┌─ ③ 문서 생성·게이트 (CLI) ─────────────────────────────────────┐
│  병합 → 보고서(결론→사건 서사→관문 쟁점→주장별) + 3-*.xlsx/.md      │
│  변호사 승인(approve) → 4-filing-*-draft.md → verify(무결성)        │
└─────────────────────────────────────────────────────────────────┘

③은 무인 CLI, ①②는 세션 작업이다. ①②는 /greenwashing-review 스킬 또는 EVALUATION-SOP.md 절차로 수행한다. 2-evaluation.json이 없으면 보고서는 [미평가]로 정직하게 표시한다(숨기지 않음).

python3 -m greenwashing assess matters/<사건> --mode public --with-public-check   #
#   → (세션) 1-claims.json 작성 → 앵커 검증 → korean-law MCP·웹으로 평가 → output/2-evaluation.json  # ②
python3 -m greenwashing assess matters/<사건> --mode public                       # ③ 병합
python3 -m greenwashing verify   <matter_id>
python3 -m greenwashing approve  <matter_id> --reviewer "홍길동" --scope all        # 변호사 승인
python3 -m greenwashing draft    <matter_id> --route all                           # 고발장 초안

2. 설치와 실행 환경

이 프로젝트는 단일 Markdown 스킬이 아니라 로컬 Python 패키지·법령 DB·사건 폴더·MCP 설정이 결합된 법률 검토 파이프라인이다. 공개 문서만 읽는 일반 대화와, 기밀 사건을 다루는 로컬 실행을 구분한다.

환경 가능한 범위 핵심 한계
Claude Code (플러그인 또는 스킬) ①~③ 전체 파이프라인 ② 정밀 법률평가는 별도 korean-law MCP와 변호사 검토가 필요하다.
Claude Desktop·Codex·Cursor 등 로컬 MCP 클라이언트 로컬 stdio MCP로 결정론적 도구 호출 korean-law MCP와 웹 검증은 해당 클라이언트에 별도로 연결해야 한다.
Claude.ai 공개 자료의 제한적 사전 검토·문서 초안 이 저장소의 로컬 CLI·법령 DB·기밀 사건 폴더를 직접 실행·열람할 수 없다.
ChatGPT 공개 문안의 쟁점 목록화·질문 설계 보조 이 프로젝트의 스킬·로컬 stdio MCP가 아니며, 법률평가·신고서 생성 파이프라인을 대체하지 않는다.

기밀 사건은 로컬 환경에서만 처리한다. Claude.ai·ChatGPT에 실제 사건 PDF, 당사자 식별정보, 비공개 실증자료, matters 폴더를 업로드하지 않는다. 웹 채팅에는 비식별화한 공개 문안 또는 로컬 실행 뒤 필요한 발췌만 제공한다.

로컬 설치 (전체 기능)

전제: Python 3.11+와 로컬 MCP 클라이언트 1개. ② 정밀평가에는 korean-law MCP, 시맨틱 검색에는 sentence-transformers가 추가로 필요하다.

git clone https://github.com/dillettante/greenwashing-review && cd greenwashing-review
pip install python-docx openpyxl pypdf python-pptx numpy               # 또는 pip install -e .
ln -s "$(pwd)/skills/greenwashing-review" ~/.claude/skills/greenwashing-review   # 스킬 설치
python3 -m greenwashing corpus sync --jurisdiction KR                  # 국내 법령 DB(필수·네트워크). 없으면 assess 중단
python3 -m greenwashing assess examples/sample-matter --mode public    # 가상 예제로 동작 확인

(선택) 비교법 RAG — 의결서·사례 아카이브 재생성 + 시맨틱 인덱스(로컬 임베딩):

pip install sentence-transformers                              # 로컬 임베딩(기본 백엔드, LM Studio 불요)
python3 -m greenwashing corpus fetch-decisions                 # 공정위 그린워싱 의결서
python3 -m greenwashing corpus fetch-cases --jurisdiction UK   # ASA (US/EU도 동일)
python3 -m greenwashing corpus index-decisions                 # 로컬 벡터 인덱스(첫 실행 시 모델 자동 다운로드)
python3 -m greenwashing corpus repair-paths                    # 저장소 이동 뒤 절대경로 복구(재임베딩 불요)

임베딩 백엔드는 기본 sentence-transformers(모델 intfloat/multilingual-e5-base, 외부 API·토큰 0). LM Studio를 쓰려면 GW_EMBED_BACKEND=lmstudio + GW_EMBED_URL/GW_EMBED_MODEL. 인덱스는 백엔드별로 재구축한다.

Claude.ai·ChatGPT 등 대화형 제품

이 저장소의 skills/greenwashing-review 폴더만 ZIP으로 올려도 ①~③ 파이프라인이 설치되는 것은 아니다. 해당 스킬은 프로젝트 루트의 Python CLI, 로컬 corpus, korean-law MCP를 전제로 한다. 따라서 대화형 제품에는 다음의 제한된 보조 작업만 맡긴다.

  1. 공개된 지속가능경영보고서·광고의 환경 주장 후보를 페이지·원문 인용과 함께 목록화한다.
  2. 확인이 필요한 사실과 추가로 확보할 실증자료를 구분한다.
  3. 로컬 파이프라인이 생성한 1-worklist.md 또는 3-legal-review-report.md의 공개 가능한 발췌를 읽고, 누락 쟁점을 질문 목록으로 정리한다.

대화형 제품에는 위법성·고의·제재를 단정하거나 신고서·고발장을 완성해 달라고 요청하지 않는다. ChatGPT의 custom MCP app은 로컬 stdio 서버에 직접 연결하지 않으며, 이 프로젝트의 원격 SSE 서버도 공개 검색 전용·무인증 LAN용이므로 웹 채팅 연결을 위해 공인 인터넷에 공개해서는 안 된다. 조직 차원의 원격 연결은 인증·TLS·접근통제와 별도 보안 검토 후에만 설계한다. ChatGPT MCP 연결 조건을 확인한다.

무엇이 바로 되고 무엇이 셋업 필요한가:

기능 바로 됨 필요 셋업
카탈로그 열람(무슨 의결서·재결 있는지) clone만
① 통독 추출·앵커, ③ 문서생성(.md/.docx/.html) corpus sync
② 조문 포섭(정밀평가) korean-law MCP 연결(필수)
search-decisions(KR/UK/US/EU 비교법) sentence-transformers + fetch/index
의결서·판례 시맨틱 검색(정확도 최상) 선택 — 별도 MCP(아래)
  • corpus/raw/·.gw/(벡터)·matters/(기밀)는 gitignore → 로컬 재생성/보존. repo엔 코드·문서·카탈로그만.
  • korean-law MCP는 repo 밖 — 각자 Claude Code에 연결. 오프라인·zip 배포는 INSTALL.md.
  • 선택 도구: 사용자 개인 환경에서 ftc-decisions(공정위 의결서 전량)·court-precedents (법원 판례공보) MCP가 호출 가능하면 우선 사용한다. 서버 주소·인증은 저장소와 산출물에 기록하지 않는다. 배포 환경에서는 corpus search-decisions로 자동 대체되며, 사용 경로는 precedent_research.source에 남긴다.

3. 사건 폴더

matters/<사건>/
  context.yaml           사건 메타
  input/                 검토대상(지속가능보고서·광고·홍보자료)
  evidence/              기업 실증자료·공개 반증자료(선택)
  public-evidence/       홈페이지·언론 스냅숏(--with-public-check가 생성)
  output/                산출물(단계 번호 프리픽스, §4)

context.yaml(1단계 key/value):

matter_id: example-fy2025
company: 예시 주식회사
product: 동·은 제품 등
published_date: 2025-06-01
medium: 지속가능경영보고서
audience: 투자자·거래처·일반
complainant: 홍길동
respondent_details: "[확인 필요] 주소·대표자"
company_homepage: https://www.example.com/
public_urls: []
legal_scope: KR_only                  # 기본. 복수관할 직접평가는 multi_jurisdiction
jurisdictions: [KR]                   # 예: [KR, US, EU]
target_markets: [KR]
distribution_channels: [website, pdf]
reporting_frameworks: [GRI]
claim_date: 2025-06-01                # 미지정 시 published_date

4. 산출물 — 단계 번호로 최종본과 전단계 구분

파일명 프리픽스가 파이프라인 단계를 나타낸다. Finder에서 정렬하면 진행 순서대로 보인다.

프리픽스 의미 파일
1- 전단계(추출·앵커) 1-claims.json(세션 추출), 1-assessment.json(경량본), 1-worklist.md, 1-corroboration.md/.json
2- 정밀평가(세션 작성) 2-evaluation.json
3- ★ 최종 결과물 납품 3종: 3-legal-review-report.md(기본)·.docx(제출·편집)·.html(고객용). 작업본 3-claims-review.xlsx·3-evidence-list.xlsx, 방어 모드 3-redline.md
4- ★★ 제출문서(승인 후) 4-filing-kftc-draft.md, 4-filing-environment-draft.md, 4-filing-criminal-draft.md
9- 검증 로그 9-verification-log.json
(없음) 제어·메타 attorney-approval.json, test-summary.md
  • 3-이 붙으면 최종 심사 산출물, 4-는 승인 후 제출문서. 1-·2-는 그 전단계다.
  • 서술형은 .md(후속 가공), 117행 검토표는 .xlsx(정렬·색상 작업본)를 원칙으로 한다.
  • 보고서 내부 텍스트는 한국어(house style), 파일명만 영문·번호.

5. 핵심 접점 — 2-evaluation.json

①과 ③을 잇는 유일한 인터페이스. 세션(②)이 이 파일을 만들면 assess 재실행 시 cli._attach_evaluation이 주장별로 병합해 보고서·고발장에 렌더한다. 스키마(상세 EVALUATION-SOP.md §2):

{ "matter_id": "...", "evaluated_by": "...(세션 초안 명시)", "evaluated_at": "YYYY-MM-DD",
  "claims": { "CLM-xxxx": {
    "applicability_final": "있음|불확실|없음",
    "risk_final": "매우 높음|높음|중간|낮음",
    "provisions": [{"authority_id":"KR-FAIR-LABELING-ACT","cite":"제3조 제1항 제2호","label":"기만"}],
    "precedents": [{"cite":"...","status":"확정","holding":"...","url":"..."}],
    "assessment": "포섭·판단",  "misleading": "오인가능성",
    "verification": {"verdict":"부합/과장/불일치/반증/미확인","summary":"...",
      "sources":[{"title":"...","publisher":"...","url":"...","finding":"...","stance":"확인/반증/중립"}]},
    "confirm_needed": ["..."]
  } } }

claim_id1-claims.json과 일치해야 병합된다. 필드는 모두 선택적(채운 것만 렌더). risk_final은 웹 검증 결과를 반영해 확정한다.


6. 명령어 레퍼런스

corpus sync --jurisdiction KR      국내 공식 원문 수집·조문 DB 갱신(네트워크)
corpus audit [--stale-days N]      coverage·효력·최신성·무결성 감사(공백 시 exit 2)
corpus import-json <path>          사람이 검증한 규범·심결례·판례 편입
corpus monitor --cadence X         weekly/monthly/pre_filing 변경 감시
corpus candidates [--status S]     판례·처분 검증 대기열 조회
corpus candidate-review <id> ...   후보 상태 기록
corpus fetch-decisions [--keyword 본문어] [--title 사건명어] [--violation-type 0609*] [--since YYYY-MM-DD]
                                   공정위 의결서 자동 수집(case.ftc.go.kr, 토큰 불요·증분). 인자 없으면 그린워싱 기본세트
                                   (부당한 표시광고 위반 0609* + 본문 환경·탄소·그린 등). raw·index는 corpus/raw/KR/cases/(gitignore)
corpus index-decisions [--rebuild]  수집된 의결서를 로컬 시맨틱 인덱스로(sentence-transformers 임베딩, 증분). .gw/decision_index/(gitignore)
corpus repair-paths                 이동된 저장소의 매니페스트·인덱스 절대경로를 상대경로로 복구
corpus fetch-cases --jurisdiction UK|US|EU [--keyword green]  해외 그린워싱 비교법 수집. UK=ASA 재결·US=FTC 사건·EU=EUR-Lex 지침 전문
corpus search-decisions "<주장>" [-k 5] [--action 고발] [--since YYYY-MM-DD] [--jurisdiction KR|UK]
                                   주장으로 관련 의결서·재결 시맨틱 검색(300+ 통독 없이 상위 K건). 스킬 ②가 주장별로 호출
assess <matter> --mode public|confidential [--with-public-check]   ①추출·③병합
corroborate <matter>               홈페이지·언론 교차확인
benchmark <matter1> <matter2> [...] [--stance neutral|offense|defense] [--name 폴더명] [--out 경로]
                                   정밀평가 끝난 사건 2건 이상을 횡단 비교(동종업계 SR 벤치마크).
                                   집계 → 세션이 2-benchmark-analysis.json 작성 → 같은 명령 재실행으로 병합.
                                   산출은 benchmarks/<name>/(gitignore). 같은 회사 다년도면 연도별 추이 비교
approve <matter_id> --reviewer ... --scope all|kftc|environment|criminal
draft   <matter_id> --route all|kftc|environment|criminal          승인 후 초안
verify  <matter_id>                무결성 검증(exit 2 = 검토 필요)

assess는 네트워크를 쓰지 않고 로컬 DB만 조회한다(단 --with-public-check는 공개자료 수집). corpus sync만 공식 원문을 내려받는다. corpus audit exit 2는 오류가 아니라 조사 공백을 알리는 품질 게이트다.


7. 법령 DB (corpus)

  • 단일 원본은 국가법령정보센터 공식 원문. corpus sync가 원문을 조문 단위로 파싱하고 시행일·원문/본문/조문 SHA-256과 함께 저장한다.
  • 한국 규범 6개: 표시광고법·시행령, 환경기술산업법·시행령, 2026. 7. 14. 시행 「환경성 표시·광고 관리제도에 관한 고시」, 「환경 관련 표시·광고에 관한 심사지침」. 현행 고시는 제17조의3~제17조의7의 실증자료 기준까지 보존한다.
  • .gw/state.sqlite3 = 런타임 조회 DB, corpus/verified = 검증 원본, corpus/raw = 증거 스냅숏.
  • assess는 필수 조문 DB가 없으면 중단한다(법률근거 게이트).
  • 의결서 아카이브·검색: corpus fetch-decisions로 공정위 표시광고 의결서(그린워싱 관련분)를 로컬 수집 → corpus index-decisions로 시맨틱 인덱스(sentence-transformers 임베딩) → corpus search-decisions로 주장별 검색. 원문·인덱스는 로컬·gitignore이므로 pull 사용자는 각자 재생성한다. 수집 목록만은 corpus/verified/KR/decisions-catalog.csv(사건번호·사건명·조치·의결일)로 커밋돼 있어 무엇이 있는지 미리 볼 수 있다.
  • 사람이 확인해 case_records에 편입한 사례는 주장별 case_candidates로 자동 제안된다. 이는 최종 인용이 아니며 원문·관련성·확정 또는 불복 상태를 확인한 뒤에만 precedents로 옮긴다(MAINTENANCE.md).

8. 스킬 — /greenwashing-review · /greenwashing-benchmark

배포용 스킬은 둘. 건별 검토와 횡단 비교로 나뉜다.

  • 설치: ~/.claude/skills/<이름> → 이 repo의 skills/<이름>을 가리키는 심링크.
    • ln -s "$(pwd)/skills/greenwashing-review" ~/.claude/skills/greenwashing-review
    • ln -s "$(pwd)/skills/greenwashing-benchmark" ~/.claude/skills/greenwashing-benchmark
  • 스킬은 자체 완결이 아니라 프로젝트에 의존한다: (a) Python CLI(python3 -m greenwashing), (b) 절차 문서 EVALUATION-SOP.md.

Codex 등 Agent Skills 호환 로컬 에이전트도 각 제품의 skills 루트에 같은 하위 폴더를 연결할 수 있다. 다만 스킬 연결만으로 Python 의존성·corpus·korean-law MCP가 자동 설치되지는 않는다. Claude.ai·ChatGPT에 이 폴더만 업로드하는 방식은 위 §2의 제한된 보조 작업에만 사용한다.

스킬 묻는 것 입력 SKILL.md가 규정하는 단계
/greenwashing-review 이 문안이 위법인가 보고서·광고 PDF ②단계(포섭·심결례·웹검증)
/greenwashing-benchmark 무엇이 업계 관행이고 무엇이 이탈인가 2-evaluation.json × 2건 이상 ②단계(집계 수치의 해석)
  • 트리거: 검토 — "그린워싱 검토", "지속가능보고서 평가", "환경 표시·광고 검토", 환경성 주장 고발장 요청 등. 비교 — "동종업계 비교", "SR 비교분석", "업계 관행인지 봐줘", "연도별로 어떻게 달라졌는지" 등.
  • 두 스킬 모두 집계·검증은 기계가, 판단은 세션이 한다는 같은 이음매를 쓴다.

8-A. MCP 서버로 사용 (선택 — 데스크톱·타 클라이언트)

스킬(Claude Code 전용) 대신/함께 로컬 stdio MCP 서버로도 쓸 수 있다. Claude Desktop·Codex·Cursor 등 로컬 MCP 클라이언트에서 도구를 부른다(스킬 슬래시가 안 먹는 표면 해결).

  • 노출 도구: search_decisions(KR/UK/US/EU 비교법 RAG·★)·assess_matter·get_shortlist·corpus_status·verify_matter·fetch_decisions·fetch_cases·index_decisions·repair_decision_paths·list_matters
  • 설계: MCP = 결정론적 배관(추출·검색·문서생성). ② 법적 판단은 여전히 에이전트가 korean-law MCP + 웹으로. 로컬 stdio 전용(기밀 사건 유출 방지). MCP는 다른 MCP를 못 부르므로 korean-law MCP는 에이전트가 별도 연결.

설치:

python3 -m pip install "mcp" numpy python-docx openpyxl pypdf python-pptx   # 또는 pip install -e ".[mcp]"
python3 -m pip install sentence-transformers                               # search_decisions용(또는 pip install -e ".[search]")

등록(택1):

  • 직접 config: mcp-config-example.jsonmcpServers를 Claude Code(claude mcp add-json)·데스크톱 설정에 붙이고 PYTHONPATH를 클론 경로로.
  • 플러그인: .claude-plugin/plugin.jsonmcpServers+userConfig를 선언 — 마켓플레이스/플러그인 방식 설치 시 자동 등록.
{ "mcpServers": { "greenwashing": {
  "command": "python3", "args": ["-m","greenwashing.mcp_server"],
  "env": { "PYTHONPATH": "/클론/경로/greenwashing-review" }
}}}

전제: corpus sync·fetch/index로 로컬 데이터 준비 + search_decisions엔 sentence-transformers(기본 백엔드). 등록 후 앱 재시작.

8-B. 팀 검색 서버 (선택 — 공개데이터만, 같은 네트워크)

비교법 의결서는 공개데이터라, 여러 사람이 각자 corpus·모델을 셋업하는 대신 한 대에 원격 SSE 서버를 띄우고 나머지는 config 한 줄로 붙을 수 있다. greenwashing/mcp_remote.py공개 검색 2개 도구만(search_decisions·get_decision) 노출한다 — 기밀 사건 도구(assess_matter 등)는 이 서버에 없다(코드에서 제외).

# 서버 머신(상시가동): fetch/index로 corpus 준비 후
greenwashing-mcp-remote          # 기본 0.0.0.0:8766 (env GW_MCP_HOST/GW_MCP_PORT)
// 클라이언트: 원격 MCP 지원 시
"greenwashing-search": { "url": "http://<서버IP>:8766/sse" }
// stdio만 지원 시: { "command": "npx", "args": ["mcp-remote", "http://<서버IP>:8766/sse"] }

전제·주의: 무인증 서버 — 신뢰 LAN에서만 사용 · 같은 LAN에서만 접속(외부 노출 안 함) · macOS 인바운드 방화벽에서 8766 허용 · 서버 IP 고정 권장. 자기 사건을 평가(assess→draft)하려면 이 검색 서버로는 안 되고 §2 로컬 설치가 필요하다(기밀 파이프라인은 로컬 전용).


9. 유지보수 (MAINTENANCE.md)

매주(원문 해시 비교·판례 검색) · 매월(공정위·환경부·법령센터 검색결과 비교) · 제출 전(pre_filing 재검증) · 분기(coverage·외국법). 판례·처분은 자동 편입 금지 — 사람 확인 후 import-json. scripts/run_maintenance.sh·ops/*.plist 참고.


10. 안전 경계

  • draft(고발장·신고서)는 변호사 승인(approve) 없이 실행 불가. 승인 후 1-assessment.json이 바뀌면 재승인 필요.
  • 제출·발송 기능 없음. 위험점수는 우선순위 도구일 뿐 위법성·고의·형사책임의 결론이 아니다.
  • confidential 모드는 외부 통신 안 함. ②에서 사건 내부 문구를 MCP·웹에 넣지 않는다(주장 유형·법령만 질의).
  • 존재하지 않는 조문·사건번호·심결례를 생성하지 않는다. 불확실은 [확인 필요]. 동명·유사기업 혼동 주의(동일·유사 상호의 다른 기업).
  • 인용 법령·판례의 현행 시행·확정 여부는 제출 전 변호사가 재확인한다.

11. 파일 트리 · 모듈 맵

Greenwashing/
├─ README.md              ← 이 문서(단일 기준점)
├─ PLAN.md                로드맵·진행상황·완료기준
├─ EVALUATION-SOP.md      ② 정밀평가 절차·2-evaluation.json 스키마
├─ MAINTENANCE.md         DB 최신화 주기·심결례 후속과제
├─ INSTALL.md             제3자 배포·설치
├─ pyproject.toml         의존성
├─ greenwashing/          ── Python 패키지(~2,800 LOC) ──
│  ├─ cli.py              (427) 명령 파서·오케스트레이션·evaluation 병합·shortlist 출력
│  ├─ analysis.py         (343) ①핵심: 주장 추출·패턴분류·8요소 점수·shortlist 선별
│  ├─ markdown_docs.py    (283) ③보고서·요약표·고발장 .md 생성(웹검증 블록 렌더)
│  ├─ corroboration.py    (269) 공개자료(홈페이지·언론) 교차확인
│  ├─ database.py         (267) SQLite: 규범·조문·버전·해시·사건
│  ├─ korean_corpus.py    (228) 국가법령정보센터 원문 수집·조문 파싱
│  ├─ maintenance.py      (221) 주간/월간/제출전 변경 감시·판례 후보 큐
│  ├─ benchmark_docs.py   (234) 횡단 비교분석 .md·.html 렌더
│  ├─ benchmark.py        (196) 동종업계 SR 횡단 집계(유형×보고서 교차표·표본 강도)
│  ├─ workbooks.py        (191) ③검토표·증거목록 .xlsx(openpyxl)
│  ├─ extractors.py       (139) PDF/DOCX/PPTX/HTML/이미지 OCR 추출
│  ├─ verification.py     (118) 산출물·인용·승인 무결성(verify)
│  ├─ models.py           (103) 데이터클래스
│  ├─ context.py          (64)  context.yaml 파서
│  ├─ approval.py         (41)  변호사 승인 해시 게이트
│  └─ data/               규범 출처 목록(kr_official_sources.json 등)
├─ corpus/{raw,verified}/ 법령 원문 스냅숏·파싱 JSON
├─ .gw/state.sqlite3      런타임 DB
├─ matters/<사건>/        사건 작업공간
├─ benchmarks/<이름>/     횡단 비교 산출물(gitignore)
├─ skills/greenwashing-review/SKILL.md      배포용 스킬 — 건별 검토
├─ skills/greenwashing-benchmark/SKILL.md   배포용 스킬 — 횡단 비교
├─ scripts/ · ops/        유지보수 스크립트·launchd
└─ tests/                 회귀 테스트(40건)

12. 개선할 때 어디를 건드리나 (기준점)

바꾸고 싶은 것 손댈 곳
주장 추출·패턴·기계 점수 analysis.py
shortlist 선별 기준 analysis.py:select_shortlist
② 평가 절차·웹검증·스키마 EVALUATION-SOP.md + skills/greenwashing-review/SKILL.md
evaluation 병합·shortlist 출력 cli.py:_attach_evaluation, _write_shortlist
보고서·고발장 .md 서식 markdown_docs.py
검토표·증거목록 .xlsx 서식 workbooks.py
산출물 파일명·번호 규칙 cli.py(assess/draft) + verification.py(REQUIRED·glob) + workbooks.py
법령 수집·조문 파싱 korean_corpus.py, data/kr_official_sources.json
무결성 검증 규칙 verification.py
공개자료 교차확인 corroboration.py
횡단 비교 집계·표본 강도 기준 benchmark.py(sample_confidence·cross_tabulate)
비교분석 보고서 서식 benchmark_docs.py + skills/greenwashing-benchmark/SKILL.md

13. 알려진 한계·후속 과제

  1. 심결례·판례 coverage — 핵심 구조화 사례는 구축됐으나 공정위·법원 전수성과 불복 상태는 계속 보강해야 한다.
  2. 추출 오탐 — 정책·목차 나열 blob, 수치표가 주장으로 잡힘(②에서 없음 필터로 걸러지나 ① 정확도 개선 여지).
  3. 이미지·색상·인증마크 — OCR 문언까지만. 도안·색상 의미는 사람이 원본 확인.
  4. 미국·EU·영국 DB — 핵심 규범·사례 시드는 반영됐으나 회원국·주법 전수 coverage와 원문 버전 DB 전환은 계속 보강한다.
  5. 정답 세트 검증 — 실제 자료 3~5건으로 추출 재현율 95%·고위험 누락 0 측정 미완.

14. 검증

python3 -m unittest discover -s tests -v

15. 면책 (Disclaimer)

이 소프트웨어는 변호사의 그린워싱(환경 표시·광고) 검토를 보조하는 도구다. 산출물(위험점수·법률검토보고서· 신고서/고발장 초안 등)은 법률자문이 아니며, 기계적 산출물에 불과하다. 반드시 자격 있는 변호사의 검토·확정을 거쳐야 하고, 인용 법령·판례의 현행성·정확성은 제출 전 사람이 재확인해야 한다. 저작자는 이 도구의 사용 또는 산출물로 인한 어떠한 결과에 대해서도 보증·책임을 지지 않는다(아래 라이선스의 무보증·책임제한 조항 참조).

16. 라이선스

Apache License 2.0 — Copyright 2026 dillettante. 자세한 조건은 LICENSENOTICE 참조.

About

한국법(표시광고법·환경기술산업법) 중심 그린워싱 검토·고발 자동화. 환경주장 추출→korean-law MCP·웹 정밀평가→법률검토보고서·고발장 초안. LLM은 판단, 정규식은 트리아지만.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages