Sefism is free for learners. We are here to help you grow, one step at a time.Join for free
Sefism.
AI & ML

Explainable Resume and Job Description Matching

An explainable matching tool for job seekers and university career offices that compares a resume with a job description and shows which requirements are met, partially met or missing, with the evidence for each. Built for the candidate rather than the recruiter, this NLP final year project avoids the fairness problems of automated screening.

Difficulty

Intermediate

A small team, or one strong student willing to learn something new.
Effort

1 semester · 2 students

Deliverables

7 to ship

4 optional extras

Suggested stack

PythonFastAPIPostgreSQL with pgvectorSentence embeddingsAn LLM for requirement extractionNext.jspdfplumber for PDF text
A suggestion, not a requirement. Swap anything for what you already know.

What you should ship

  • A parser that extracts skills, experience entries, projects and education from text-based PDF and DOCX resumes, rejecting unsupported formats clearly
  • Requirement extraction from a pasted job description into must-have and nice-to-have items
  • A matching engine that labels each requirement met, partial or missing, and quotes the resume line used as evidence
  • A gap view with concrete suggestions: evidence already present that should be moved up, and genuine gaps to work on
  • A skill synonym and hierarchy table (for example Postgres, PostgreSQL, SQL) with its effect on matching measured
  • Evaluation against at least 50 resume and job description pairs labelled at the requirement level
  • A privacy design where resumes are processed without being stored unless the user opts in

If you have time left

  • Suggested rewording of existing bullet points to surface evidence already present, never inventing experience
  • Tracking several applications and showing which missing skills recur most often
  • A career-office view that aggregates anonymised gaps across a graduating class
  • Support for resumes in a second language

The problem candidates have when applying

Fresh graduates apply blind. They cannot tell whether they are close to a role or nowhere near it, rejections carry no explanation, and advice like "tailor your CV" is vague. Meanwhile automated screening on the employer side is opaque and has a record of unfair filtering. University career offices want to help students target applications but cannot sit with every student for every posting.

A useful tool answers one question honestly: for this job, which requirements does my resume already show evidence for, which are weak, and which are genuinely missing?

What already exists and the gap

  • Jobscan compares a resume with a job description and gives a match rate focused on keywords for applicant tracking systems.
  • Teal combines a job tracker with a resume builder and keyword matching.
  • Rezi is a resume builder with keyword targeting and scoring.
  • Recruiter-side screening is built into many applicant tracking systems.

Candidate tools mostly report a keyword score, which rewards stuffing and does not say why. Recruiter tools optimise for the employer. The gap is a requirement-level explanation with quoted evidence, which is also a clearer way to measure accuracy.

What you build

Users: a candidate who uploads a resume and pastes a job description, and optionally a career advisor who sees aggregate gaps.

Flow: upload, parse, extract requirements, match, and show the breakdown with evidence and suggestions. Nothing is stored by default.

Why the direction matters

Building this for recruiters means building an automated screening system, which raises serious fairness questions you cannot evaluate responsibly in a semester. Building it for candidates makes the same technology a transparency tool. Say this explicitly in your report; the ethical reasoning is part of the work.

The technically interesting part

The hard problem is explanation rather than scoring. A similarity number is easy and nearly useless. Attributing the match to specific requirements, and being right about which are actually evidenced, is the difficult and valuable part. "3 years of React" is not met by a single React course project; "experience with cloud deployment" may be met by a line about deploying to Vercel. Combine embeddings for candidate retrieval with an explicit judging step that must quote the resume line it relies on, and a synonym table so Postgres and PostgreSQL match.

How to evaluate it

  • Requirement-level labels: hand-label 50 pairs, each requirement as met, partial or missing. Report precision and recall per label, not correlation with an overall score.
  • False "met" rate: a tool that says a requirement is met when it is not is actively harmful. Report it separately and optimise for it.
  • Evidence validity: for every "met", check that the quoted line exists and supports it.
  • Parsing coverage: share of 30 real resumes (with consent) parsed correctly.
  • User test: 8 final-year students use it on real postings and say whether the suggestions changed what they submitted.

Suggested plan

  1. Weeks 1 to 2: collect consenting resumes and public job postings; write labelling guidelines.
  2. Weeks 3 to 5: resume parsing and requirement extraction.
  3. Weeks 6 to 8: matching engine with evidence quoting and synonym table.
  4. Weeks 9 to 10: gap view and suggestions.
  5. Weeks 11 to 13: labelling, evaluation and user test.
  6. Week 14: report and demo.

Path to a product

The first customer is a university career office, which can offer it to all final-year students under an annual licence and use the anonymised gap view to shape workshops. Individual candidates can use a free tier with limited checks. A second market is bootcamps and training institutes that want to show students exactly which skills a target role still needs.

Scope warning

  • Resume parsing is a swamp. Support text-based PDF and DOCX well and reject scans and unusual layouts cleanly.
  • Do not build a recruiter screening or ranking feature.
  • Do not generate fake experience or keyword-stuffed text.
  • Do not store resumes by default; they are personal data.

Learn what you need on Sefism

Get help with this idea

The value of this project is in requirement-level labels and a low false "met" rate. Tauseef can help you write labelling guidelines, scope the parser and plan a user test with final-year students. If you are new here, create a free account first.

Ideas and guidance, not finished projects

These are project ideas and scoping guidance, published free for students to use as a starting point. I do not build, write, or sell final-year projects, and I do not complete coursework for anyone. Take an idea, make it yours, and build it.

Not sure this one fits you?

I help students pick an idea that matches their skills and their deadline, then scope it down until it is finishable. Guidance only, never done for you.

Discuss this idea
Work with me

Stuck on something specific?

Writing only gets you so far. If you want an answer to your situation rather than the general case, book a session and we will work through it together. Sessions are free for approved Sefism members, and a few slots open each week.