M6 — 나라장터 입찰용 제안서 자동 생성

왜 만들었나

협상에 의한 계약 방식의 나라장터 입찰에서는 매 건마다 정량제안서 + 정성제안서 + 발표자료 3종을 작성해야 한다. 회사 정보와 사업 정보를 JSON으로 분리하고, Python 스크립트로 문서를 자동 생성하는 파이프라인을 구축했다.

아키텍처

company.json  ─┐
               ├─→ gen_proposal.py      → 정량제안서 (.txt / .hwp)
project.json  ─┤─→ gen_qualitative.py   → 정성제안서 (.txt / .hwp)
               └─→ gen_presentation.py  → PPT 발표자료 (.pptx)

company.json

  • 회사명, 대표자, 설립일, 신용등급
  • 참여인력 6명 (성명, 학력, 전공, 경력, 용역실적)
  • 용역수행실적 4건 (누적 138,000만원)
  • 입찰참가제한·업무정지·사회적책임 감점 정보

project.json

  • 사업명, 발주처, 사업기간, 총예산
  • 생활권 정보 (1차/2차)
  • 3대 핵심사업 (세부사업, 예산, 핵심KPI)
  • SWOT 분석 (강점/약점/기회/위협 각 5개)

스크립트별 역할

gen_proposal.py — 정량제안서

  • 평가항목별 점수 자동 산출 (20점 만점 중 16.8점)
  • 실적, 경영상태, 기술인력, 신인도 등 정량 평가 반영

gen_qualitative.py — 정성제안서

  • 4개 대분류 (제안개요, 일반현황, 추진계획, 지원사항)
  • SWOT, 인력현황, 실적 자동 채움
  • 전략·방법론·세부사업 계획은 [TODO] 마커로 표시
  • 기본계획서 분석 후 [TODO]를 채우는 2단계 워크플로우

gen_presentation.py — PPT 발표자료

  • python-pptx로 템플릿 PPTX의 텍스트를 일괄 치환
  • 회사명, 예산, 날짜, 지역명, 신용등급 등

새 입찰에 적용하는 방법

  1. RFP 파일(제안요청서, 과업지시서, 기본계획서) 확보
  2. RFP 분석하여 project.json 업데이트
  3. 3개 스크립트 실행: python gen_proposal.py && python gen_qualitative.py && python gen_presentation.py
  4. 기본계획서를 분석하여 정성제안서의 [TODO] 섹션 채우기
  5. pyhwpx로 HWP 변환

기술 스택