Skip to content

Part 3 – Current Progress Summary #1

Description

@RayZYunYan

✅ Completed

  • 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.
  • Input data files prepared:
    • jd_requirements.txt: sentence-level job requirements (manually curated)
    • 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions