사업자번호 하나로 받을 수 있는 지원금 찾기 — 비즈렌즈를 만들며 본 정부지원사업의 실체
“우리 회사가 받을 수 있는 지원금이 뭐가 있냐"는 질문을 사업자번호 하나로 답하게 해 보고 싶었다. 그렇게 만든 게 비즈렌즈다. 지금은 사업 페이지의 대표 서비스로 걸려 있고, 무료로 쓸 수 있다. 이 글은 그걸 만들면서 정부지원사업이라는 게 데이터로 보면 어떻게 생겼는지, 왜 “받을 수 있는지” 판정이 어려운지, 그리고 지금 어디까지 왔는지를 적은 기록이다.

공고는 널려 있다, 문제는 “되는 게 뭐냐"다
정부 지원사업 공고는 기업마당·K-Startup 같은 곳에서 공공 API로 매일 받을 수 있다. 나라장터 입찰공고는 하루 3,000건 가까이 쏟아진다. 수집은 어렵지 않았다. 사업자 상태 조회(계속·휴업·폐업, 과세유형)도 국세청 API가 있고, 나라장터 입찰공고도 조달청 API가 면허 제한·참가 가능 지역 같은 조건을 구조화된 필드로 준다. 전부 공공데이터포털에서 무료로 신청할 수 있었고, 내가 쓰는 데이터 소스는 전부 이런 공공데이터의 조합이다.
그러니까 “어디 있냐"는 문제가 아니었다. 문제는 그 수천 건 중에서 “이 회사가 되는 게 뭐냐"였다.
왜 자격 판정이 어려운가
만들어 보고 나서야 이유를 제대로 알았다.
첫째, 조건이 문장으로 쓰여 있다. “도내 소재 기업만”, “타 지역은 이전 확약서 필수” 같은 문장이 공고마다 제각각이다. 이걸 지역·업력·기업 규모·업종·제외 대상·필수 서류로 구조화해야 비로소 회사와 대조할 수 있다.
둘째, 회사 쪽 정보도 생각보다 많이 필요하다. 국세청 API는 사업자 상태와 과세유형만 주고 상호나 대표자명은 주지 않는다. 매출·인원·수출 여부·업력·벤처나 이노비즈 같은 인증 12종은 사용자가 직접 채우거나 사업자등록증·공시에서 끌어와야 한다. 나는 필드마다 “이 값이 어디서 왔고 사용자가 확인했는지"를 따로 기록하게 했다.
셋째, “모른다"는 상태가 꼭 필요하다. 회사 정보가 비어 있으면 통과도 탈락도 아니다. 그래서 조건별로 통과·탈락·미확인을 나누고, 필수 조건과 가점 조건을 분리해서 가능 / 검토 필요 / 다음 기회 / 부적합 네 상태로 분류하는 룰 엔진을 만들었다. LLM 없이 0.1초에 돈다.
룰이 거르고, AI가 읽는다
처음 비즈렌즈 v1은 지역·업력·키워드 세 개만 보는 장난감 수준이었다. 운영자 리뷰에서 “전신 프로젝트에 있던 장점이 하나도 안 보인다"는 지적을 받고 재조사했더니 사실이었다. 그 전에 만들었던 보조금 매칭 도구에 이미 20개가 넘는 프로필 필드, 필수·가점 분리 매칭, 네 상태 분류, 마감 알림, 사업계획서 초안 파이프라인이 다 있었다. 그래서 방향을 바꿨다. 비즈렌즈는 입구와 화면만 새로 만들고, 두뇌는 그 코드를 그대로 이식했다.
판정은 두 층이다. 1차는 룰 엔진이 전 공고를 훑어 분류하고, 2차는 사용자가 공고를 클릭했을 때만 LLM이 원문을 읽어 가능 / 조건부 / 불가 / 정보부족을 근거·부족한 조건·필요 서류와 함께 내놓는다. 전부 LLM에 넣으면 비용과 속도가 낭비고, 전부 룰로만 하면 깊이가 없어서다. 실제로 키워드로는 1순위였던 공고를 AI 판정이 “식약처 인허가 의료기기 기업 요건 미충족 — 불가(확신도 95%)“로 걸러낸 일이 있었다. 사람이 제목만 보고 신청했다면 헛수고였을 것이다.
입찰 쪽은 공고문이 PDF나 HWPX로 붙어 있어 내려받아 분석한다. 단, 옛 HWP 바이너리는 자동 분석이 안 돼 그대로 안내한다. 나라장터 수집은 하루 두 번 배치로 돌고, 마감 지난 공고를 치우는 것도 배치 몫이다.
사업계획서 초안과 “지어내지 않는다"는 가드
판정이 가능이나 조건부로 나온 공고에만 사업계획서 초안 버튼이 열린다. 안 되는 공고에 힘쓰는 걸 막기 위해서다. 초안에서 내가 제일 신경 쓴 건 do_not_claim이라고 이름 붙인 원칙이다. 회사 정보에 없는 매출·실적·인증을 절대 지어내지 않는다. 비어 있는 항목은 본문에 [회사 확인 필요: 무엇]으로 표시하고, 확인 필요 목록을 따로 붙인다. AI가 그럴듯한 숫자를 채워 넣은 계획서가 그대로 제출되는 일을 막으려는 것이다.
같은 이유로 초안 이메일 발송에는 사람 검토 게이트를 뒀다. 허위 신청을 도와주는 도구가 되면 안 되니까. 이건 QA에서 리스크로 잡혀 지금까지 유지하고 있다.
무료로 시작하는 이유
비즈렌즈는 지금 요금 표기가 없다. 통신판매업 신고 전까지 결제·요금 표기를 전면 보류하기로 했고, 사업 페이지에도 “둘 다 무료로 시작합니다"라고만 적어 두었다. 나중에 유료로 갈 후보는 정해져 있다. 사업계획서 초안, 월간 전략 리포트, 마감 알림 같은 것들. 하지만 지금은 가격 대신 “관심 등록” 문만 열어 두고, 사람들이 어느 버튼을 실제로 누르는지 로그로 본다. 가격을 붙이기 전에 무엇이 돈을 낼 만한 기능인지 먼저 확인하려는 것이다.
지금 되는 것, 안 되는 것
되는 것: 사업자번호로 국세청 실시간 확인, 지원금 네 상태 분류, 나라장터 입찰 목록과 놓치기 쉬운 조건 카드, 공고별 AI 판정과 초안, 이메일 인증 회원. 최근에는 관심 조건(분야·지역·키워드·금액)을 저장해 두면 배치 후 새 공고를 감지해 알림함에 넣고 마감 3일 전 한 번 알려 주는 기능도 붙였다.
안 되는 것도 적어 둔다. 나라장터 낙찰 정보로 낙찰률·참여 수 통계를 보여 주는 화면은 코드를 다 만들었는데, 낙찰정보 API 활용 신청이 아직 승인되지 않아 실데이터가 0건이다. 법인 공시(DART) 자동 채움도 키 발급 전이라 스텁으로 돌아간다. 지원금 공고 수집기는 전신 프로젝트의 것을 그대로 쓰고 있어 비즈렌즈 자체 배치로 옮기는 일이 남아 있다. 공공데이터는 “신청하면 무료"지만 승인 대기와 호출 한도, 연속 호출 시 403 같은 운영 제약이 있다는 걸 만들고 나서 몸으로 알았다.
만들고 나서 남은 생각
정부지원사업은 정보가 숨겨져 있어서 못 받는 게 아니었다. 공고는 다 공개돼 있고, 데이터도 다 받을 수 있다. 어려운 건 그 공고의 조건 문장과 우리 회사의 실제 상태를 맞춰 보는 일이고, 그 일은 사람이 하면 하루가 가고 기계가 하면 “모른다"를 정직하게 남겨야 한다. 비즈렌즈가 하는 건 결국 그 대조를 대신하고, 모르는 건 모른다고 표시하고, 신청서에 거짓을 안 쓰게 막는 것까지다. 그 뒤의 결정은 여전히 사업자 본인의 것이다.
이 글은 제 여행 기록과 작업 로그를 바탕으로 초안을 AI와 함께 정리하고, 직접 편집했습니다.