| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Employees (hr) • Online Jobs (website_hr_recruitment) • Recruitment (hr_recruitment) • Website (website) • Calendar (calendar) • Skills Management (hr_skills) |
| Lines of code | 6481 |
| Technical Name |
advanced_recruitment |
| License | OPL-1 |
| Website | https://erpoxa.com/ |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Employees (hr) • Online Jobs (website_hr_recruitment) • Recruitment (hr_recruitment) • Website (website) • Calendar (calendar) • Skills Management (hr_skills) |
| Lines of code | 6481 |
| Technical Name |
advanced_recruitment |
| License | OPL-1 |
| Website | https://erpoxa.com/ |
Hire the best candidate, not the first one
Auto-fills applications from a CV, scores every candidate against your job's requirements, and surfaces the perfect match in one click — plus a real candidate portal where applicants own their profile and track every application.
Watch the smart-hire workflow
AI-scored applicants, configurable forms, candidate portal, side-by-side compare.
| ▶Watch Demo Video |
The whole module in 35 seconds
Dashboard · AI CV upload · AI scoring · candidate compare · field builder · public apply form · candidate portal · settings — captured against a real Odoo instance.
Every screen is shown in detail with its own annotated screenshot further down the page.
Test this module instantly
You can explore all features using the demo account. No setup required.
Why teams switch to Advanced Recruitment
A full-stack upgrade to Odoo's recruitment app — built for HR teams that get hundreds of applications and need to spot the right people fast.
AI CV Auto-Fill
Upload a PDF and the form fills itself — name, contact, education, experience, salary, skills, even a tailored cover letter.
Match Score 0–100
GPT scores every candidate against the job's required skills, preferred skills, minimum experience and seniority — with a written rationale.
Best Candidates Dashboard
Kanban grouped by job, ranked by AI score and skill-match %. Spot perfect matches at a glance with the gold ribbon.
Compare Side-by-Side
Pick 2–5 applicants from any list and see them in parallel columns — score, skills, experience, salary, education.
Talent-Pool Suggestions
Open a new job? The system instantly proposes existing applicants from other roles whose skills match.
Real Custom Fields
Add a question to the form → it becomes a real database column on hr.applicant — searchable, group-by-able, exportable.
Smart Apply
Returning candidates see "Apply with my profile" — one click pre-fills the entire form from their saved data.
Candidate Portal
/my/profile and /my/applications give candidates a self-service view of their data and application status.
Company-level Settings
One Settings page for OpenAI keys, Smart Apply, Portal access, Auto-Extract Skills — all per company.
Smart Default Filters
10+ named filters (Recommended Hires, Top, Strong, Shortlisted, Perfect Match…) ready in every list.
From zero to hired — the full workflow
Configure once · publish a job · candidates apply · the AI scores them · you pick the winner. Each step below shows the actual screen.
Drop in your OpenAI key & pick what to enable
Open Settings → Recruitment → Advanced Recruitment. Every toggle that changes how the module behaves lives in one block — per company. Flip what you need on, paste your API key, click Test Connection, and you're live.
- 🔑 OpenAI key, model, max tokens & timeout — with a one-click test button
- 🤖 AI CV Analyzer · 📚 Auto-Extract Skills · 🪪 Smart Apply · 👤 Candidate Portal — independent toggles
- 📝 Shortcut to the Form Builder straight from this screen
- AI CV Analyzer toggle — turns on the website upload + auto-fill flow
- OpenAI API Key — paste once, used by every AI feature
- Test OpenAI Connection — verify the key without leaving the page
Pick which fields appear on every application form
Configuration → Catalog → Fields lists every field grouped by Section. Toggle Visible by Default, Required by Default and AI Extractable inline — no form opens. These defaults apply to every job in the company.
- 📑 11 sections out of the box (Personal, Contact, Address, Education, Experience…)
- 🔘 Inline toggles save instantly · drag to reorder
- 🤖 AI Extractable flag tells the parser which fields to read from CVs
- Section grouping — every field belongs to a section (Personal, Contact, etc.)
- Inline toggles — Visible / Required / AI Extractable switch without opening a form
Add your own questions — they become real database columns
Click New in the catalog: type a label, pick a type, choose the section, save.
The module creates a proper ir.model.fields on hr.applicant, generates a view
inheritance, and renders it under the right section on the backend form — with the native widget.
- ✅ Filterable from the search bar · Group-by-able · Sortable
- ✅ Exportable via the standard Action menu · available to API / RPC / automated rules
- 🤖 Add an AI hint so the parser knows what to look for in the CV
- Display Label — what candidates and recruiters see on the form
- Field Type & Section — pick the widget and where it appears
- AI Hint — short prompt that teaches the parser what to extract
Per-job form overrides on top of company defaults
The Form Builder wizard renders every available field as a flat list with two checkboxes — Visible and Required. Open it from a job to override only that job's form. The same wizard works at the company level for the global default.
- + New Field right inside the wizard — no leaving the page
- + Manage Headings to add custom sections (📌 Odoo Experience, etc.)
- ↕ Drag to reorder · 🗑 delete custom fields from the same screen
- 🪪 Per-job toggles override company defaults without touching them
- Visible / Required toggles — two clicks decide what appears on the form
- + New Field button — create a custom field without leaving the wizard
The candidate sees a clean, sectioned apply form
Every visible field is rendered with the right widget — Choices.js for skills, native date pickers, multi-line cover letter, file upload for the CV. Sections match the catalog, in the order you set.
- 📤 Drop a CV at the top → triggers the AI auto-fill flow (Step 6)
- 🪪 Returning candidates see a green Apply with my profile banner
- 📊 Skills entered with their level — saved as proper hr.applicant.skill rows
- 🛡 CSRF-safe POST · works for public visitors and logged-in candidates
- Quick Apply with AI — drop a CV here to trigger the AI auto-fill modal
- Section headings — fields stay grouped exactly like the catalog
Drag a CV → the form fills itself
The candidate uploads their PDF. A polished progress modal opens, walks them through 4 steps in real time, and ~12 seconds later every visible field on the form is pre-filled — including the skills table with levels and a tailored cover letter.
- 📄 Reads every page of the PDF (no truncation)
- 🤖 GPT-4o-mini extracts identity, contact, education, experience, salary
- ⭐ Identifies skills with their level (Beginner / Intermediate / Advanced / Expert)
- ✏️ Generates a tailored cover letter when the field is on the form
- 🎯 Scores the candidate's fit for this specific job
- 4-step progress — Read PDF → Understand → Catalogue skills → Fill form
- Live ETA + rotating tip keep the candidate engaged while they wait
The recruiter opens the applicant — score & AI summary on top
Every applicant gets an AI Match stat button right at the top of the form. A dedicated AI Analysis tab carries the written rationale, skill-band, recommendation and the gap list (which required skills are still missing).
- 🎯 0–100 AI Match score with band: Hire / Strong / Worth Reviewing / Skip
- 📐 Deterministic Skill Match % against required skills — no AI surprises
- 🟢 / 🔴 Matched vs. missing skills laid out on the same tab
- 🔄 Re-run AI Analysis button on demand · 🪄 manual Quick Email reply
- AI Match stat button — score + band visible the moment you open the applicant
- AI Analysis tab — written rationale, matched skills and the gap list
The dashboard recruiters open every morning
A dedicated kanban grouped by job and ranked by AI score. Each card shows two live percentages — AI Match (overall) and Skill Match (deterministic against the job's required skills) — plus a recommendation badge.
- 🟢 Coloured left border by match band — instant triage
- 🥇 Gold corner ribbon for perfect skill matches
- ✅ Recommendation badge: Hire / Strong / Worth Reviewing / Skip
- 🏷 Matched skills as tags · ⚠️ missing required skills in red dashed boxes
- 📌 One-click shortlist from the card
- Worth Reviewing badge — recommendation engine surfaces promising mid-tier matches
- Live AI Match % — the same number you see on the applicant form
Compare 2–5 finalists side-by-side
Multi-select applicants from any list, run ⚖️ Compare Selected from the Actions menu, and the wizard renders them as parallel columns — name, scores, skills, current role, education, expected salary, AI summary.
- Sorted by AI match score by default
- Star icon per shortlisted candidate
- One-click Shortlist All from the wizard
- AI Match per candidate — colour-coded by band so the strongest stand out
- Aligned attribute rows — Stage, Position, Experience, Skills lined up across columns
Open a new job → instantly see who from your pool fits
Define the required skills + minimum experience on the new job. Click 💡 Find Matches and the engine ranks every existing applicant by fit score, blended with their AI score from previous applications.
- Tick the candidates you want → Assign Selected creates fresh applications on the new job
- Brings the entire extended profile + skills across — no copy-paste
- Auto-posts a chatter message on the job each time you tweak the requirements
- Fit Score column — blends required-skill match, preferred match and prior AI score
- Assign? toggles — tick what you want, click Assign Selected, done
Smart filters that recruiters actually need
Every list, kanban and dashboard ships with a curated set of named filters in the Filters dropdown — no need to build a Custom Filter every time you want to see your top candidates. They combine with each other and with Group By for instant pivots.
- 📊 Group By: Job · Recommendation · Match Band · Stage
- 🚀 Best Candidates dashboard opens pre-grouped by Job & Active Only
- 🔎 Custom answers indexed in the search bar — search any extended-profile value
- Named filters — one-click triage instead of building Custom Filter rules
- Group By — instant pivot by Job, Recommendation, Match Band or Stage
Candidates own their profile
One /my/profile page becomes the candidate's single source of truth.
Fill it once — every future application is pre-filled from it via Smart Apply.
/my/applications sits right next to it on /my/home as the second
candidate entry point.
🪪 /my/profile — the candidate's CV-in-a-form
- 📇 Basic info — full name, phone, alternate phone, DoB, gender, marital status, nationality, religion
- 📍 Address — street, city, ZIP, state, country
- 🎓 Education — highest qualification, university, field of study, graduation year, GPA
- 💼 Professional — current position & company, years of experience, expected salary, notice period, LinkedIn, portfolio URL
- 📄 Resume upload — PDF stored as an attachment on the candidate's hr.applicant profile record
- 🔒 Owner-scoped — the page resolves the user's own profile via email; nobody can edit anyone else's
- ⚡ Smart Apply feed —
/advanced_recruitment/profile/prefillJSON-RPC endpoint feeds the public apply form for every job the user applies to next
📋 /my/applications — the candidate's pipeline
- 🏠 Surfaced on
/my/homeas the "My Applications" tile next to "My Profile" - 📊 Live counters — Total · In Progress · Hired · Closed (see Step 13 for the dashboard detail)
- 🔗 One-click drill-down — each card opens the readonly application detail (see Step 14)
- My Profile tile — the dedicated profile entry point
- My Applications tile — the dedicated applications entry point
The candidate's CV-in-a-form, sectioned
/my/profile renders the same field set the apply form uses, grouped into
five clear cards. Fields persist on the candidate's talent-pool hr.applicant
record (the one with no job_id), so they're available for Smart Apply, recruiter
search, and re-use across every future application.
- 🎴 Card-per-section layout — Basic, Address, Education, Professional, Resume
- 📎 Resume preview — latest uploaded PDF shown with a one-click download link
- ✅ Saved confirmation —
?saved=1banner after a successful write - 🌗 Theme-aware — cards use Bootstrap CSS custom properties so the page reads well in light & dark portal themes
A smart dashboard for the candidate, too
/my/applications isn't a plain table — it's a real dashboard. Live counters
at the top, click-to-filter chips, and one rich card per application showing the AI Match
score, current stage with a progress bar, and the recruiter's status (In Progress / Hired / Closed).
- 📊 Summary stats at the top — Total · In Progress · Hired · Closed
- 🏷 Filter chips — one click to narrow by status
- 🎯 AI Match score pill per card, color-coded by band (green ≥ 85, blue ≥ 70, yellow ≥ 50)
- 📈 Stage progress bar per card — candidate sees how far they've moved
- 📱 Mobile-first — stats become a 2×2 grid, badges drop below the title
- Summary stats — at-a-glance totals across every status
- Filter chips — narrow by status without leaving the page
- AI Match score — same number the recruiter sees, color-coded
- Stage progress bar — visual progression through the pipeline
One click on a card opens the full submitted form
From /my/applications, every card has a View application button.
It opens a clean readonly page at /my/applications/<id> showing exactly
what the candidate submitted — every section, every field, plus every attachment
they uploaded with that application. No more "what did I write last time?" emails.
- 📌 Job snapshot — position, department, recruiter, tags, source & medium
- 🧍 Basic, address, identification, education, professional — every section, always rendered, with em-dash placeholders for empty fields
- ⭐ Skills as badges, plus AI match score & rationale if processed
- 📎 Attachments list — every file uploaded (resume, diploma, custom files) with View + Download buttons
- 📊 Stage progress bar + clickable stage breadcrumb (past · current · upcoming)
- 🔒 Owner-only access — route validates the application's
email_fromagainst the logged-in user; mismatches redirect to the list - 🌗 Light & dark theme friendly — uses Bootstrap CSS variables so cards, labels & values stay readable in both
- Trust — candidates can verify the exact data the recruiter sees
- Audit trail — the page is the single source of truth for what was submitted
- No backend access needed — the candidate never leaves the portal
The full picture
A snapshot tour of the most-used screens.
Stock Recruitment vs. Advanced Recruitment
Same hr.applicant model — radically different recruiter experience.
| Capability | Stock Odoo | Advanced Recruitment |
|---|---|---|
| Auto-fill application form from a CV PDF | — | ✓ GPT-4o, every page |
| AI candidate-fit score against job requirements | — | ✓ 0–100 + rationale |
| Skill match % (deterministic) | — | ✓ Per-applicant, indexed |
| Best Candidates dashboard | — | ✓ Kanban / Pivot / Graph |
| Side-by-side comparison | — | ✓ Up to 5 candidates |
| Suggest existing applicants for a new job | — | ✓ With assign-to-job action |
| Add custom application questions | Studio (paid) | ✓ Built-in, real DB columns |
| Per-company / per-job form configuration | — | ✓ One-screen wizard |
| Auto-generated cover letter | — | ✓ Tailored to the job |
| Returning-candidate Smart Apply | — | ✓ One-click pre-fill |
| Candidate self-service portal | — | ✓ /my/profile + /my/applications |
| Skills with level on website apply form | — | ✓ Editable table widget |
| Bulk shortlist / unshortlist | — | ✓ List-view actions |
| Smart filters (Top, Stale, Perfect Match, etc.) | — | ✓ Pre-built |
How the AI engine works
Transparent, configurable, defensible.
1. Read
PyPDF2 extracts text from every page of the uploaded CV (no length cap, no truncation).
2. Understand
The text + the job's required skills + minimum YOE + seniority go to GPT-4o (configurable model). Strict JSON output.
3. Score
60% skill match · 25% experience · 15% education. Heavy penalty for missing required skills or below-min experience.
4. Persist
Score, summary and skills land on the hr.applicant + applicant_skill_ids — fully searchable from the standard search bar.
Compatibility & requirements
Community & Enterprise. Built natively on hr.applicant + applicant_skill_ids.
Python deps
openai, PyPDF2 — installed via pip.
OpenAI API key
Required only if you use the AI features. Skill-match %, dashboards and form builder work without it.
Website module
Required for the public apply form & candidate portal (already part of website_hr_recruitment).
Custom Odoo development by Erpoxa
We're an Odoo-focused team. Bring us your weirdest workflow — we'll ship it cleanly.
Custom modules
From single-screen wizards to full vertical solutions tailored to your industry.
Migration & upgrades
Move from Odoo 14/15/16/17 to 19 with zero data loss and a tested cutover plan.
AI integrations
OpenAI, Claude, Gemini and on-prem LLMs — wired into Odoo's standard models.
Third-party APIs
Payment gateways, shipping providers, government portals — plumbed in cleanly.
Themes & UX
Brand-faithful website themes and backend skins that don't break on upgrade.
Hosting & DevOps
Self-hosted Odoo on your servers — backups, monitoring, SSL, blue/green deploys.
Built & supported by Erpoxa
An Odoo consultancy focused on scalable AI-powered modules and bespoke integrations. We answer fast and ship clean code.
Website
All apps, docs & portfolio
erpoxa.comOdoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module