현대 사회에서 취업 준비는 반복적이고 시간 소모적인 과정으로, 구직자가 자신의 역량을 효과적으로 어필하지 못해 기회를 놓치는 경우가 많습니다. 이를 해결하기 위해 JobPT는 LLM 기반 채용 공고 추천, 기업 맞춤형 이력서 ��드백, 회사 정보 요약 제공, 이력서 적합성 평가등의 기능을 갖춘 '지능형 취업 지원 서비스'를 제공합니다.
-
LLM 기반 개인 이력서 맞춤형 채용 공고 매칭
- 제공받은 이력서를 RAG를 활용해 각 회사의 채용 공고와 의미론적 유사도를 기반으로 적합한 회사를 추천합니다.
-
기업 맞춤형 이력서 피드백
- 유저와의 대화를 통해 평가-개선-재평가 프로세스를 거치며 이력서를 반복적으로 개선합니다.
- Multi-turn을 활용해 챗봇 인터페이스에서 유저에게 개선점을 제공하며, 이력서에 곧바로 반영합니다. (기능 반영 예정)
-
회사 정보 요약 제공
- AI Agent를 통해 원하는 회사 또는 추천된 JD의 회사와 관련된 최신 정보를 요약해 제공합니다.
- 산업 및 도메인, 경쟁력, 주요 서비스, 인재상, 사내 문화, 추진 중인 프로젝트 및 이니셔티브 등에 대한 메타 데이터를 요약합니다.
-
이력서 적합성 평가 및 구체적 개선점 제안
- 이력서 검토 시스템은 특정 JD에 맞춰 이력서를 분석하여 지원자 추적 시스템(ATS)이 이를 어떻게 평가할지 시뮬레이션합니다.
- 또한, 각 이력서를 해당 직무에 최적화할 수 있도록 상세한 피드백과 개선 제안도 제공합니다. 이 분석기는 각 직무 설명을 세밀하게 분석하여, 이력서가 해당 직무에 얼마나 잘 부합하는지 가장 정확하게 평가할 수 있도록 설계되었습니다.
- 크롤링 API: 여러 회사 JD 데이터 확보 및 마감된 채용 공고 삭제
- PDF 파싱: Upstage Parser를 이용한 다양한 형태의 이력서 PDF 텍스트 추출
- Vector DB: Pinecone에 Job description(JD) 텍스트 Chunk 저장 및 JD Retrieval
- AI Agent
- supervisor agent를 두어 멀티 agent로 파이프라인 구성
- 회사 메타 데이터 정보 수집 및 요약 (Tavily Search MCP 사용)
- 수정 제안 agent (유저의 웹 포트폴리오 탐색 MCP)
- LLM Model
- 이력서 적합성 평가
- Language: Python, Typescript
- LLM Framework
- LangChain
- Langgraph
- OpenAI (text-embedding-3-small, gpt-4o, gpt-4o-mini, gpt-4.1-nano)
- Backend
- Web Framework: FastAPI
- Vector Database: Pinecone
- Monitoring: Langfuse
-
프로젝트 루트 디렉토리에
.env.example파일을 참고하여.env파일을 생성하고 API 키 및 환경 변수를 설정합니다.FRONTEND_CORS_ORIGIN: CORS 정책을 적용할 프론트엔드 주소를 입력합니다. (e.g.,http://localhost:3000)NODE_ENV: 프론트엔드NODE_ENV환경을 설정합니다. (development또는production)
-
(Optional) 로컬 환경에서 직접 실행할 경우, 각 서비스의
requirements.txt또는package.json을 참고하여 의존성을 설치합니다.
프로젝트 루트 디렉토리에서 다음 명령어를 실행하여 Docker Compose로 전체 서비스를 실행합니다.
docker compose up [-d] [--build]로컬 개발 환경에서는 docker-compose.dev.yml을 사용합니다.
이 구성은 Frontend / Backend / MySQL을 포함하며 개발용 데이터는 dev_data/에 저장됩니다.
docker compose -f docker-compose.dev.yml up --build- MySQL 데이터:
dev_data/jobpt_mysql - 업로드된 이력서:
dev_data/jobpt_resumes - Backend 데이터:
dev_data/jobpt_data
dev_data/디렉토리는 Git에 포함되지 않으며(.gitignore), 로컬 개발 전용입니다.
API 호출 예시 (api_test.py 참조)
import requests
# POST 요청 함수
def send_post_request(resume_path):
url = "http://localhost:8000/matching" # 실제 API 엔드포인트로 변경하세요.
data = {"resume_path": resume_path}
try:
response = requests.post(url, json=data)
response.raise_for_status() # 상태 코드가 200번대가 아니면 예외 발생
print("POST 요청 성공:", response.json())
except requests.exceptions.RequestException as e:
print("POST 요청 중 오류 발생:", e)
# 함수 호출 예시
send_post_request("data/joannadrummond-cv.pdf")
이 프로젝트는 안정적인 배포와 유연한 개발을 위해 다음과 같은 Git 브랜치 전략을 사용합니다.
| 브랜치 | 역할 | 비고 |
|---|---|---|
main |
운영(Production) | 실제 배포된 안정 버전 |
dev |
개발(Development) | 기능 통합 및 테스트 |
feat/* |
기능 개발(Feature) | 새 기능 단위 개발 |
hotfix/* |
긴급 수정(Hotfix) | 운영 중 빠른 버그 수정 |
모든 코드 변경은 Pull Request(PR)를 통해 제출해야 합니다. main과 dev 브랜치는 보호되어 있어 직접 Push가 불가능합니다.
자세한 개발 및 브랜치 운영 가이드는 CONTRIBUTING.md에서 확인할 수 있습니다.






