Odoo Recruitment Implementation
Job postings, pipeline, interviews.
Applicant tracking with kanban pipeline, resume parsing, interview scheduling, and integrations to LinkedIn, Indeed, and Bayt.
Odoo Recruitment is a pipeline, not a sourcing tool. A job position carries the department, the recruiter, the interviewers and the number of people you intend to hire. Applicants move across a kanban board towards a stage flagged as hired, which closes the vacancy against that target and stops the clock in the reporting. Creating the employee is a separate action on the applicant, not something the stage move does for you. The application itself is part of Odoo Community, which buyers who have been quoted for Enterprise on the strength of a hiring requirement often do not expect.
The screens are the easy part of the project. The work sits around them. Getting applications into Odoo from wherever candidates actually look for jobs. Giving a line manager a view of their own candidates without opening the whole pipeline to them. Deciding what a CV may be kept for and for how long. Making the accepted candidate arrive on the employee record with the right department, manager, job title and start date instead of being retyped.
Where Community stops is worth naming early. The referral programme, CV digitisation from a PDF, the salary package configurator and signature on the offer are Enterprise. Community gives you the pipeline, a public job page on your own website, interview forms built as surveys, refusal reasons with email templates and the funnel reports. For an employer hiring in the tens rather than the thousands each year, that is a complete process.
Who Odoo Recruitment is for
- → Employers filling roughly five to fifty roles a year who already keep employee records in Odoo and want the accepted candidate to become an employee without a second round of data entry.
- → Gulf employers where nationality, quota band and visa availability decide whether an offer can be made at all, so the applicant record has to carry more than a name and an attachment.
- → Companies that would rather publish vacancies on their own Odoo site than pay per posting, and who accept that the site is the destination while the boards are the traffic that reaches it.
- → Groups with several companies or departments needing one pipeline where interviewers are restricted to the candidates assigned to them.
- → It is not for staffing agencies placing hundreds of people a month, where the candidate is the product and you need a reusable talent database rather than a pipeline per vacancy.
- → It is a poor fit for high volume screening where the first cut is meant to be automatic. Odoo Surveys will score a questionnaire, but nothing acts on that score by itself, so a thousand applicants still means a thousand human decisions.
Key features
- ✓ Job postings to multi-boards
- ✓ Resume parsing
- ✓ Interview scheduling
- ✓ Feedback & scorecards
- ✓ Offer letter & contracts
- ✓ Referral program
What Odoo Recruitment actually does
Job positions and a pipeline you design
A job position holds the department, company, recruiter, interviewers and the target number of hires, and the kanban shows new and in progress counts against that target. Stages are yours to define and can be limited to particular positions, so an intake of forty drivers does not have to run through the same six steps as a finance manager search. One stage carries the hired flag, and that flag is what closes the vacancy and drives the reporting.
How applications reach the database
Standard Odoo offers three routes in. An alias on the job position turns an inbound message into an applicant, with the attachment kept as the CV and the sender's address on the record. The Website module publishes the position with an application form that creates the same record. A recruiter can create an applicant by hand and drop a file on it. On top of that, a position carries named sources, and each source gets its own tracked link and its own email address, so the link handed to an agency and the one posted on LinkedIn are counted separately instead of both arriving as ordinary website traffic.
Interview forms built as surveys
An interview form is a survey attached to the job position, either sent to the candidate before a call or filled in by the panel during the meeting, with scored questions if you want a number at the end. The answers stay on the applicant rather than in somebody's mailbox, so four candidates can be compared against the same questions months later. Meetings are booked from the applicant, so the slot lands in the interviewer's own calendar and the history stays on the record. Interviewers sit in their own access group and see only the candidates assigned to them.
CVs, duplicate detection and evaluation
Attachments hold the CV and anything else the candidate sends. Odoo flags similar applicants on email address, phone number and LinkedIn profile, which catches the person applying to four of your vacancies in one week. Evaluation is a short star rating, a reviewer's opinion recorded by hand rather than a calculated score, so real calibration between reviewers has to come from the interview form. Skills recorded during screening carry into the employee record on hire. Expected and proposed salary sit on the applicant, giving you the gap the offer has to close.
From accepted to employee
Refusal is a first class action with a reason and a matching email template, so no candidate is left without a reply and the reason survives into the reporting. On the accepted side, a create employee action on the applicant builds the employee record and carries name, contact details, department, job position, manager and recorded skills across. What it does not do is write a contract, produce a payroll entry or start onboarding. Employees holds activity plans you can launch on the new record for the day one tasks, but somebody has to launch them.
Reporting on the funnel
Recruitment analysis is a pivot over applicants, so you can count by job position, stage, source, recruiter and refusal reason, and measure the days a record sat before it was opened and before it was closed. This is where hiring gets managed rather than described. The figures only mean anything if refusals are recorded with a reason instead of applicants being deleted or parked in a stage nobody revisits.
How we configure Odoo Recruitment
Design the stages before anything else
Stages are the whole model. Decide how many you need, which are shared across every vacancy and which belong to one hiring pattern, and which single stage carries the hired flag. Four to six is usually right. Every extra stage is a drag on the recruiter who has to move records through it, and a stage that means nothing to the business produces a report nobody believes. Write down the definition of each stage before it is configured.
The alias, the domain and mail that actually arrives
Applications by email depend on a catchall domain that resolves, an incoming mail server Odoo can poll or a route that delivers into it, and an alias per job position. Get this working in the first week of the build rather than the week before go live, because it usually touches the client's DNS and mail provider. Test with a real attachment, from an external address, against a closed position as well as an open one.
Access rights, and who is allowed to see a salary
Three levels matter. An officer works the vacancies they are responsible for, an administrator sees everything and configures stages, and an interviewer sees only the candidates assigned to them. Check where the expected and proposed salary fields sit for the interviewer group in the version you are installing, because that has moved between releases and hiding a field is a view change rather than a settings toggle. Settle this before the first interview is booked. Widening access later is a five minute job. Taking it back after managers have seen every salary in the pipeline is a conversation.
Build the scorecard as a survey, not a document
A scorecard emailed round the panel as a spreadsheet gives you nothing to report on. The same questions built as a survey attached to the job position put the answers on the applicant, so a hiring manager can compare four candidates against the same criteria. Keep it short. Panels do not complete twenty questions. Six to eight scored questions and one free text box is a form people fill in after every interview.
Map the handover to the employee record
List, field by field, what has to exist on the employee on day one. Job title, department, manager, work location, start date, contract terms, national identity number, visa or permit reference, bank details for payroll. Much of that is never asked during recruitment, so it has to be collected at offer stage or on a joining form. Decide who fills the gaps and when, or the employee record is created on the start date half empty.
Where Odoo Recruitment projects go wrong
Expecting Odoo to produce the shortlist
The assumption that the system sorts the applicants survives right up to user acceptance unless somebody kills it earlier. No edition scores an applicant, ranks a list or matches a CV against a job description. Design the process on the basis that a person reads every application, and use the pipeline to record what that person decided, how quickly, and against which criteria. The review after a hiring round is then an argument about the criteria rather than about who remembers what.
Assuming postings go out to job boards on their own
Standard Odoo publishes a vacancy on your own website. Pushing the same posting to LinkedIn, Indeed, Bayt or a national portal is integration work, and the harder half is the return path, getting the application and its attachment back into Odoo with the source recorded. Some boards allow a feed, some only manual posting, and some insist on capturing the applicant themselves and handing you a weekly export. Scope each board separately and price only the ones that produced a hire last year.
No retention rule, so the CVs stay forever
Odoo deletes nothing on its own. Two years after go live the database holds thousands of CVs carrying home addresses, dates of birth and passport scans. That is a data protection exposure in the United Kingdom, Germany, France and Turkey, and an information security exposure everywhere else. The cheaper half of the fix is at the front of the process: stop asking for fields that have never once changed a decision, and stop taking identity documents from people you have not yet made an offer to.
Treating the attachment as a talent database
The applicant search filters on fields, not on the contents of the file attached to the record. No search in the interface will reliably return every candidate who has run a particular ERP or holds a particular licence, because that fact is sitting inside a PDF the search view never reads. If a reusable pool is a genuine requirement it has to be built from structured data captured during screening, skills, tags and two or three questions on the application form, and somebody has to be paid to enter it every time or it decays inside a year.
One job position kept open all year
Reusing a single Sales Executive position for every intake looks tidy and ruins the numbers. Odoo counts hires against the target on the position and the funnel report groups by position, so one record left open for three years shows a target of one against forty hires and a time to hire measured from a date nobody remembers. Open a position per requisition and close it when the target is met. A new position needs its own alias and its own published page, so make duplicating one a two minute habit for the recruiter rather than a request to IT.
Treating the offer as an internal formality
Across the Gulf and South Asia the offer is a regulated document and the start date is set by immigration or by a notice period, not by the hiring manager. A pipeline that ends at accepted, then hides four to twelve weeks of visa processing inside the hired stage, reports a time to hire that no operations manager can plan against. Put a stage between accepted and joined, hold offered, accepted and joined as three separate dates, and report on the gap between them.
What it works with
- + Employees, where the accepted applicant lands with a department, manager, job title and start date
- + Surveys, which is what an interview form is built from in Community as well as Enterprise
- + Website, for the public job page, the application form and the translated job description
- + Calendar, so an interview slot is booked in the interviewer's own diary instead of by email
- + Sign, an Enterprise app, for the offer letter and contract with a timestamped audit trail
- + Payroll, an Enterprise app, where the salary, grade and start date settled at offer stage have to arrive with the employee
- + Appraisals, an Enterprise app, for the probation review that closes the loop on a hiring decision
- + Documents, an Enterprise app, when signed offers and identity papers belong in a controlled workspace
Odoo Recruitment by country
Saudi Arabia (KSA)
Whether an offer can be made at all depends on the Nitaqat band, because the ratio of Saudi to expatriate staff governs the visas the establishment is allowed to hold. Contracts are authenticated on Qiwa, and GOSI registration follows the hire at rates that differ by nationality, with Saudis carrying pension and unemployment contributions where expatriates carry occupational hazard cover only. Capture nationality and the Qiwa contract reference on the applicant.
United Arab Emirates
The MOHRE job offer is signed by the candidate before the work permit is applied for, which makes the offer stage a legal step rather than a courtesy. Emiratisation targets apply to companies of fifty or more employees and are measured on skilled roles, with a monthly contribution for each unfilled position. Nationality and skill classification on the applicant feed that count directly.
Pakistan
Labour law is provincial, so a group hiring in Punjab and Sindh works to two sets of standing orders from one database, and the formal appointment letter at hire is a statutory document rather than a template. The CNIC is the identity key for everything that follows, from EOBI and provincial social security registration to the salary account. Collect it at offer stage, not on the first morning.
India
Offer to joining is where the process leaks. Notice periods of thirty to ninety days are normal, candidates hold two or three offers at once and counter offers land in the final week, so a position with a target of five needs more than five acceptances to close it. Provident fund and ESIC registration follow the joining date rather than the offer. A private employer cannot run Aadhaar authentication, so identity and employment checks go through a background verification vendor, and that report has to be filed against the applicant before day one.
Turkey
The SGK employment entry declaration has to be filed at the latest the day before the person starts, so a confirmed start date is a hard deadline for the hire handover rather than a plan. CVs are personal data under KVKK, requiring an information notice and explicit consent to hold one at all. Workplaces with fifty or more staff carry a three percent disabled employee quota filled through Iskur.
United Kingdom
A right to work check has to be completed before the first day, using a share code for anyone without a British or Irish passport, and the evidence kept for the employment plus two years to hold the statutory excuse. Applicant data sits under UK GDPR, and the regulator expects unsuccessful applicants to be held for a defined period rather than indefinitely.
Germany
The works council has a say in hiring under section 99 of the Works Constitution Act, including the application form and the selection criteria, so the fields on the applicant are a matter for negotiation and not only configuration. The General Equal Treatment Act argues against collecting a photograph, date of birth or marital status, and its two month window for a rejected candidate to bring a claim sets the floor for how long the file is kept.
United States
Voluntary self identification of race, gender, veteran and disability status has to be collected apart from the hiring decision and kept out of the reviewer's view while remaining available for EEO-1 reporting at one hundred or more employees. Rules on when a criminal record may be asked about vary by state and city, and New York City requires a bias audit before an automated screening tool is used.
Odoo Recruitment FAQs
Is Odoo Recruitment part of Community or only Enterprise?
The pipeline is Community, in full. What the Enterprise licence changes for a hiring team is narrow: an internal referral scheme with rewards, CV digitisation, and an electronic signature on the offer. The rest of the Enterprise side lands after the hire, at probation and at the first pay run. So the honest test is whether payroll, accounting or field service already push you towards Enterprise. A hiring requirement on its own rarely pays for a per user licence, and a quote that treats Recruitment as the reason to upgrade is worth questioning.
Does Odoo read a CV and fill in the applicant automatically?
Only on Enterprise, and only as far as the contact block. The file goes to an extraction service and each document consumes in app purchase credits, so it is a running cost per application rather than something the licence covers, and it is worth pricing against a recruiter's time on a fifty applicant vacancy. The cheaper answer is usually to stop relying on the PDF. Put the four things you actually screen on, licence held, notice period, current location and visa status, on the application form or the interview survey, where each answer becomes a field you can filter and count.
What does a candidate see after applying?
Whatever you send them, and nothing more. Standard Odoo gives applicants no portal login and no status page, so the record is invisible to the person who created it. That leaves three moments to design: the acknowledgement when the application arrives, the email attached to the refusal reason, and whatever the recruiter writes by hand in between. The first two are where the complaints come from, and both can be automated. If a stage change should trigger a message, that is an automation rule on the applicant, not something the stage does by itself.
Can a hiring manager see only their own candidates?
Yes. The interviewer group sees the applicants assigned to them on a position and nothing else, with no access to other vacancies, no configuration and no stage administration. The point to settle before rollout is seat cost. An interviewer is an internal user, so on Enterprise every manager you hand a login to is a paid seat every month, and a panel of ten is ten seats. On Community there is no per user fee, so the usual answer there is to give the whole panel a login and restrict them by group.
Can we run hiring for several companies in one database?
Yes. A job position belongs to a company and record rules keep the pipelines apart, so a recruiter in one company does not see another's applicants unless you allow it. Two things to plan for. Stages are shared unless you restrict them to particular positions, so one company's stage names otherwise appear in the other's kanban. Aliases are set per position, which lets each company receive applications at its own domain.
How long can we keep unsuccessful applicants?
As long as your policy says, and the policy is the only control. Six to twelve months after last contact is a common position in Europe and the United Kingdom. The mechanical detail that catches projects out is the difference between archiving and deleting. Archiving takes the applicant out of the kanban, but the record and its attachments stay in the database and the filestore, so it satisfies no retention rule. Deleting the applicant takes its attachments with it. Archive for as long as you want the reporting, delete on a scheduled action after that, and write the rule down so an answer exists when somebody asks for it.
Can we send and sign the offer letter from Odoo?
With Enterprise, yes. Sign holds the offer template with role based fields and produces a timestamped audit trail, and the signed file can be kept against the employee. Community has no e-signature, so the usual pattern is a PDF generated from the applicant, sent by email and returned as a signed scan filed on the same record. Enterprise also carries a salary package configurator, but it is built around the Belgian localisation and normally needs reworking before it fits a Gulf or South Asian pay structure.
Do we need Odoo Website to receive applications?
No. An alias on the job position is enough. What the Website module adds is a page you control, the description and its translations, the application form with the questions you want asked, and a public list of open roles a recruiter can link to. The second reason is attribution. A link published per source arrives already tagged with where it came from, while an emailed application is attributed by hand or sits in the reports as unknown. If the careers page already lives elsewhere, keep it there and have it deliver the application and its attachment to the alias.