Content
HR Multi-Agent Screening Platform
AI Agent project for HR initial screening scenarios. The system supports resume upload and parsing, RAG candidate knowledge base retrieval, multi-agent screening workflow, MCP-style tool calls, PostgreSQL + pgvector persistence, email notifications, Feishu daily reports, and operation history auditing.
## Highlights
- Vue3 + TypeScript + Element Plus frontend workstation.
- FastAPI backend, layered by resume, RAG, Agent Workflow, tool calls, and notification actions.
- TXT / PDF / DOCX resume upload and parsing, generating candidates and evidence chunks.
- RAG uses keyword + embedding similarity hybrid retrieval and displays recall explanations.
- PostgreSQL + pgvector saves candidates, resume chunks, and screening task history.
- Supervisor Agent orchestrates JD parsing, candidate retrieval, screening scoring, notification drafts, and Feishu daily reports.
- MCP-style tool registry uniformly records `resume_searchsend_email`, `send_fe`, and `llm_generate`.
- Independent MCP JSON-RPC adapter, exposing tools through stdio or interfaces.
- HR human-loop: email draft generation,, and Feishu daily report all written back to the same run audit chain.
- Built-in evaluation metrics: Recall@K@K, MRRfulness.
## Latest Update
### 2026-07-- Completed the core closed loop of the HR multi-agent screening platform upload and parsing, RAG candidate recall, multi-agent screening, email drafts, confirmation sending, Feishu, and historical auditing.
-SQL + pgvector,-RPC adapter, GitHub check script, and first.
- Complete history is availableRelease Notes](docs/releases/release-notes.md).
## Architecture
```mflowchart LR
["HR User"] --> FE3 Frontend"]
FE["FastAPI Backend"]
API --> WF["Screening Workflow WF --> JD["JDParser WF --> RAG["valAgent"]
WF["ScreeningAgent"]
NOTICE["NotificationAgent"]
WF --> REPORT["ReportAgent"]
--> PG["PostgreSQL + pgvector"]
TOOLS["MCP-style"]
TOOLS -->QQ Email SMTP"]
TO["Feishu Webhook"]
API --> LLM["DeepSeek API"]
```
## Local Setup
### 1. Start PostgreSQL + pgvector
Recommended to double-click:
```text
start_database.bat
```
Or manually execute:
```powershell
docker compose up -d```
Database connection:
```text
postgresql://postgres:123456@127.0.0.1:5433/hr_agent
```
The project uses `5433` to avoid conflicts with the locally installed PostgreSQL `5432`.
### 2. Start Backend
Recommended to double-click:
```text
start_backend```
Or manually execute:
cd backend
python - .venv
.\.venv\activate
pipr requirements.txt
copy .env.example .env
python -icorn app.main:app --127.0.0 --port 8010 --reload
```
### 3.
Recommended to double-clicktext
start_frontend.bat
```
Or manually execute:
```powershell
npm install
npm run --host localhost --port --strictPort
```
Access:
```text
Frontend: http://localhost:5199
Backend: http://127.0.0.1:8010
```
## Environment
Backend configuration file:
```text
backend/.env
```
Do not submit the real `.env`. GitHub only submits:
```text
backend/.env.example
```
Key configurations:
LLM_PROVIDER=deepseek
DEEP_API_KEY=yourseek_api_key
DEEPSEEK_BASE_URL=https.deepseek.com
DEEPSEEK_MODEL=deepseek-chatBEDDING_PROVIDER=deterministic
EMBEDDING_DIMENSIONS=DATABASE_URL=postgresql:123456@0.0.1:5433/hr_agent
SMTP_HOST.qq.com
SMTP_PORT=465
SMTP_USER=your.com
SMTP_PASSWORD=your_qq_email_authorization_code
your_email@qq.com
SMTP_TEST_TO=your_emailFEISHU_WEB_URL=https://open.feishuis/bot/v2/hook/your_token
_MB=15
```
## Pages
- Dashboard: Project capability overview.
- Resume Pool: Upload TXT / PDF / DOCX resumes, view candidates and evidence chunks.
- Screening: Run screening RAG evidence, historical runs, email/Feishu manual- Agent Workflow: View execution links.
- Notification Center draft preview and confirmation sending.
- Feishu Report: daily report preview and sending.
- MCP Tool Logs: Tool call logs.
- Evaluation Status: Integrated RAG evaluation metrics.
Data
Fictional is available in:
```text
docs/demo/demo_jd.txt/demo/resume_ai_agentdocs/demo/resume_backend.txt
```
You can resumes on the resume library page and then copy demo JD to run screening on the screening page.
## Useful APIs
```text
GETapi/health
GET /api/candidates
POST /umes/upload
GET /candidates/{candidate_id}/chunks
POST /api/agent/workflows/screening/run
GET /api/screening-runs
GET /api/screening-runs/{run_id}
POST /api/screening-runs/{run_id}/candidates/{candidate_id}/raft
POST /api/screening-runs/{run_id}/email-drafts/{draft_id}/approve-send
POST /api/screening-runs/{run_id}/feishu-report/send
GET /api/mcp/tool-calls
GET /api/mcp/tools
POST /api/mcp
GET /api/report
GET /tegrations/status
GET /embeddings/test
/api/llm```
## MCP Server
provides a lightweight MCP JSON adapter, reusing the backend tool registry.
stdio startup:
```powershell backend
.\.venv\Scripts\python.exe mcp_server.py
```
Supported methods:
```text
initialize
tools/list
tools/call
```
Current tools:
```text
resume_search
create_email_draft
approve_and_send_email
send_feishu_report
```
HTTP debugging:
```powershell
curl http://127.0.0.1:8010/api/mcp/tools
```
Call example:
```json
{
"nameresume_search",
": {
"query": "AI Agent R",
"top_k": 3
}
}
Verification
Backend testing:
cd backend
.\\Scripts\python.exe unittest discover -s testsBackend compilation check:
```cd backend
.\.venv\Scripts\python.exe -m\main.pyagents\workflow.py app\notification_actions.py app\repositories\candidate_repository.py appscreening_run_repository\rag\resume_knowledge_base.py app\schemas\domain```
Frontend build:
npm run build
```
## Before Publishing To GitHub the public readiness check```powershell
.\check.bat
```
Or:
python scripts/check_public
```
This checks required, `.gitignore` and obvious secret leaks.
first upload to GitHub [GitHub Upload Guide](docs/github-upload-guide.md by step.
Confirm not:
- `backend/. Root directory `.- DeepSeek API Key
- QQ email authorization code
- Feishu Webhook
- Real candidate resumes
- Real phone numbers, emails, company internal information
`.gitignore` has ignored` and `backend/.env`, but manual checks are still recommended before uploading.
## Resume Description
HR Multi-Agent Screening Platform recruitment screening system based on RAG and MCP tool calls.
and implemented a multi-agent platform for HR initial screening scenarios, supporting batch resume parsing, RAG candidate knowledge base retrieval, PostgreSQL + pgvector vector persistence, DeepSeek-driven JD/candidate analysis, multi-agent workflow orchestration, MCP-style tool calls, QQ email notifications, and Feishu daily report pushes. The system has built