1. 결과를 담을 빈 양식 만들기¶
자동화의 첫 발은 결과가 들어갈 빈 그릇을 먼저 만드는 것입니다. 캐치 폼이 어떻게 생겼는지 정리한 카탈로그를 만들고, 다음 단계에서 이미지가 처리되면 채워질 빈 엑셀과 HTML을 미리 만들어둡니다. 마지막에 가짜 데이터를 한 번 채워서 직접 열어 확인합니다.
이 단계의 목적
- 캐치 폼의 모든 항목을 정리한 카탈로그 만들기
- 결과가 채워질 빈 엑셀과 빈 HTML 두 양식 만들기
- 가짜 데이터를 한 번 채워서 직접 열어 확인 — 다음 단계에서 채워질 그릇이 어떻게 생겼는지 손에 잡히게
1-1. 카탈로그 정리¶
캐치 폼에 들어가는 모든 입력 항목을 프롬프트에 직접 나열해서 카탈로그를 만들어달라고 부탁합니다.
왜 이게 필요해요?
AI는 캐치 폼이 어떻게 생겼는지 모릅니다. 한 번 프롬프트로 정리해두면 이후 단계에서 계속 참조할 수 있는 카탈로그 파일이 생겨요. 본인 업무에 응용할 때도 "우리 업무에서 쓰는 양식은 이러이러해" 하고 나열하는 이 패턴이 그대로 쓰입니다.
AI에게 이렇게 말해보세요 — 카탈로그 정리
아래 내용을 바탕으로 backend/catalog.md 라는 파일을 만들어줘.
[공고 기본 설정]
- 공고제목 (자유 입력)
- 대표직무 (정해진 직무 트리에서 선택, 예: 빅데이터/AI > 머신러닝 엔지니어)
[모집부문] — 한 공고에 여러 개 가능
- 모집부문명 (자유 입력)
- 모집인원 (숫자)
- 경력여부 (신입 / 경력 / 경력무관, 복수 선택 가능)
- 담당업무 (자유 입력, 800자 이내)
- 근무지역 (주소, "재택근무 가능" 체크 옵션)
- 추가 항목:
- 필수/우대조건 — 전공/학과, 보유역량, 어학성적, 선호근무조건 등
(각 항목마다 "필수"인지 "우대"인지 표시)
- 직급/직책
- 근무부서
[자격조건]
- 학력: 드롭다운 (예: 대학교졸업(4년) 이상).
재학생 가능 / 졸업예정자 가능 체크 옵션
- 고용형태: 정규직 / 계약직 / 인턴 / 파견직 / 교육생 (복수 선택).
정규직은 수습기간(개월) 함께
- 급여: 연봉 / 월급 / 시급 드롭다운 + 금액 범위.
"주 40시간 이하 파트타임" / "회사내규에 따름" / "면접후 결정" 체크 옵션
- 근무시간 (선택)
[채용절차]
- 접수기간: 15일 / 1개월 / 2개월 / 직접입력 + 시작·종료 날짜·시간.
상시채용 / 채용시 마감 체크 옵션
- 공고 게재예약일: 공고등록 즉시 게재 / 직접입력
- 접수방법: 캐치 접수 / 홈페이지 접수 / E-mail 접수 / 우편 또는 방문 접수
(복수 선택)
- 전형단계: 서류전형 → 1차면접 → 2차면접 → … → 최종합격 처럼 순서대로 추가.
각 단계마다 전형유형: 서류 / 면접 / 인적성 / 레퍼런스 체크 / 기타
- 이력서: 캐치 이력서 / 자사 양식. 1분 영상자소서 필수 여부
- 자기소개서: 캐치자소서 / 자사 양식 / 자유 양식
- 추가 항목: 제출서류, 참고자료
[채용담당자/기업정보]
- 이름, 부서명, 전화번호, 이메일 (전화·이메일은 공고 노출 여부 체크)
- 추가 항목: 인담Q&A, 복리후생, 기타정보
[복리후생] — 카테고리별로 복수 선택
- 보상·수당: 휴일(특근)수당, 자격증수당, 보육수당, 우수사원포상, 인센티브제,
우리사주제도, 공무원연금, 장기근속자포상, 퇴직금 등
- 휴가·휴직: 연차, 경조휴가제, Refresh휴가, 휴가비지원, 육아휴직 등
- 사내시설: 수유실, 수면실 등
- 생활·건강: 각종 경조사 지원, 진료비지원(가족), 해외여행 지원 등
[기타정보] — 자유 입력, 500자 이내
- 기업 소개, 지원 시 유의사항, 전형단계 추가 안내사항 등
catalog.md 에는 다음이 정리돼야 해.
- 섹션별(공고기본 / 모집부문 / 자격조건 / 채용절차 / 담당자 / 복리후생 / 기타정보)
항목 목록 표
- 각 항목이 자유 입력인지 / 정해진 옵션 선택인지 / 카테고리에서 선택인지 /
반복 가능한지 표기
- 정해진 옵션이 있는 항목은 옵션 전부 나열
- 복리후생처럼 계층형 카테고리는 카테고리 트리로
- 카탈로그에 없는 입력이 들어왔을 때 어디로 보낼지(예: 기타정보 칸으로) 규칙
- 동의어 정규화 규칙 (예: "정직원" → "정규직")
- 한 공고에 여러 직군이 섞여 있으면 사업부문 단위로 모집부문을 분리하는 규칙
@data/sample_catch_html.html 도 함께 참고해줘.
이런 결과가 보이면 정상입니다
backend/catalog.md파일이 생겼습니다- 파일을 열어보면 섹션별로 항목 목록이 표로 정리돼있고, 정해진 옵션이 빠짐없이 나열돼있습니다

이상하면?
"복리후생 카테고리가 빠졌어", "옵션 중에 ○○가 누락됐어" 같이 내가 넘겨준 항목 목록과 비교해서 누락된 부분을 알려주세요. 카탈로그를 다듬어줄 겁니다.
1-2. 빈 양식 두 개 만들기 + 가짜 데이터로 확인¶
카탈로그가 만들어졌으면, 그 카탈로그를 바탕으로 결과가 들어갈 빈 엑셀과 빈 HTML을 만듭니다. 그리고 가짜 공고 한 건을 채워보고 직접 눈으로 확인합니다.
왜 가짜 데이터를 한 번 채워보나요?
빈 양식만 보면 "이게 잘 됐는지" 감이 잘 안 옵니다. 가짜 공고 한 건을 넣어서 양식이 어떻게 채워지는지 미리 보면, 다음 단계에서 진짜 공고가 채워질 결과의 모습이 손에 잡힙니다.
AI에게 이렇게 말해보세요 — 빈 양식 + 가짜 데이터로 확인
@backend/catalog.md @data/sample_catch_html.html 참고해서 만들어줘.
먼저 **빈 양식 3종** (위치는 전부 backend/templates/ 안):
1. `empty_form.xlsx` — 첫 줄에 카탈로그 항목을 제목으로 쭉 넣고,
**아래는 한 칸도 채우지 마**. 한 공고에 모집부문이 여러 개면
부문마다 한 줄로 늘어나는 구조.
2. `catch_preview.html.j2` — 색·선·섹션 톤은
@data/sample_catch_html.html 를 따라줘. 단 sample 은 모집부문
1개짜리 예시라, 실제론 한 공고에 **모집부문이 1~30개**까지
올 수 있어. 각 모집부문을 **카드 박스**(테두리·여백으로 서로
명확히 구분)로 그리고 `{% for d in posting.divisions %}...
{% endfor %}` 반복문으로 감싸서 N개가 자동 복제되게 해줘.
값 들어갈 자리엔 {{ posting.title }} 같은 자리표시자만.
진짜/가짜 글자 직접 써넣지 마.
3. `schema.py` — AI가 공고 뽑을 때 카탈로그 옵션대로만 쓰게 강제.
카탈로그에 없는 내용은 버리지 말고 "기타 보관함" 칸에 모아.
---
다음으로, 빈 양식은 그대로 두고 **가짜 공고(모집부문 3개 이상)** 를
지어내서 채운 예시를 `output/_preview/` 에 저장해줘:
- `output/_preview/empty_form.filled.xlsx`
- `output/_preview/catch_preview.html` (브라우저로 더블클릭해 확인)
3개 이상으로 지정한 이유: 템플릿이 N개 카드를 제대로 그리는지
이 단계에서 검증하려는 거야.
---
끝나면 두 가지만 확인해 알려줘:
- `empty_form.xlsx` 가 제목 줄만 있고 아래는 비어있는지
- `.html.j2` 에 가짜 글자가 섞여있진 않은지
깨끗하면 결과 파일 경로를 한 줄씩 알려줘.
이런 결과가 보이면 정상입니다
backend/templates/는 깨끗한 빈 양식만 —empty_form.xlsx는 열 제목만 + 데이터 행 0개,.html.j2는{{ ... }}자리표시자만 + 모집부문이{% for %}반복문으로 감싸져 있음output/_preview/catch_preview.html을 더블클릭하면 브라우저에 모집부문 3개가 각각 카드 박스로 명확히 구분돼 세로로 나열 (카드끼리 테두리·여백으로 분리)

이상하면?
- "HTML에 모집부문 데이터는 있는데 한 덩어리로 이어져 보여" → 각 모집부문을 카드 박스(테두리·여백)로 감싸고 간격 벌려서 N개가 독립 카드로 보이게
.html.j2수정 - "가짜 데이터 3개 넣었는데 HTML에 1개만 보여" → 템플릿에
{% for d in posting.divisions %}...{% endfor %}반복문이 빠졌을 거야. 반복문으로 감싸기 - "
empty_form.xlsx에 가짜 데이터가 박혀있어 /.html.j2에 가짜 글자가 박혀있어" →backend/templates/는 깨끗한 빈 틀만. 가짜 내용 다 지우고 자리표시자로 되돌린 뒤 채운 결과는output/_preview/로 따로 저장 - "엑셀에 카탈로그 항목이 빠졌어" → 카탈로그의 모든 항목이 열로 들어갔는지 재확인
체크포인트¶
-
backend/catalog.md가 만들어졌습니다 -
backend/templates/empty_form.xlsx가 있고, 열 제목만 있고 데이터 행이 0개입니다 (가짜 데이터 섞여있지 않음) -
backend/templates/안의.html.j2템플릿에{{ ... }}자리표시자만 있고 가짜 글자가 직접 박혀있지 않으며, 모집부문 부분이{% for %}반복문으로 감싸져 있습니다 -
output/_preview/안에 가짜 데이터로 채운empty_form.filled.xlsx(3행 이상)와catch_preview.html이 있습니다 -
output/_preview/catch_preview.html을 더블클릭했을 때 브라우저에 모집부문이 3개 이상의 카드로 각자 명확히 구분돼 나열되어 보입니다 (한 뭉치로 이어지지 않음)
다음 단계에서는 이 빈 양식에 진짜 이미지 공고 데이터를 채우는 모듈을 만듭니다.