원티드랩 신규 입사자의 3개월 온보딩 경험을 AI 챗봇과의 대화를 통해 수집하고 분석하는 시스템입니다. 자연스러운 대화형 인터페이스로 피드백을 받아 분석 리포트를 자동 생성하고 이메일로 발송합니다. 피플팀이 신입 사원의 온보딩 경험을 체계적으로 파악하고 개선점을 도출하는 데 활용됩니다.
chatbot-onboarding/
├── main.py # Streamlit 애플리케이션 진입점
├── pyproject.toml # Python 프로젝트 의존성 관리
├── Makefile # 프로젝트 실행 명령어 모음
├── .env # 환경변수 (API 키, 이메일 설정)
├── .env.example # 환경변수 예시 파일
│
├── src/
│ ├── app.py # 챗봇 핵심 로직 (OnboardingChatbot 클래스)
│ ├── config.py # 설정 파일 로더
│ ├── report_generator.py # 분석 리포트 HTML 생성
│ ├── conversation_exporter.py # 대화 내역 HTML 생성
│ ├── email_sender.py # 리포트 생성 및 이메일 발송 오케스트레이션
│ │
│ ├── ui/
│ │ ├── intro_page.py # 시작 페이지 (이름/이메일 입력)
│ │ └── chat_page.py # 채팅 인터페이스 페이지
│ │
│ └── utils/
│ ├── email_service.py # SMTP 이메일 발송 서비스
│ ├── emotion.py # 감정 분석 (GPT-4 기반)
│ └── logger.py # 로깅 설정
│
├── config/
│ ├── questions.json # 설문 질문 정의 (11개 질문)
│ ├── llm_config.json # LLM 모델 설정 (GPT-4o)
│ ├── system_prompt.md # 챗봇 페르소나 및 대화 규칙
│ └── report_analysis_prompt.md # 리포트 분석 프롬프트
│
├── data/
│ ├── reports/ # 생성된 HTML 리포트 저장소
│ └── responses/ # 사용자 응답 JSON 저장소
│
└── assets/
└── images/ # Wanted 로고 및 이미지
| 파일 | 역할 |
|---|---|
src/app.py |
챗봇 대화 흐름 관리, 질문 순서 제어, 응답 검증 |
src/report_generator.py |
GPT-4로 대화 분석 후 HTML 리포트 생성 |
src/email_sender.py |
리포트/대화 HTML 생성 → 이메일 발송 통합 관리 |
src/utils/email_service.py |
Gmail SMTP를 통한 이메일 전송 |
config/system_prompt.md |
챗봇의 성격, 대화 스타일, 질문 방식 정의 |
config/report_analysis_prompt.md |
리포트 분석 기준 및 형식 정의 |
| 라이브러리 | 버전 | 용도 |
|---|---|---|
| langchain | >=0.1.0 | LLM 오케스트레이션 프레임워크 |
| langchain-openai | >=0.1.0 | OpenAI GPT-4 통합 (ChatOpenAI 클래스) |
| streamlit | >=1.28.0 | 웹 기반 대화형 UI 프레임워크 |
| python-dotenv | >=1.0.0 | 환경변수 관리 (.env 파일) |
| pydantic | >=2.0.0 | LangChain 내부 데이터 검증용 (의존성) |
| markdown | >=3.5.0 | 마크다운 텍스트 처리 |
| 도구 | 용도 |
|---|---|
| black | 코드 자동 포맷팅 |
| ruff | 린팅 및 코드 스타일 검사 |
- Python 3.11 이상
- UV 패키지 매니저 (권장)
- OpenAI API 키 (GPT-4o 접근 권한)
- Gmail 계정 (이메일 발송용)
curl -LsSf https://astral.sh/uv/install.sh | sh# 프로젝트 클론
git clone <repository-url>
cd chatbot-onboarding
# 의존성 설치
make install
# 또는
uv sync# .env.example을 복사하여 .env 파일 생성
cp .env.example .env.env 파일 예시:
# OpenAI API Configuration
OPENAI_API_KEY=sk-proj-xxxxxxxxxxxxx # 실제 OpenAI API 키 입력
OPENAI_MODEL=gpt-4o
# Application Settings
DEBUG=false
LOG_LEVEL=INFO
# Email Configuration
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USE_TLS=true
EMAIL_SENDER=yourname@wantedlab.com # 발송자 Gmail 주소
EMAIL_PASSWORD=abcd1234efgh5678 # Gmail 앱 비밀번호 (16자리)
EMAIL_RECIPIENTS=peopleteam@wantedlab.com,hr@wantedlab.com # 수신자 (쉼표 구분)make run
# 또는
uv run streamlit run main.pymake dev
# 또는
uv run streamlit run main.py --logger.level=debugmake help # 사용 가능한 명령어 확인
make clean # 캐시 및 임시 파일 정리
make lint # 코드 스타일 검사
make format # 코드 자동 포맷팅API 키 발급:
- OpenAI Platform 접속
- API Keys 메뉴에서 새 키 생성
- 생성된 키를
.env파일의OPENAI_API_KEY에 입력
주의사항:
- API 키는 절대 코드에 하드코딩하지 않기
.env파일은.gitignore에 포함되어 있어 Git에 업로드되지 않음- GPT-4o 모델 접근 권한 필요
파일 위치: config/system_prompt.md
챗봇의 성격, 대화 스타일, 질문 방식을 정의합니다.
수정 가능한 항목:
- 챗봇 페르소나 (친근함, 전문성 수준)
- 금지 행동 (개인정보 수집, 부적절한 주제)
- 대화 규칙 (질문 순서, 재질문 조건)
- 마무리 멘트
예시:
## 역할 (Role)
당신은 원티드랩 피플팀 소속의 친근하고 따뜻한 AI 챗봇입니다.
신규 입사자의 3개월 온보딩 경험에 대해 자연스럽게 대화하며 피드백을 수집합니다.
...파일 위치: config/report_analysis_prompt.md
GPT-4가 대화 내용을 분석하여 리포트를 생성할 때 사용하는 지침입니다.
수정 가능한 항목:
- 분석 기준 (점수 부여 로직)
- 리포트 섹션 구성
- 평가 항목 (업무 적합도, 조직문화 적응도 등)
- 마크다운 형식 규칙
예시:
## 중요 원칙
1. **의미 없는 답변**이 많은 경우 → 각 항목 **20-40점 범위**
2. **구체적 사례 없이 일반적 표현**만 사용한 경우 → **40-55점 범위**
3. **구체적 사례 1-2개 + 긍정적 태도** → **55-70점 범위**
...파일 위치: config/questions.json
챗봇이 순서대로 질문할 내용을 정의합니다.
JSON 구조:
{
"survey_questions": [
{
"id": 1,
"question": "지난 3개월 간의 원티드 생활을 돌아봤을 때, 가장 먼저 떠오르는 단어나 표현을 자유롭게 말해 주세요."
},
{
"id": 2,
"question": "입사 후 3개월의 온보딩 기간동안 가장 기억에 남는 경험이나 에피소드를 들려주세요."
},
{
"id": 11,
"question": "전체적으로 피플팀 주관 온보딩 프로그램의 만족도를 알려주세요. (1~10점)",
"scale": {
"min": 1,
"max": 10,
"labels": ["매우 불만족", "불만족", "보통", "만족", "매우 만족"]
}
}
]
}주의사항:
id는 1부터 순차적으로 증가- 점수 기반 질문에는
scale객체 추가 가능 (min, max, labels) - 질문 개수 변경 시
src/app.py의meaningful_answers_count로직도 확인 필요
.pem 파일은 팀 내 공유 채널에서 수령 후 ~/.ssh/ 디렉토리에 보관하는 것을 권장합니다.
Mac / Linux
chmod 400 ~/.ssh/Wanted-Onboarding-Chatbot.pem
ssh -i ~/.ssh/Wanted-Onboarding-Chatbot.pem ubuntu@10.190.80.88Windows (PowerShell)
# 권한 설정 (최초 1회)
icacls $env:USERPROFILE\.ssh\Wanted-Onboarding-Chatbot.pem /inheritance:r /grant:r "$($env:USERNAME):(R)"
ssh -i $env:USERPROFILE\.ssh\Wanted-Onboarding-Chatbot.pem ubuntu@10.190.80.88Windows에서 OpenSSH가 없다면 설정 > 앱 > 선택적 기능에서 OpenSSH 클라이언트를 설치하세요.
cd onboarding-chatbot
git pull
uv sync# 기존 프로세스 종료
pkill -f streamlit
# 백그라운드 재실행
nohup streamlit run main.py --server.port 8501 > app.log 2>&1 &
# 실행 확인
ps aux | grep streamlit# 실시간 전체 로그
tail -f logs/app_$(date +%Y%m%d).log