40 lines
1.5 KiB
Markdown
40 lines
1.5 KiB
Markdown
# JD Match Feature
|
|
|
|
> **Shows how well a tailored resume matches the original job description.**
|
|
|
|
## Overview
|
|
|
|
The Resume Builder includes a "JD Match" tab that shows how well a tailored resume matches the original job description.
|
|
|
|
## How It Works
|
|
|
|
1. User tailors a resume against a job description
|
|
2. Opens the tailored resume in the Builder
|
|
3. "JD MATCH" tab appears (only for tailored resumes)
|
|
4. Shows side-by-side comparison:
|
|
- **Left panel**: Original job description (read-only)
|
|
- **Right panel**: Resume with matching keywords highlighted in yellow
|
|
|
|
## Features
|
|
|
|
- **Keyword extraction**: Extracts significant keywords from JD (filters common stop words)
|
|
- **Case-insensitive matching**: Matches keywords regardless of case
|
|
- **Match statistics**: Shows total keywords, matches found, and match percentage
|
|
- **Color-coded percentage**: Green (≥50%), yellow (≥30%), red (<30%)
|
|
|
|
## Key Files
|
|
|
|
| File | Purpose |
|
|
|------|---------|
|
|
| `apps/frontend/lib/utils/keyword-matcher.ts` | Keyword extraction and matching utilities |
|
|
| `apps/frontend/components/builder/jd-comparison-view.tsx` | Main split-view component |
|
|
| `apps/frontend/components/builder/jd-display.tsx` | Read-only JD display |
|
|
| `apps/frontend/components/builder/highlighted-resume-view.tsx` | Resume with keyword highlighting |
|
|
| `apps/backend/app/routers/resumes.py` | `GET /{resume_id}/job-description` endpoint |
|
|
|
|
## API Endpoint
|
|
|
|
| Endpoint | Description |
|
|
|----------|-------------|
|
|
| `GET /resumes/{resume_id}/job-description` | Fetch JD used to tailor a resume |
|