구조

한 장으로 보는 구조

두 개의 고리로 움직입니다. 사람들의 질문이 대화 고리로 들어와 주제와 데이터가 쌓이고, 멘티가 분석 고리로 그 주제의 효과를 확인해 다시 사이트에 올립니다.

대화 고리 · 질문이 쌓이는 길

01질문

사이트 대화창에 궁금한 정책을 적는다

site/ask.js
02정리

주제·데이터·조심할 점·계획 초안을 함께 만든다

catalog/ · 가이드/AI 모드
03제안

대화가 GitHub 이슈가 된다 (라벨 from-site)

.github/ISSUE_TEMPLATE/site-question.yml
04반영

검토 후 카탈로그·케이스 PR로 들어가고 순위가 갱신된다

scripts/refresh_trends.py

분석 고리 · 효과를 확인하는 길

01주제·법령

근거 법률에서 출발해 개정·지정·조례를 전부 모으고 세 가지를 확인한다

topics.yaml legal · core/adapters/legal.py
02계획

데이터를 보기 전에 plan.yaml을 커밋한다

cases/<내ID>-<주제>/
03계산

규칙이 고른 방법으로 효과를 계산하고 점검한다

core/estimators · core/agent
04공개

판정과 그림이 사이트에 자동으로 올라간다

site/build.py · Actions

네 개의 층

위에서 아래로 부릅니다. AI는 화면(대화)과 에이전트(글쓰기)에서만 돕고, 분석 엔진에는 들어가지 않습니다.

화면

누가 보나
대화창
가이드 모드(키 없이) · 내 AI 키 모드
요즘 궁금한 주제
사이트 질문 수 · 검색 관심도 순위
주제 · 이슈 · 데이터 지도
정적 페이지, 누구나

에이전트

순서대로 실행
① 계획 확인
plan.yaml 검증 + 커밋 확인
② 수집 · ③ 정리
데이터 받기, 품질 점검
④ 계산
규칙이 고른 방법으로
⑤ 점검 · ⑥ 리포트
과장 차단, 재현 기록

분석 엔진

AI 없이 계산만
계획 양식
core/schema
추정
이중차분 · 단절 시계열
추론
무작위화 추론(정책 지역 소수)
판정
근거 있음 · 조건부 · 판단 불가

데이터 지도

무엇을 어디서
주제 · 이슈
topics.yaml · issues.yaml
데이터셋
역할 · 단위 · 받는 법 · 이용 조건
법령 온톨로지
근거 법률 → 연혁 · 체계도 · 지정/해제 이력
수집기
국토부 · KOSIS · 법제처 · 파일

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개와, 어떤 근거로 답했는지입니다.

1

문제를 데이터로 정의하고 효과를 추정

공공·사회 문제의 해법이 실제로 효과를 냈는지

2

전 과정을 AI 에이전트로 자동화

수집 → 지표 정리 → 효과 추정 → 리포트

3

누구나 바로 쓰는 오픈소스

GitHub와 분석 사이트로 공유

질문 01

소셜 반응으로 무엇을 정하나?

근거 · 출발 키트: 화제가 된 정책만 고르면 결과를 보고 사례를 고르는 셈이 되어 효과가 부풀려진다

→ 소셜 반응은 주제까지만 정한다. 순위도 주제를 고르는 데만 쓰고, 분석은 그 주제의 정책 전체로

catalog/topics.yaml · core/discovery

질문 02

대화창의 AI는 어떻게 부르나?

근거 · 사이트는 서버가 없는 GitHub Pages다. 공용 키를 사이트에 넣으면 누구나 볼 수 있다

→ 키 없이도 되는 가이드 모드가 기본. AI 대화는 사용자가 자기 키를 넣으면 브라우저가 직접 부르고, 키는 저장하지 않는다

site/ask.js

질문 03

대화를 어떻게 오픈소스에 반영하나?

근거 · 대화가 브라우저 안에만 있으면 쌓이지 않는다. 반대로 자동 저장하면 개인정보 위험이 있다

→ 사용자가 직접 누를 때만 GitHub 이슈로 올린다. 사람이 검토해 카탈로그·케이스 PR로 넣는다

site-question.yml · CONTRIBUTING.md

질문 04

순위는 무엇으로 매기나?

근거 · 지어낸 인기도는 신뢰를 깎는다. 확인 가능한 신호만 쓴다

→ 최근 30일 사이트 질문 수 → 네이버 검색 관심도(키가 있을 때, 값은 공개하지 않고 순서에만) → 최근 시행·발표일. 쓴 기준을 화면에 적는다

scripts/refresh_trends.py

질문 05

필요한 데이터를 어떻게 정리하나?

근거 · 효과를 재려면 '누가 언제 받았나', '무엇이 변했나', '다른 요인' 세 종류가 모두 있어야 한다

→ 데이터셋마다 역할·단위·받는 법·이용 조건을 붙여 데이터 지도로 관리한다

catalog/datasets.yaml · core/discovery/ontology.py

질문 06

정책이 바뀌면 관련 법령을 어떻게 다 가져오나?

근거 · 출발 키트: 법제처 API는 무료이고 '어느 지역이 언제부터'가 나온다. 연혁·체계도·행정규칙까지 같은 키로 조회된다

→ 주제마다 근거 법률과 행정규칙 이름만 적으면 수집기가 연혁·하위 규정·조례·지정/해제 공고를 모두 모으고, 매주 바뀐 것을 이슈로 알린다

core/adapters/legal.py · scripts/refresh_legal.py · watch_legal.py

질문 07

법령 개정일을 바로 처치 시점으로 써도 되나?

근거 · 개정 대부분은 분석 중인 정책과 무관하고, 지자체 공고·행정지도는 법령 DB에 없다

→ 법령 목록은 후보다. 시행일·대상을 공식 발표로 확인한 뒤 사람이 events에 옮긴다

catalog/topics.yaml events

질문 08

AI에게 어디까지 맡기나?

근거 · 인과 판단을 AI에 맡기면 과장 위험이 크다. 비슷한 오픈소스(CAIS)도 규칙으로 방법을 고른다

→ AI는 주제 찾기와 글쓰기만. 방법은 데이터 모양을 보고 규칙이, 숫자는 검증된 라이브러리가 계산

core/estimators · core/agent/guard.py

질문 09

결과를 보고 계획을 바꾸면?

근거 · 공공 평가 기관의 사전 등록 관행(미국 GSA OES, 세계은행 DIME)

→ plan.yaml을 git에 커밋해야 계산 단계가 실행된다

core/agent/nodes.py

질문 10

정책 지역이 몇 곳뿐이면?

근거 · 토허구역 예시는 25개 구 중 4개. 기존 방식은 추세 차이가 없어도 50~80% '차이 있음'으로 판정했다

→ 정책 지역이 10곳 미만이면 무작위화 추론으로 자동 전환

core/estimators/ri.py

질문 11

누구나 보려면 어디에 공개하나?

근거 · 출발 키트: 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-CopilotLLM 인과 분석 에이전트보완 관계. 우리는 한국 공공데이터·사전 등록에 집중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 도입 사례 아카이브화면 구성만 참고. 라이선스 표기가 없어 코드·글은 가져오지 않음표기 없음
국회예산정책처 · 기획재정부 평가공식 재정사업 평가우리 결과는 공식 평가가 아니며 그렇게 보이지 않게 표시—