맥락
정부지원사업 공고는 사이트마다 흩어져 있고, 대부분의 대표는 자기가 지원 가능한 공고가 뭔지 모릅니다. 검색이 아니라 먼저 찾아서 알려주는 쪽이 맞다고 봤습니다.
문제
이런 종류의 개인 프로젝트는 대부분 '기능은 다 있는데 아무도 안 쓰는 상태'로 끝납니다. 그걸 막는 것이 기술적 과제보다 어려웠습니다.
내린 결정
API 키를 앱에 넣지 않았다
AI 사업계획서 생성은 Firebase Cloud Function이 서버에서 Claude API를 호출합니다. 키는 서버 시크릿에만 존재하고 앱 번들에는 들어가지 않습니다. 앱은 익명 인증을 거쳐 함수를 호출합니다.
백엔드를 나중에 갈아끼울 수 있게 인터페이스로 잘랐다
앱은 `AiBackend` 인터페이스에만 의존합니다. Firebase Functions에서 NestJS 정식 서버로 옮길 때 구현체 하나만 교체하면 되고, 화면 코드는 건드리지 않습니다.
완성 대신 승격 조건을 먼저 썼다
각 단계마다 다음 단계로 넘어갈 조건을 문서에 박아 두었습니다. v1→v2는 '내가 2주 실제로 쓰고 공고 1건 이상 실제 지원', v2→v3은 '지인 대표 3명이 돈 내겠다고 반응'. 조건을 못 넘기면 그 단계는 만들지 않습니다.
상세 수집은 캐시해서 재실행 비용을 없앴다
상위 공고의 지원자격·지원내용·선정절차를 구조화 추출해 본문 키워드까지 점수에 반영하고, 결과를 `detail_cache.json`에 캐시해 재실행 시 재사용합니다.
내가 맡은 범위
- 제품 기획
- 수집기 개발
- 앱 개발
- 서버리스 백엔드
- 로드맵 설계
실제 산출물
- Flutter 앱 (Web · Android · iOS 단일 코드베이스)
- 수집기 watcher.py — 기업마당 공고 수집·점수화
- SPEC.md — 단계별 승격 조건이 명시된 로드맵
솔직하게 — 아직 못 한 것
현재 v0 단계입니다. 아직 유료 사용자는 없고, 승격 조건상 그게 검증되기 전에는 v3 상용화를 시작하지 않습니다. 이 판단이 이 프로젝트에서 제가 한 가장 중요한 결정입니다.
이런 일이 필요하시면
지금 막힌 지점을 그대로 적어 보내주세요. 제가 할 수 있는 일과 없는 일을 먼저 구분해 답장드립니다.