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.
Data Science
A recruitment data workflow that structures CV information, applies semantic matching, and brings decision support directly into Odoo.
View source repository
Why it matters
My role
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.
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.
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 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.
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.
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.
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.
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
Each layer connects an implementation choice to the decision or workflow it supports.
06 layers| Layer | Implementation | Operational purpose |
|---|---|---|
| Document ingestion & OCR | PDF, DOCX, multi-file and ZIP validation; pdfplumber, PyMuPDF and python-docx extraction; OCR fallback for scanned or image-based CVs | Convert heterogeneous documents into traceable, searchable candidate evidence, including files without a usable text layer |
| Multilingual representation | Local SentenceTransformers embeddings for English and French CV and job-description chunks | Capture semantic fit beyond exact keyword matching without exporting personal data |
| Retrieval and ranking | L2-normalized vectors, FAISS IndexFlatIP exact search and a NumPy fallback | Return fast, reproducible candidate-job rankings with inspectable source passages |
| ML processing | Bounded OCA queue_job workers with persistent queued, running, failed and retry states | Keep extraction, indexing and scoring reliable without blocking recruiter screens |
| Business workflow | Native Odoo recruitment stages, applicant records, role-based access and recruiter validation | Put decision support inside the operational process while preserving human control |
| Monitoring and analytics | Matching views, operational monitoring and Power BI recruitment indicators | Track pipeline progress, stage conversion and profiles requiring action |
Product walkthrough

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

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

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

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

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

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

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

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

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

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

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

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

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

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