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의 텍스트를 일괄 치환
- 회사명, 예산, 날짜, 지역명, 신용등급 등
새 입찰에 적용하는 방법
- RFP 파일(제안요청서, 과업지시서, 기본계획서) 확보
- RFP 분석하여
project.json업데이트 - 3개 스크립트 실행:
python gen_proposal.py && python gen_qualitative.py && python gen_presentation.py - 기본계획서를 분석하여 정성제안서의 [TODO] 섹션 채우기
- pyhwpx로 HWP 변환
기술 스택
- Python 3, pyhwpx (HWP 읽기/쓰기), python-pptx (PPT 조작)
- Windows + 한글 프로그램 필수 (pyhwpx 의존)
- GitHub: https://github.com/deka2026/sakyowon-ai