하루 만에 나라장터 입찰 모니터링 시스템 만들기

<Claude Code로 3개 기획 문서를 7,500줄 시스템으로>

## 배경

여행업을 하는 회사라면 나라장터(공공조달시스템)를 매일 들여다봐야 한다.

정부 기관의 해외연수, 벤치마킹, MICE 행사 같은 입찰공고가 쏟아지는데,

이걸 놓치면 수억 원짜리 사업 기회를 그냥 흘려보내는 것이다.

문제는 검색이다.

나라장터에서 원하는 공고를 찾으려면:

- "해외연수", "국외연수", "글로벌", "벤치마킹", "MICE"... 키워드를 하나씩 입력

- 업종(종합여행업/국내외여행업), 지역(전국/서울), 금액 기준으로 하나씩 판단

- 건질 만한 공고를 엑셀에 손으로 정리

이 과정을 매일 반복한다.

## 작업 시작점

보유하고 있던 자료는 Word 문서 3개였다.

| 문서 | 내용 |

| 나라장터 검색 정리.docx | 엑셀 출력 컬럼 구조, 판단 기준 |

| 나라장터 업무 자동화 관련.docx | 검색 흐름, 키워드 60개, 필터 기준 |

| 나라장터 입찰공고 모니터링 시스템.docx | Flask 구조, API 설계, 기능 목록 |

누군가 이미 "이런 시스템이 있으면 좋겠다"는 생각으로 문서까지 써뒀다.

남은 건 실제로 만드는 것.

## 어떻게 만들었나

### 1. 문서 분석

Claude Code에게 3개 파일을 읽히자 핵심 요구사항이 정리됐다.

- 검색 방법: 키워드 60개 일괄 / 6개 카테고리 분할 / 사용자 직접 입력

- 1차 필터: 업종코드 1261/1262, 지역 전국/서울, 업무구분 일반용역

- 2차 필터: 1인당 금액 기준 (아시아 200만원 / 미국 600만원 / 유럽 500~600만원)

- 출력: 웹 대시보드 + XLSX + JSON + 이메일 알림

### 2. 시스템 구현

g2b-bid-monitor 전문 에이전트가 구조 설계부터 코딩까지 진행했다.

g2b_monitor/

├── app.py              # Flask 서버 + 15개 API (636줄)

├── g2b_crawler.py      # Selenium 크롤러 (1,140줄)

├── data_processor.py   # 필터링 + SQLite (802줄)

├── email_notifier.py   # HTML 이메일 (435줄)

├── excel_exporter.py   # XLSX 4개 시트 (449줄)

├── config.py           # 전체 설정 (230줄)

├── templates/index.html  # 웹 대시보드 (497줄)

└── static/js/app.js    # 실시간 폴링 (947줄)

총 약 7,500줄, 13개 파일.

### 3. 동작 확인

```bash

python generate_test_data.py  # 더미 데이터 50건 생성

python app.py                 # 서버 기동

결과

→ DB 저장: 98건

→ 필터 통과: 78건 (79.6%)

→ 평균 추정가격: 1.43억원

localhost:5000 정상 동작

### 4. 갭 분석

구현이 끝나면 설계대로 됐는지 확인한다.

gap-detector 에이전트가 기획 문서 vs 실제 코드를 비교해서 리포트를 냈다.

결과: Match Rate 93%

발견된 문제:

1. 업종코드 필터가 설정 파일에만 있고 크롤러에 미적용 → Critical

2. 지역 필터도 같은 문제 → Critical

3. 방법1 키워드 54개 (요구사항은 60개 이상) → Low

### 5. 수정

Critical 2건을 바로 고쳤다.

g2b_crawler.py에 메서드 2개 추가:

```python

def setregion_filter(self):

    """참가제한지역 필터 — 여러 셀렉터 시도 + JS 폴백"""

def setindustry_code_filter(self):

    """업종코드 1261/1262 — 입력 필드 또는 select 시도"""

키워드도 54 → 61개로 보충.

## 결과물

| 항목 | 수치 |

| 구현 기간 | 하루 |

| 전체 코드 | ~7,500줄 |

| API 구현 | 15개 / 15개 (100%) |

| 설계 일치율 | 93% → 96%+ |

| 검색 키워드 | 61개 |

| 출력 컬럼 | 28개 (기본 18 + 추가 10) |

### 웹 대시보드 주요 기능

- 검색 방법 선택 (방법1 / 방법2 / 사용자 정의)

- 실시간 크롤링 진행률 표시

- 통계 (공고기관별, 키워드별, 금액 분포)

- 결과 테이블 (페이지네이션, 즉시 검색)

- XLSX / JSON 다운로드

- 이메일 알림 (새 공고 발견 시 자동 발송)

## 이 방식의 특징

### 문서 → 코드 직결

기획 문서가 있으면 요구사항 정리를 따로 하지 않아도 된다.

Word 파일을 그대로 입력으로 쓴다.

### 자동 검증

구현이 끝나면 갭 분석이 자동으로 돌아간다.

"이게 요구사항대로 됐나?" 를 사람이 하나씩 확인할 필요가 없다.

93%라는 숫자가 나오면 나머지 7%가 어디인지도 함께 나온다.

### 실용적인 코드

- 나라장터 자동화 감지 우회 (CDP 명령, user-agent 설정)

- 요청 간 랜덤 딜레이 (2~4초)

- 셀렉터 다중 폴백 + JavaScript 폴백

- 2단계 입찰(최저가) 자동 제외

- 금액 기준 국가별 차등 적용

## 다음 단계

이 시스템은 이미 동작하는 코드다. 실제 운영까지 남은 것:

1. Chrome WebDriver 설치 후 나라장터 실크롤링 테스트

2. Gmail 앱 비밀번호 입력 (이메일 알림 활성화)

3. Windows 스케줄러 또는 cron으로 매일 자동 실행 설정

기획 문서 3개에서 하루 만에 여기까지 왔다.

<최종 결과물>

한국어 한국어 한국어 한국어 한국어 스크린샷

<사용한 프롬프트>

나라장터(https://www.g2b.go.kr)에서 특정 키워드로 검색을 하고, 검색한 결과물을 일정 포멧으로 출력하는 작업을 자동화하고 싶어. 첨부된 파일을 참고해서 검토해줘. 아직 내가 검토 단계라 정리되지 않은 것이 많아. 네가 한번 검토해보고 더 좋은 대안이 있으면 제시해 주면 좋겠어.

1

지금 작업폴더 인식해줘

2

시작해줘

3

(선택지) docx 문서 분석 후 개발 시작

4

동작 확인하고 갭 분석까지 해줘

5

Critical 2건 수정 후 /pdca report 로 완료 보고서 생성해줘

6

오늘 작업한거 작업일지 작성하고, 사례 글 작성해줘

7

아카이브 해줘

8

시스템을 가동 시켜줘

9

지금까지 작업한 것을 버전관리하려면 어떻게 해야되?

10

해줘

11

GitHub 원격 저장소 연결 후 git push

12

https://github.com/shinhyun0000/g2b-project

13

github에서 public를 private로 바꾸려면 어떻게 해야되?

14

다음에 작업하려면 어떻게 해야되?

15

오늘 중단하고 다시 시작하여 프로그램을 보완하려면 어디서 부터 어떻게 시작해야되?

16

오늘 작업일지 추가로 보완해줘

17

내가 입력한 프롬프트만 뽑아서 정리해

## 앞으로 계획

- 시스템의 완벽한 이해 필요(AI가 만들어줘서 딸깍 만들어줘서 실질적인 구조 및 FLOW 이해 부족)

- 검색 키워드 및 검색 방식 개선 및 보완

- 출력 형태의 다양화

- 제안서 작성(장기 과제)

- 다른 사람이 사용가능하도록 보완(버전 관리 및 배포): 이 부분은 기초 지식이 없어 방법과 절차를 알려주시면 감사하겠습니다

작성일: 2026-03-28

4
2개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요