Skip to content

wlsrb9564/interview-simulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AI 기술 면접 시뮬레이터

채용공고 URL과 Notion 포트폴리오 URL을 입력하면,
JD 요구사항과 내 프로젝트 경험을 교차 분석해 포지션 맞춤 면접 질문을 생성하고
실시간으로 피드백을 스트리밍하는 면접 준비 도구입니다.

핵심 차별점 — PDF 업로드 없이 URL 2개만으로 자동 수집 + 교차 분석


스크린샷

홈 — JD · Notion URL 입력

홈 화면

면접 진행 — 실시간 피드백 스트리밍

면접 진행

이전 질문 리뷰 및 답변 수정

리뷰 모드

최종 리포트

리포트


주요 기능

  • JD 자동 분석 — Playwright로 채용공고 크롤링 후 Claude가 구조화 파싱
  • Notion 포트폴리오 연동 — Notion API 재귀 탐색으로 프로젝트 정보 자동 수집
  • 교차 분석 — JD 필수 스택 × 내 프로젝트 기술 매핑 → 맞춤 질문 생성
  • 실시간 피드백 스트리밍 — SSE 방식으로 피드백 타이핑 렌더링
  • 멀티턴 컨텍스트 — Redis에 최근 3턴 히스토리 유지 → 꼬리 질문 생성
  • 답변 재제출 — 이전 질문으로 돌아가 답변 수정 후 재평가
  • 리포트 캐싱 — 최초 생성 후 DB에 저장, 이후 즉시 반환

Tech Stack

Backend

분류 기술
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

Frontend

분류 기술
Framework Next.js 15 (App Router)
Language TypeScript
Styling Tailwind CSS
SSE fetch + ReadableStream

시작하기

사전 요구사항

  • Python 3.12+
  • Node.js 18+
  • Docker (PostgreSQL + Redis)

1. 저장소 클론

git clone https://github.com/wlsrb9564/interview-simulator.git
cd interview-simulator

2. 환경변수 설정

cp .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

3. DB + Redis 실행

docker compose up -d

docker-compose.yml에 PostgreSQL 16과 Redis 7이 정의되어 있어 별도 설정 없이 바로 실행됩니다.

4. 백엔드 실행

# 의존성 설치
uv sync

# DB 마이그레이션
uv run alembic upgrade head

# 서버 실행
uv run fastapi dev
# → http://localhost:8000/docs

5. 프론트엔드 실행

cd frontend
npm install
npm run dev
# → http://localhost:3000

API 엔드포인트

메서드 경로 설명
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

사용 방법

  1. Notion 포트폴리오 페이지를 외부 공유(Public) 또는 Integration 연결 상태로 설정
  2. 홈 화면에서 채용공고 URL + Notion URL 입력 후 분석 시작 (10~20초 소요)
  3. 생성된 질문에 답변 입력 → 실시간 피드백 확인
  4. 이전 질문으로 돌아가 답변 수정 가능
  5. 전체 면접 완료 후 리포트 확인

Notion 포트폴리오 구조 관련 주의사항

Notion 페이지 구조는 사용자마다 다를 수 있습니다.
app/services/notion_client.py에서 페이지 재귀 탐색 로직을 처리하며,
본인의 Notion 페이지 구조에 따라 해당 파일의 전처리 코드를 수정해야 할 수 있습니다.

현재 구현은 아래 구조를 기준으로 작성되어 있습니다:

[메인 포트폴리오 페이지]
├── 회사 프로젝트 (child_page)
│   └── 프로젝트명 (child_page)
└── 사이드 프로젝트 (child_page)
    └── 프로젝트명 (child_page)

개발 환경

Windows 11 기준으로 개발 및 테스트되었습니다.
macOS 환경에서는 테스트하지 않았으므로 동작을 보장하지 않습니다.


Built with Claude Code

About

AI interview simulator — auto-generates questions from JD URL & Notion portfolio with real-time streaming feedback (FastAPI + Claude)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors