AI와 함께 만드는 삶

PM으로 일하며 AI와 함께 무언가를 만들어가는 삶을 기록합니다.

프로젝트 기록/누구나법률 서비스 개발기 9

지금, 그리고 앞으로 — 누구나법률 개발기를 마치며 (에필로그)

지금까지 온 거리4월 16일 첫 커밋부터 지금까지 약 넉 달. 그 사이 있었던 일을 한 줄로 요약하면 이렇다.무료로 시작 → 무료를 유지할 방법을 밖에서 두 번 찾다 실패 → 원래 계획대로 직접 벌기로 함 → 벌기 시작하니 운영이라는 새로운 산이 나타남.기술적으로 남은 것도 정리하면: LLM 하나에 의존하지 않는 폴백 체인, 실제 법조문·판례를 인용하는 RAG 파이프라인, 긴 계약서도 끝까지 읽는 청킹 엔진, 한글 파일까지 읽는 파서, 버전 간 변경사항을 자동으로 비교하는 리드라인 엔진, 회사별 기준과 대조하는 플레이북 시스템. 그리고 그 사이사이 죽어있던 API, 깨졌던 로컬 환경, 지워야 했던 옛 호스팅의 흔적들.로드맵에 아직 안 지워진 줄 하나ROADMAP.md를 다시 열어보다가 재밌는 걸 발견했다..

서비스 둘러보기 — 누구나법률 지금까지 나온 화면들 (번외)

앞의 일곱 장 동안 "왜 이렇게 만들었는지", "뭐가 잘못됐고 어떻게 고쳤는지"만 이야기했다. 이번엔 그래서 지금 뭐가 남았는지, 실제 화면으로 보여준다.카테고리 선택 — 일반과 기업은 처음부터 갈라진다들어오자마자 "일반 사용자"와 "기업"으로 갈라진다. 일반은 주거·근로·소상공인 같은 생활 밀착 카테고리, 기업은 B2B·인사노무·IP·투자·컴플라이언스 5개 카테고리로 나뉜다. 1장에서 "취약계층 대상"으로 시작한 서비스가, 5장을 거치며 기업형 유료 서비스까지 같이 갖추게 된 결과가 이 갈림길이다.AI 법률 상담 — 카테고리별로 다른 전문가가 답한다 노무 카테고리에서 물으면 노무사 톤으로, 이혼 카테고리에서 물으면 가사 전문 변호사 톤으로 답한다. 답변 아래엔 실제로 검색된 법조문·판례가 인용 카드 형..

기업형 계약 분석 엔진 만들기 — 청킹, HWP 파서, 버전 비교, 플레이북 (7장)

6,000자 컷 — 계약서 뒷부분이 통째로 안 읽히고 있었다계약서를 AI에게 분석시키는 코드를 열어보니, 이런 줄이 있었다. pythonprompt = f"""다음 계약서를 분석해주세요.계약서 전문:---{contract_text[:6000]}---"""[:6000] — 앞 6,000자만 잘라서 LLM에 넘기고 있었다. 짧은 근로계약서라면 문제없지만, 기업 간 용역계약서나 공급계약서는 보통 2만~4만 자다. 뒤쪽 70~80%, 그러니까 손해배상·관할법원·비밀유지 같은 정작 중요한 조항이 대부분 들어있는 구간이 아예 AI 눈에 안 들어가고 있었다. 그런데 화면엔 "분석 완료"라고만 뜬다. 사용자는 자기 계약서의 3/4가 검토조차 안 됐다는 걸 알 방법이 없었다.조항 경계로 자르고, 병렬로 분석하고, 다시 ..

완성 그 이후 — 운영이라는 두 번째 산, 방치된 버그와 흔적 청소기 (6장)

"완성"이라 부른 지 한 달, 아무도 몰랐던 500 에러7월 2일 유료화 전환까지 마치고, MVP v2는 문서상 "완성"이었다. 그런데 7월 31일, 무심코 시스템 상태를 확인하는 API(/api/config/status)를 호출했다가 500 에러를 받았다.원인은 어이없을 만큼 단순했다. claude_available()이라는 함수를 호출하는 코드는 있는데, 그 함수를 import하는 줄이 빠져 있었다. NameError. 배포된 지 오래됐지만, 이 엔드포인트를 실제로 호출해본 사람이 아무도 없어서 아무도 몰랐다. 서비스가 "완성"됐다는 건 화면에 보이는 기능이 다 돌아간다는 뜻이지, 한 번도 안 눌러본 구석까지 다 멀쩡하다는 뜻은 아니었다.로컬에서 그냥 켜는 것조차 순탄하지 않았다같은 날, 로컬 개발 ..

그래서 직접 벌기로 했다 — 경쟁사 분석과 유료화 전환기 (5장)

남들은 어떻게 돈을 받고 있나부터 봤다해커톤을 접은 날(6월 30일), 같은 커밋에 docs/COMPETITIVE_ANALYSIS.md가 같이 들어갔다. 기업 법률 서비스 시장에서 이미 돈을 받고 있는 곳들을 정리했다.서비스타겟가격핵심 차별점Law.aiB2B 대기업 법무팀1인 ₩20,000/월(최소 5명)6모듈 통합(계약·자문·송무·인감·IP·사규)로폼 비즈니스B2B 중대형 기업문의 가격CLM + ERP 연동슈퍼로이어변호사 전용₩99K~198K/월458만 판례 데이터법률구조서비스경제적 약자무료정부 공식 무료 지원정리하면서 확인한 건 두 가지였다. 첫째, 경쟁사들은 전부 대기업 법무팀 아니면 변호사 전용이었다 — 중소기업·1인 사업자가 들어갈 자리가 비어있었다. 둘째, ₩20,000/월 × 5명 = ₩10..

공짜로 메꿔보려 두 번 걸었다 — 사회적기업 인증 탈락과 해커톤 철회기 (4장)

탈락, 사유 불명4월 24일, PROJECT_SUMMARY.md에 이렇게 적었다.SEIS 사회적기업 창업팀 | ❌ 1차 신청 탈락 (2026-04) — 사유 불명MVP를 완성하고 채 열흘도 안 돼서 낸 지원서였다. 취약계층 무료 법률 서비스라는 취지도, 실제로 돌아가는 서비스도 있었다. 그런데 떨어졌다. 왜 떨어졌는지는 지금도 모른다. 심사 결과 통보에 사유가 없었다.돌이켜보면 이게 이 프로젝트의 돈 문제를 관통하는 진짜 첫 질문이었다. 취약계층에게 무료로 서비스를 주려면, 그 비용은 누가 내나. API 비용, 호스팅 비용은 실제로 나가는데, 사용자한테는 못 받는다. 그래서 사회적기업 인증이든 지원사업이든, 외부에서 그 비용을 충당할 방법을 찾으려 했다. 첫 시도가 실패한 거였다.다음 카드 — 해커톤곧바..

법제처 API와 Groq, 거짓말 안 하게 섞기 — RAG 그라운딩 실전기 (3장)

진짜 데이터를 주는 것과, 그 데이터를 쓰게 만드는 것LLM한테 그냥 "임금체불 당했는데 어떻게 해야 하나요?"라고 물으면, 그럴싸한 답이 나온다. 문제는 "그럴싸함"이지 "정확함"이 아니라는 것. 법률 서비스에서 조문 번호를 지어내거나, 이미 개정된 옛날 조항을 인용하면 그건 그냥 사고다.그래서 세운 원칙은 하나였다. LLM이 답을 만들어내게 하지 말고, 법제처에서 실제로 검색한 법조문·판례를 던져주고 그걸 그대로 인용하게 시키자. 말은 쉬운데, 실제로 해보니 세 가지 층위의 문제가 연달아 나왔다.1단계 — 검색은 빠르게, 병렬로사용자가 질문을 입력하면 법령 조문과 판례를 각각 검색해서 AI 프롬프트에 끼워 넣는 구조를 짰다. 순서대로 하나씩 검색하면 느리니까, 동시에 실행했다. pythonarticl..

진짜 문제는 기술이 아니라 돈이었다 — 무료 호스팅과 LLM 폴백 버그 실전기 (2장)

AI 서비스인데, AI를 하나 빼버렸다첫날 커밋 메시지에 이렇게 적어뒀었다.Tech stack: React 18 / FastAPI / SQLite / Claude·Groq·Ollama (Multi-LLM)Claude를 메인으로 두고, 실패하면 Groq로, 그것도 안 되면 Ollama(로컬)로 넘어가는 구조였다. 그런데 4일 뒤, 2026년 4월 20일 오전 9시 23분에 이런 커밋이 올라갔다. fix: remove Claude from LLM chain, fix Groq fallback bugClaude를 체인에서 통째로 뺐다. AI로 서비스를 만들면서, 정작 서비스 두뇌에서는 Claude를 뺀 셈이다.이유는 버그였다. 코드를 열어보면 이렇다. pythonif provider in ("groq", "au..

법 앞에 누구나 — AI 법률 서비스 하루 만에 MVP 완성기 (1장)

하루 만에 완성된 MVP, 그리고 하루 만에 시작된 오류들2026년 4월 16일 오후 2시 56분. AI 법률 서비스의 첫 커밋을 올렸다. Initial commit — 누구나법률 (Law For Everyone) MVP법 앞에 누구나 — 취약계층·외국인 노동자 대상 무료 AI 법률 상담 및 계약서 검토 서비스88개 파일, 19,209줄. 커밋 메시지에 적어놓은 기능 목록만 봐도 이미 꽤 갖춰져 있었다.취약계층 상담(주거·근로·소상공인) + 비즈니스 5개 카테고리AI 계약서 자동 분석(조항 추출·위험 분류·법제처 조문 매칭)법제처 Open API 연동다국어(한·영·베·중) UI + AI 답변실제 피해사례 30건 + 정부 보도자료 RSS 자동 수집PII 자동 마스킹 + 원본 파일 즉시 삭제rate limi..