채용공고 URL과 Notion 포트폴리오 URL을 입력하면,
JD 요구사항과 내 프로젝트 경험을 교차 분석해 포지션 맞춤 면접 질문을 생성하고
실시간으로 피드백을 스트리밍하는 면접 준비 도구입니다.
핵심 차별점 — PDF 업로드 없이 URL 2개만으로 자동 수집 + 교차 분석
- JD 자동 분석 — Playwright로 채용공고 크롤링 후 Claude가 구조화 파싱
- Notion 포트폴리오 연동 — Notion API 재귀 탐색으로 프로젝트 정보 자동 수집
- 교차 분석 — JD 필수 스택 × 내 프로젝트 기술 매핑 → 맞춤 질문 생성
- 실시간 피드백 스트리밍 — SSE 방식으로 피드백 타이핑 렌더링
- 멀티턴 컨텍스트 — Redis에 최근 3턴 히스토리 유지 → 꼬리 질문 생성
- 답변 재제출 — 이전 질문으로 돌아가 답변 수정 후 재평가
- 리포트 캐싱 — 최초 생성 후 DB에 저장, 이후 즉시 반환
| 분류 | 기술 |
|---|---|
| Language | Python 3.12 |
| Framework | FastAPI + Uvicorn |
| AI | Anthropic SDK (claude-haiku-4-5-20251001) |
| DB | PostgreSQL (SQLAlchemy 2.0 async) |
| Cache | Redis (멀티턴 컨텍스트, TTL 2시간) |
| 크롤링 | Playwright |
| 외부 API | Notion API |
| Migration | Alembic |
| Package Manager | uv |
| 분류 | 기술 |
|---|---|
| Framework | Next.js 15 (App Router) |
| Language | TypeScript |
| Styling | Tailwind CSS |
| SSE | fetch + ReadableStream |
- Python 3.12+
- Node.js 18+
- Docker (PostgreSQL + Redis)
git clone https://github.com/wlsrb9564/interview-simulator.git
cd interview-simulatorcp .env.example .env.env 파일에 아래 값을 채워주세요:
ANTHROPIC_API_KEY=your_key
NOTION_API_KEY=your_key
DATABASE_URL=postgresql+asyncpg://interview:interview@localhost/interview_db
REDIS_URL=redis://localhost:6379
docker compose up -ddocker-compose.yml에 PostgreSQL 16과 Redis 7이 정의되어 있어 별도 설정 없이 바로 실행됩니다.
# 의존성 설치
uv sync
# DB 마이그레이션
uv run alembic upgrade head
# 서버 실행
uv run fastapi dev
# → http://localhost:8000/docscd frontend
npm install
npm run dev
# → http://localhost:3000| 메서드 | 경로 | 설명 |
|---|---|---|
POST |
/session/create |
세션 생성 (JD + Notion 분석) |
GET |
/session/list |
전체 세션 목록 |
GET |
/session/{id} |
세션 상세 조회 |
DELETE |
/session/{id} |
세션 삭제 |
GET |
/session/{id}/question |
다음 질문 반환 |
POST |
/session/{id}/answer |
답변 제출 → SSE 피드백 |
PUT |
/session/{id}/answer/{n} |
이전 답변 재제출 → SSE 피드백 |
GET |
/session/{id}/report |
최종 리포트 (DB 캐시 우선) |
Swagger UI:
http://localhost:8000/docs
interview-simulator/
├── app/
│ ├── api/ # FastAPI 라우터
│ ├── services/ # JD 파서, Notion 클라이언트, Analyzer, Interviewer
│ ├── models/ # SQLAlchemy 모델 + Pydantic 스키마
│ └── core/ # 설정, DB 커넥션 풀
├── frontend/ # Next.js 앱
├── alembic/ # DB 마이그레이션
└── docker-compose.yml
- Notion 포트폴리오 페이지를 외부 공유(Public) 또는 Integration 연결 상태로 설정
- 홈 화면에서 채용공고 URL + Notion URL 입력 후 분석 시작 (10~20초 소요)
- 생성된 질문에 답변 입력 → 실시간 피드백 확인
- 이전 질문으로 돌아가 답변 수정 가능
- 전체 면접 완료 후 리포트 확인
Notion 페이지 구조는 사용자마다 다를 수 있습니다.
app/services/notion_client.py에서 페이지 재귀 탐색 로직을 처리하며,
본인의 Notion 페이지 구조에 따라 해당 파일의 전처리 코드를 수정해야 할 수 있습니다.
현재 구현은 아래 구조를 기준으로 작성되어 있습니다:
[메인 포트폴리오 페이지]
├── 회사 프로젝트 (child_page)
│ └── 프로젝트명 (child_page)
└── 사이드 프로젝트 (child_page)
└── 프로젝트명 (child_page)
Windows 11 기준으로 개발 및 테스트되었습니다.
macOS 환경에서는 테스트하지 않았으므로 동작을 보장하지 않습니다.
Built with Claude Code



