채용 지원자 관리 시스템(ATS) — 공고 등록부터 지원 접수, 단계별 심사·평가, 합불 통보까지

2026.08 ~ 2026.09 (4주, 실작업일 약 20일) · 개발팀 5명

해결하려는 문제

채용담당자가 공고를 올리고, 지원자가 외부 링크로 지원서·이력서를 제출하면, 담당자·면접관이 칸반 보드에서 단계별로 심사·평가하고, 단계 변경 시 지원자에게 메일이 자동 발송된다. 흩어져 있던 채용 과정(접수 → 서류 검토 → 면접 → 합불 통보)을 하나의 시스템으로 묶고, 모든 단계 이동에 이력과 평가 기록이 남게 한다.

주요 기능

지원자 칸반 보드

카드를 드래그해 단계 이동(지원 접수 → 서류 검토 → 면접 → 최종 합격/불합격). 모든 이동은 단계 이력으로 기록.

단계 변경 자동 메일

단계 이동 시 지원자에게 메일 자동 발송. SQS 큐 + 워커로 비동기 처리, 실패 시 재시도.

공고 관리 · 공개 지원 링크

채용 공고 등록·관리. 지원자는 로그인 없이 외부 공개 링크로 지원서를 제출.

이력서 S3 업로드

presigned URL로 브라우저에서 S3에 직접 업로드 — 파일이 API 서버를 거치지 않는다.

지원자 검색·필터

이름·학교·기술스택 검색과 필터. 더미 데이터 10만 건 기준으로 인덱스 튜닝.

평가 · 면접관 배정

면접관 배정, 단계별 점수·코멘트 평가 기록.

인증 · 권한

JWT 인증, 역할 3종(관리자 / 채용담당자 / 면접관).

기술 스택

백엔드 PythonFastAPIPostgreSQL
프론트엔드 ReactViteTypeScript
인프라 DockerAWS (EC2 · S3 · SES · SQS)GitHub ActionsVercel
AI (여유 시 범위) 이력서 구조화 추출 — 합불 확정은 항상 사람 (ADR-0003)

아키텍처

아키텍처 다이어그램

React(Vercel) 프론트가 FastAPI(EC2 · Docker) API를 호출한다. 이력서는 presigned URL로 브라우저에서 S3에 직접 업로드하고, 단계 변경 메일은 SQS 큐에 넣어 워커가 SES로 비동기 발송·재시도한다. 배포는 GitHub Actions CI/CD.

ERD

ERD

지원서(applications)를 축으로 한 9개 테이블 — 공고(job_postings)·내부 사용자(users)와, 단계 이력·평가·담당자 메모·이력서 파일·메일 발송 로그·면접관 배정.

스크린샷

지원자 칸반 보드 (동작 프로토타입) — 드래그로 단계 이동, 단계별 인원 현황·검색 필터
지원자 칸반 보드 (동작 프로토타입) — 드래그로 단계 이동, 단계별 인원 현황·검색 필터
모바일 (동작 프로토타입) — 단계 탭 + 리스트 뷰, 공개 지원 폼(S3 직접 업로드 진행률)
모바일 (동작 프로토타입) — 단계 탭 + 리스트 뷰, 공개 지원 폼(S3 직접 업로드 진행률)