Project Overview
This system is an AI agent-based HR interview and candidate intelligent analysis platform, supporting historical interview data import, name-based query, AI interviewer dialogue, intelligent resume scoring, and internal in-depth analysis.
Technical Architecture
| Layer | Technology |
|---|---|
| Frontend | Vue 3, Vite, Pinia, Axios |
| Backend | FastAPI, Uvicorn, SQLite |
| AI | DeepSeek / DashScope (Qwen) |
| Data Processing | Pandas, python-docx, PyPDF2 |
Core Features
Internal Personnel Portal
- Interview Record Query: Enter applicant name to view all historical interview records with that name
- Intelligent Resume Analysis: Upload resume files (doc/docx/pdf), supports four analysis modes:
- Standard Analysis: Structured analysis from matching degree, score, comments, questions, suggestions
- Position-Specific Analysis: Manual selection of position type for targeted analysis
- General Analysis Mode: Auto-identify position from filename, use corresponding profile
- Divergent Analysis: Free-form deep insights with Markdown table summary
- Deep Dialogue: In-depth interview follow-up based on analysis results
- Analysis Archive: Historical analysis results viewing and export (Excel, CSV, DOCX)
Candidate Portal
- AI interviewer dialogue interface
- Real-time interview progress feedback
Concurrent Processing
Use ThreadPoolExecutor for concurrent analysis of multiple resumes, thread lock ensures database write safety, SSE streaming returns real-time progress.
from concurrent.futures import ThreadPoolExecutor
import threading
executor = ThreadPoolExecutor(max_workers=4)
db_lock = threading.Lock()
async def analyze_batch(files):
futures = [executor.submit(analyze_single, f) for f in files]
for future in as_completed(futures):
yield future.result()Project Structure
HR/
├── frontend/ # Vue 3 frontend
│ ├── src/
│ └── package.json
├── backend/ # FastAPI backend
│ ├── app/
│ └── requirements.txt
└── data/ # SQLite data
Usage
# Start backend
cd backend && uvicorn app.main:app --reload
# Start frontend
cd frontend && npm run devCurrent Status
Production ready, continuously iterating and optimizing.
Related Links
Last updated: 2026-04-09