Skip to content

Add deterministic ATS keyword-match endpoint for resumes #2268

Description

@vedant7007

Summary

The resume tooling has a Gemini-based /analyze endpoint, but it needs a PDF upload, calls an external API (rate-limited), and is non-deterministic. There's no quick, free way for a user to sanity-check "does my resume cover this job description?"

Proposal

Add POST /api/resume/ats-match — takes { resumeText, jobDescription } and returns a deterministic ATS-style keyword-overlap score (0–100) plus matched / missing keyword lists. No AI, no file upload — instant and free.

  • Keyword extraction is a pure helper (utils/atsKeywordMatch.js), unit-testable, and keeps tech tokens like c++, c#, node.js intact.
  • The JD drives the keyword set; matched = JD keywords present in the resume, missing = the rest.

Acceptance criteria

  • Authenticated POST /api/resume/ats-match returns { score, matched, missing, totalKeywords }
  • 400 on missing/blank inputs or oversized payloads
  • Deterministic (same inputs → same output), no external calls
  • Pure matcher covered by unit tests

Contributing as part of Elite Coders Summer of Code (ECSoC 2026).

Metadata

Metadata

Assignees

Labels

claimedThis issue has been claimed by a contributor

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions