프로젝트 소개
채용 지원자 관리 시스템(ATS) — 공고 등록부터 지원 접수, 단계별 심사·평가, 합불 통보까지
2026.08 ~ 2026.09 (4주, 실작업일 약 20일) · 개발팀 5명
해결하려는 문제
채용담당자가 공고를 올리고, 지원자가 외부 링크로 지원서·이력서를 제출하면, 담당자·면접관이 칸반 보드에서 단계별로 심사·평가하고, 단계 변경 시 지원자에게 메일이 자동 발송된다. 흩어져 있던 채용 과정(접수 → 서류 검토 → 면접 → 합불 통보)을 하나의 시스템으로 묶고, 모든 단계 이동에 이력과 평가 기록이 남게 한다.
주요 기능
지원자 칸반 보드
카드를 드래그해 단계 이동(지원 접수 → 서류 검토 → 면접 → 최종 합격/불합격). 모든 이동은 단계 이력으로 기록.
단계 변경 자동 메일
단계 이동 시 지원자에게 메일 자동 발송. SQS 큐 + 워커로 비동기 처리, 실패 시 재시도.
공고 관리 · 공개 지원 링크
채용 공고 등록·관리. 지원자는 로그인 없이 외부 공개 링크로 지원서를 제출.
이력서 S3 업로드
presigned URL로 브라우저에서 S3에 직접 업로드 — 파일이 API 서버를 거치지 않는다.
지원자 검색·필터
이름·학교·기술스택 검색과 필터. 더미 데이터 10만 건 기준으로 인덱스 튜닝.
평가 · 면접관 배정
면접관 배정, 단계별 점수·코멘트 평가 기록.
인증 · 권한
JWT 인증, 역할 3종(관리자 / 채용담당자 / 면접관).
기술 스택
아키텍처
React(Vercel) 프론트가 FastAPI(EC2 · Docker) API를 호출한다. 이력서는 presigned URL로 브라우저에서 S3에 직접 업로드하고, 단계 변경 메일은 SQS 큐에 넣어 워커가 SES로 비동기 발송·재시도한다. 배포는 GitHub Actions CI/CD.
ERD

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