• Private
  • Internship
  • CRNS
  • Jun – Aug 2025

JobMatch: LLM-assisted candidate pre-selection

100 % local

fine-tuned Mistral-7B · no CV leaves the machine

Built with Atta Allah Hilali · supervised by Mme Sonda Ammar (CRNS)

The problem

JobMatch: LLM-assisted candidate pre-selection · before

  • Read by hand

    IT offers attract a flood of CVs that recruiters still read by hand.

  • Every CV differs

    Every CV has its own layout, and the same skill is phrased ten ways.

  • Keywords miss

    Keyword filters miss implicit skills and reward whoever copies the offer's wording.

The goal

JobMatch: LLM-assisted candidate pre-selection · after

  • Extract and compare

    Extract the key facts from each CV and compare them with the offer.

  • An explained score

    A relevance score with a readable justification.

  • Fair and in-house

    Less bias, and candidate data kept in-house.

How it works

JobMatch: LLM-assisted candidate pre-selection

CVs are turned into clean text, a local fine-tuned LLM extracts a structured profile, embeddings rank each profile against the offer by semantic similarity, the LLM explains the score, and a Streamlit interface ranks candidates. The components talk through an MCP architecture.

CVsPDF / DOCX Text + cleaning LLM parsing Embeddings match+ score Ranking UI Job offer Mistral-7Bfine-tunedlocal
  1. Step 1 of 4 CVs arrive as PDF or DOCX; the text is extracted, cleaned, and anonymised to limit bias.
  2. Step 2 of 4 A fine-tuned, quantised Mistral-7B, running locally, turns each CV into a structured profile.
  3. Step 3 of 4 Embeddings match the profile to the offer, and the model explains present and missing skills.
  4. Step 4 of 4 A Streamlit interface ranks candidates, shows the evidence, and exports the results.

Next project

~4,000 TUT'ECT: early detection of Tuta absoluta ← Previous: Generative Engine Optimization