AB.From scattered CVs to evidence recruiters can trust.All projects

Data Science

Recruitment ATS Pro

A recruitment data workflow that structures CV information, applies semantic matching, and brings decision support directly into Odoo.

SentenceTransformersFAISS Vector SearchCV ExtractionMultilingual MatchingOdoo Analytics
View source repository ↗
Recruitment ATS Pro interface

Why it matters

Turns scattered candidate documents into comparable talent evidence while keeping recruiters responsible for the final decision.

My role

Data scientist, NLP practitioner, and workflow-integration developer

  1. 01Mapped the recruitment data flow from multilingual PDF/DOCX/ZIP ingestion through extraction, embedding, FAISS ranking, comparison, shortlisting, and final Odoo applicant creation.
  2. 02Implemented local SentenceTransformers embeddings, serialized FAISS indexes with a NumPy fallback, and bidirectional matching from jobs to candidates and candidates to jobs.
  3. 03Moved extraction, indexing, and scoring into bounded OCA queue_job workers while preserving source evidence, recruiter control, privacy, access rules, and operational monitoring.
01

Business need

Recruitment teams need to process PDF, DOCX, multi-file, and ZIP resume batches consistently without losing source documents, operational progress, or human control over hiring decisions.

02

CV extraction pipeline

PDF, DOCX, multi-file, folder, and ZIP imports are validated before an extraction cascade uses pdfplumber, PyMuPDF, and python-docx to recover searchable text. Candidate name, email, phone, LinkedIn URL, sections, and source metadata are structured while the original document remains available for verification.

03

Multilingual embeddings

A locally loaded SentenceTransformers model encodes CV and job-description chunks for English and French semantic retrieval without sending personal data to an external AI API.

04

FAISS retrieval & scoring

L2-normalized vectors are indexed with FAISS IndexFlatIP for exact similarity search, serialized with each job index, and supported by a NumPy fallback. Candidate evidence is retrieved and aggregated into inspectable matching scores rather than generated as an unexplained ranking.

05

Asynchronous ML processing

OCA queue_job moves CV extraction, embedding-index construction, and candidate scoring into a dedicated bounded ML channel. Persistent job state exposes queued, running, completed, failed, cancelled, and retried work instead of blocking recruiter screens.

06

Matching & evidence

Semantic similarity supports job-to-candidate and candidate-to-job ranking. Recruiters can search, filter, compare two to four profiles, inspect original CV passages and documents, annotate results, tune priorities, and shortlist candidates.

07

Human-in-the-loop design

Scores provide decision support rather than automated hiring. Recruiters retain the final choice, and selected profiles move into native Odoo Recruitment stages instead of replacing the established process.

08

Operational value

Batch processing, local privacy, monitoring, comparison, controlled access, and workflow integration reduce fragmented CV handling while making screening evidence easier to inspect and act on.

Technical implementation

How the solution was built.

Each layer connects an implementation choice to the decision or workflow it supports.

06 layers
LayerImplementationOperational purpose
Document ingestion & OCRPDF, DOCX, multi-file and ZIP validation; pdfplumber, PyMuPDF and python-docx extraction; OCR fallback for scanned or image-based CVsConvert heterogeneous documents into traceable, searchable candidate evidence, including files without a usable text layer
Multilingual representationLocal SentenceTransformers embeddings for English and French CV and job-description chunksCapture semantic fit beyond exact keyword matching without exporting personal data
Retrieval and rankingL2-normalized vectors, FAISS IndexFlatIP exact search and a NumPy fallbackReturn fast, reproducible candidate-job rankings with inspectable source passages
ML processingBounded OCA queue_job workers with persistent queued, running, failed and retry statesKeep extraction, indexing and scoring reliable without blocking recruiter screens
Business workflowNative Odoo recruitment stages, applicant records, role-based access and recruiter validationPut decision support inside the operational process while preserving human control
Monitoring and analyticsMatching views, operational monitoring and Power BI recruitment indicatorsTrack pipeline progress, stage conversion and profiles requiring action

Product walkthrough

Screens connected to decisions.

14 screens
Recruitment ATS Pro: dashboard
01
dashboard

Gives recruiters a fast operational view of candidate volume, matching progress, and shortlisted profiles.

Recruitment ATS Pro: core recruiter workspace
02
core recruiter workspace

Documents the core recruiter workspace stage of Recruitment ATS Pro and the evidence available to its user.

Recruitment ATS Pro: job to candidates
03
job to candidates

Documents the job to candidates stage of Recruitment ATS Pro and the evidence available to its user.

Recruitment ATS Pro: candidate profile
04
candidate profile

Structures extracted CV evidence into a profile recruiters can inspect before taking action.

Recruitment ATS Pro: candidate review
05
candidate review

Documents the candidate review stage of Recruitment ATS Pro and the evidence available to its user.

Recruitment ATS Pro: comparison
06
comparison

Places candidate evidence side by side to support a more consistent shortlist decision.

Recruitment ATS Pro: cv to jobs
07
cv to jobs

Documents the cv to jobs stage of Recruitment ATS Pro and the evidence available to its user.

Recruitment ATS Pro: import existing job
08
import existing job

Documents the import existing job stage of Recruitment ATS Pro and the evidence available to its user.

Recruitment ATS Pro: import new job
09
import new job

Documents the import new job stage of Recruitment ATS Pro and the evidence available to its user.

Recruitment ATS Pro: matching priorities
10
matching priorities

Documents the matching priorities stage of Recruitment ATS Pro and the evidence available to its user.

Recruitment ATS Pro: odoo applicant
11
odoo applicant

Documents the odoo applicant stage of Recruitment ATS Pro and the evidence available to its user.

Recruitment ATS Pro: administration
12
administration

Documents the administration stage of Recruitment ATS Pro and the evidence available to its user.

Recruitment ATS Pro: privacy retention
13
privacy retention

Documents the privacy retention stage of Recruitment ATS Pro and the evidence available to its user.

Recruitment ATS Pro: scoring monitor
14
scoring monitor

Documents the scoring monitor stage of Recruitment ATS Pro and the evidence available to its user.

Continue exploring01 / 11
Next project · Data ScienceFaultForgeA model is useful only when its limits are measurable.↗
← Previous · PortNet Live Trade CopilotView project archive
Project archiveGitHub repository ↗Discuss this work ↗