You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Implemented semantic matching between keywords / job requirements and resume sentences using the pre-trained sentence embedding model all-MiniLM-L6-v2.
Resume input is currently provided in plain text (TXT) format, which is manually converted from a DOC file prior to processing. The code itself does not include automatic document format conversion.
The resume text is split into sentence-level units and encoded using SentenceTransformer.
For each job requirement listed in jd_requirements.txt, cosine similarity is computed against all resume sentence embeddings.
The Top-K (currently Top-2) most relevant resume sentences are retrieved for each requirement and printed in the terminal along with similarity scores as matching evidence.
jd_skills.txt: keyword / skill list (currently reserved for future use)
Core implementation is located in resume_match/compare_resume.py.
Engineering and environment management completed:
A dedicated Conda virtual environment is used for Part 3 to avoid polluting the main environment
.gitignore added to exclude virtual environments and IDE configuration files
Resume text is used for local testing only and is not committed to the repository
⚠️ Known Limitations
Since the resume text is manually converted from DOC to TXT, structural information (e.g., section hierarchy) may be lost, causing some section headers (such as SKILLS or EXPERIENCE) to appear as candidate sentences during matching.
Matching results are currently displayed via terminal output only; no structured output (e.g., JSON) is generated to explicitly represent “marked” resume sentences.
The current Job Description (JD) input is also provided as a manually cleaned and pre-split TXT file, rather than being processed directly from raw JD text.
🔜 Next Steps (Part 3 Scope Only)
Extend resume input handling (CV reading module):
Support direct parsing of DOC / DOCX resume files without requiring manual conversion to TXT.
Support parsing of text-based PDF resumes (scanned PDFs are out of scope).
Encapsulate document format conversion (DOC/PDF → TXT) as a dedicated resume preprocessing step, decoupled from the semantic matching logic.
Improve resume text preprocessing:
Apply unified text cleaning and normalization after automatic document parsing.
Filter section headers, empty lines, and non-informative content.
Refine sentence segmentation so that matching candidates focus on descriptive work and project experience.
Add preprocessing support for raw Job Description (JD) text:
Allow direct input of raw JD text (e.g., copy-pasted job descriptions) instead of relying on manually prepared jd_requirements.txt.
Automatically clean and split JD text, including:
Removing non-requirement content such as company introductions and benefits
Converting JD text into keyword lists or requirement-level sentences suitable for semantic matching
Clearly separate the “JD text preprocessing” stage from the “JD–CV semantic matching” stage.
(Optional) Add structured output format:
Output matching results in a structured form (e.g., JSON) to explicitly represent identified/marked resume sentences and their corresponding similarity scores.
✅ Completed
jd_requirements.txt, cosine similarity is computed against all resume sentence embeddings.jd_requirements.txt: sentence-level job requirements (manually curated)jd_skills.txt: keyword / skill list (currently reserved for future use)resume_match/compare_resume.py..gitignoreadded to exclude virtual environments and IDE configuration files🔜 Next Steps (Part 3 Scope Only)
Extend resume input handling (CV reading module):
Improve resume text preprocessing:
Add preprocessing support for raw Job Description (JD) text:
jd_requirements.txt.(Optional) Add structured output format: