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

Situation

Recruitment teams process PDF, DOCX, multi-file, and ZIP resume batches, and need candidate evidence they can compare consistently, without losing source files, progress, or human control over hiring decisions.

02

Task

Build a recruitment data workflow that structures CV evidence, ranks candidates against jobs with semantic matching, and integrates decision support directly into the Odoo hiring process recruiters already use.

03

Action

  • PDF, DOCX, multi-file, folder, and ZIP imports are validated before an extraction cascade uses pdfplumber, PyMuPDF, and python-docx to recover searchable text, structuring name, email, phone, LinkedIn URL, and section metadata while the original document stays available for verification.
  • 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.
  • L2-normalized vectors are indexed with FAISS IndexFlatIP for exact similarity search, serialized per job with a NumPy fallback, turning candidate evidence into inspectable matching scores rather than an unexplained ranking.
  • OCA queue_job moves extraction, indexing, and scoring into a bounded ML channel with persistent queued, running, completed, failed, and retried states, so recruiter screens are never blocked.
04

Result

Recruiters can search, filter, compare two to four profiles, inspect original CV passages, and shortlist candidates. Scores provide decision support while recruiters retain the final choice, and selected profiles move into native Odoo Recruitment stages instead of replacing the established process.

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

Brings job pipelines, candidate activity, and recruiter tools together in one working view.

Recruitment ATS Pro: job to candidates
03
job to candidates

Ranks candidates against a single job posting using inspectable semantic similarity scores.

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

Lets a recruiter inspect a candidate's evidence, annotate findings, and record a screening decision.

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

Ranks open roles against a single candidate's profile for candidate-to-job matching.

Recruitment ATS Pro: import existing job
08
import existing job

Imports an existing Odoo job posting into the matching workflow without re-entering requirements.

Recruitment ATS Pro: import new job
09
import new job

Captures a new job's requirements before it enters the CV-matching and scoring pipeline.

Recruitment ATS Pro: matching priorities
10
matching priorities

Lets recruiters tune which requirements matter most, adjusting how candidates are scored and ranked.

Recruitment ATS Pro: odoo applicant
11
odoo applicant

Shows a shortlisted candidate inside the native Odoo Recruitment applicant record.

Recruitment ATS Pro: administration
12
administration

Controls access, roles, and system settings for the recruitment workflow.

Recruitment ATS Pro: privacy retention
13
privacy retention

Manages data-retention rules and candidate privacy settings for stored CV evidence.

Recruitment ATS Pro: scoring monitor
14
scoring monitor

Tracks the status of extraction, embedding, and scoring jobs running through the ML queue.

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 ↗