두 개의 고리로 움직입니다. 사람들의 질문이 대화 고리로 들어와 주제와 데이터가 쌓이고, 멘티가 분석 고리로 그 주제의 효과를 확인해 다시 사이트에 올립니다.
사이트 대화창에 궁금한 정책을 적는다
site/ask.js주제·데이터·조심할 점·계획 초안을 함께 만든다
catalog/ · 가이드/AI 모드대화가 GitHub 이슈가 된다 (라벨 from-site)
.github/ISSUE_TEMPLATE/site-question.yml검토 후 카탈로그·케이스 PR로 들어가고 순위가 갱신된다
scripts/refresh_trends.py근거 법률에서 출발해 개정·지정·조례를 전부 모으고 세 가지를 확인한다
topics.yaml legal · core/adapters/legal.py데이터를 보기 전에 plan.yaml을 커밋한다
cases/<내ID>-<주제>/규칙이 고른 방법으로 효과를 계산하고 점검한다
core/estimators · core/agent판정과 그림이 사이트에 자동으로 올라간다
site/build.py · Actions위에서 아래로 부릅니다. AI는 화면(대화)과 에이전트(글쓰기)에서만 돕고, 분석 엔진에는 들어가지 않습니다.
GitHub Actions가 옆에서 돕습니다: 코드 검사 · 매일 순위 갱신과 사이트 공개 · 조례 수집(키가 있을 때).
지금 구조를 끝까지 돌리려면 아래가 필요합니다. 비밀값은 레포에 적지 않고 Settings → Secrets에만 넣습니다.
| 무엇 | 왜 | 누가 · 어디에 | 상태 |
|---|---|---|---|
| 법제처 OC 인증값 | 법령 온톨로지 매일 갱신, 매주 변경 알림. 첫 스냅샷은 커밋해 두었다 | 운영진 · 레포 Secrets(LAW_OC) | 등록 대기 |
| 공공데이터포털 인증키 | 실거래가 등 실제 데이터로 분석 (지금 예시는 시뮬레이션) | 멘티 각자 · .env | 각자 신청 |
| 네이버 검색어트렌드 키 | 순위의 검색 관심도, '미리 반응했나' 점검. 새 키는 NAVER API HUB에서 발급 | 운영진 · 레포 Secrets | 선택 |
| 모두가 쓰는 AI 대화 | 지금은 본인 키가 있어야 AI 모드. 권장: 구성원은 이슈에서 @claude로 답을 받고(GitHub Actions), 공개 방문자용 중계 서버는 필요할 때만 | 운영진 결정 | 결정 필요 |
| 사이트 질문 · 법령 변경 검토 | 올라온 질문과 law-change 이슈를 보고 catalog·케이스에 PR로 반영 | 구성원 모두 · 모임 전 | 정함 |
| 공공데이터포털 검색 전환 | 지금 검색은 웹 페이지를 읽는 방식. 공식 목록 API로 바꾼다 | 개발 | 다음 |
| 시차 도입 이중차분 · 합성통제 | 지역마다 시작일이 다르거나 정책 지역이 한두 곳인 이슈 | 개발 · 4~5주차 | 다음 |
과정 목표를 코드로 옮기면서 부딪힌 질문 11개와, 어떤 근거로 답했는지입니다.
공공·사회 문제의 해법이 실제로 효과를 냈는지
수집 → 지표 정리 → 효과 추정 → 리포트
GitHub와 분석 사이트로 공유
근거 · 출발 키트: 화제가 된 정책만 고르면 결과를 보고 사례를 고르는 셈이 되어 효과가 부풀려진다
→ 소셜 반응은 주제까지만 정한다. 순위도 주제를 고르는 데만 쓰고, 분석은 그 주제의 정책 전체로
catalog/topics.yaml · core/discovery
근거 · 사이트는 서버가 없는 GitHub Pages다. 공용 키를 사이트에 넣으면 누구나 볼 수 있다
→ 키 없이도 되는 가이드 모드가 기본. AI 대화는 사용자가 자기 키를 넣으면 브라우저가 직접 부르고, 키는 저장하지 않는다
site/ask.js
근거 · 대화가 브라우저 안에만 있으면 쌓이지 않는다. 반대로 자동 저장하면 개인정보 위험이 있다
→ 사용자가 직접 누를 때만 GitHub 이슈로 올린다. 사람이 검토해 카탈로그·케이스 PR로 넣는다
site-question.yml · CONTRIBUTING.md
근거 · 지어낸 인기도는 신뢰를 깎는다. 확인 가능한 신호만 쓴다
→ 최근 30일 사이트 질문 수 → 네이버 검색 관심도(키가 있을 때, 값은 공개하지 않고 순서에만) → 최근 시행·발표일. 쓴 기준을 화면에 적는다
scripts/refresh_trends.py
근거 · 효과를 재려면 '누가 언제 받았나', '무엇이 변했나', '다른 요인' 세 종류가 모두 있어야 한다
→ 데이터셋마다 역할·단위·받는 법·이용 조건을 붙여 데이터 지도로 관리한다
catalog/datasets.yaml · core/discovery/ontology.py
근거 · 출발 키트: 법제처 API는 무료이고 '어느 지역이 언제부터'가 나온다. 연혁·체계도·행정규칙까지 같은 키로 조회된다
→ 주제마다 근거 법률과 행정규칙 이름만 적으면 수집기가 연혁·하위 규정·조례·지정/해제 공고를 모두 모으고, 매주 바뀐 것을 이슈로 알린다
core/adapters/legal.py · scripts/refresh_legal.py · watch_legal.py
근거 · 개정 대부분은 분석 중인 정책과 무관하고, 지자체 공고·행정지도는 법령 DB에 없다
→ 법령 목록은 후보다. 시행일·대상을 공식 발표로 확인한 뒤 사람이 events에 옮긴다
catalog/topics.yaml events
근거 · 인과 판단을 AI에 맡기면 과장 위험이 크다. 비슷한 오픈소스(CAIS)도 규칙으로 방법을 고른다
→ AI는 주제 찾기와 글쓰기만. 방법은 데이터 모양을 보고 규칙이, 숫자는 검증된 라이브러리가 계산
core/estimators · core/agent/guard.py
근거 · 공공 평가 기관의 사전 등록 관행(미국 GSA OES, 세계은행 DIME)
→ plan.yaml을 git에 커밋해야 계산 단계가 실행된다
core/agent/nodes.py
근거 · 토허구역 예시는 25개 구 중 4개. 기존 방식은 추세 차이가 없어도 50~80% '차이 있음'으로 판정했다
→ 정책 지역이 10곳 미만이면 무작위화 추론으로 자동 전환
core/estimators/ri.py
근거 · 출발 키트: Streamlit은 서버가 켜져 있어야 한다. 서버 없이 GitHub Pages로도 된다
→ GitHub Actions가 매일 사이트를 만들어 Pages로 공개한다. Streamlit은 개발용
site/ · .github/workflows/pages.yml
멘티는 cases/의 내 폴더와 catalog/만 고치면 됩니다.
| 폴더 | 하는 일 | 누가 고치나 |
|---|---|---|
cases/ | 멘티별 분석 폴더 (<내ID>-<주제>, _template에서 시작) | 폴더 주인 |
catalog/ | 주제 · 이슈 · 데이터셋 목록 (데이터 지도) | 누구나 (PR) |
site/ | 이 사이트 · 대화창(ask.js) | 메인테이너 |
scripts/ | 법령 · 조례 · 순위 갱신, 법령 변경 감지, 라이선스 · 활동 확인 | 메인테이너 |
core/discovery/ | 소셜 반응 → 주제 → 정책 · 데이터 | 메인테이너 |
core/adapters/ | 공공데이터 · 법제처(법령 온톨로지) 수집기 | 메인테이너 |
core/schema/ | 분석 계획(plan.yaml) 규칙 | 메인테이너 |
core/estimators/ | 효과 계산 · 점검 · 판정 | 메인테이너 |
core/agent/ | 6단계 실행, 과장 차단 | 메인테이너 |
대화창(가이드 · 내 AI 키) · 대화 → 이슈 · 주제 순위 · 데이터 지도 · 법령 온톨로지(7개 주제, 3,500여 건) · 6단계 실행 · 계획 커밋 확인 · 이중차분/단절 시계열 · 무작위화 추론 · 과장 차단 · 사이트 자동 공개
국토부 실거래가(토허구역 예시는 지금 시뮬레이션) · 법제처 매일 갱신(LAW_OC) · 검색 관심도(선택)
시차 도입 이중차분(4주차) · 합성통제(5주차) · 검색량으로 '미리 반응했나' 점검
비슷한 프로젝트와 겹치거나 부딪히는 부분이 있는지 확인했습니다. 라이선스 충돌은 없고, 서로 보완하는 관계입니다. GPL·AGPL 코드는 필수 의존성으로 가져오지 않습니다.
| 프로젝트 | 무엇을 | 우리와의 관계 | 라이선스 |
|---|---|---|---|
| CAIS (causal-agent) | 자연어 인과 질문 → 방법 선택 → 추정 | 방법 선택 규칙을 참고. 한국 공공데이터·사전 등록은 없음 | MIT |
| Causal-Copilot | LLM 인과 분석 에이전트 | 보완 관계. 우리는 한국 공공데이터·사전 등록에 집중 | MIT |
| korean-law-mcp | 법제처 API를 AI 도구(MCP)로 묶은 서버. 인용 검증 · 시점별 법령 | 법령 조회가 겹침. 멘티가 Claude로 법령을 탐색할 때 쓰면 좋음. 우리 수집기는 재현용 스냅샷·변경 감지·효과 추정 연결에 집중 | MIT |
| PublicDataReader · kpubdata | 공공데이터 API 파이썬 래퍼 | 필요하면 수집기로 가져다 쓸 수 있음 | MIT |
| data-go-mcp-servers | 공공데이터포털 MCP 서버 | AI 도구 연결 시 후보 | Apache-2.0 |
| PolicyEngine · OpenFisca | 세금·복지 제도 시뮬레이터 | 목적이 다름(사전 시뮬레이션). AGPL이라 코드 가져오지 않음 | AGPL-3.0 |
| hollobit/PAX | 공공 AI 도입 사례 아카이브 | 화면 구성만 참고. 라이선스 표기가 없어 코드·글은 가져오지 않음 | 표기 없음 |
| 국회예산정책처 · 기획재정부 평가 | 공식 재정사업 평가 | 우리 결과는 공식 평가가 아니며 그렇게 보이지 않게 표시 | — |