| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Recruitment (hr_recruitment)
• Discuss (mail) • Employees (hr) • Calendar (calendar) |
| Community Apps Dependencies | Show |
| Lines of code | 1029 |
| Technical Name |
eh_hr_recruitment |
| License | LGPL-3 |
| Website | https://www.erpheritage.com.au/ |
| Versions | 16.0 17.0 18.0 19.0 |
EH HR Recruitment
Structured interview scorecards and a tamper-evident audit trail on every stage change, built on standard Odoo 17 Recruitment.
Why this module
EH HR Recruitment
Scorecards, not loose notes
Each interview is a real record with interviewer, date, a 1 to 5 rating and a hire, maybe or no recommendation, so candidate feedback is comparable instead of buried in chatter.
Every stage move is logged
When an applicant changes stage, the module writes a stage_change event with the from and to stage, the actor and a timestamp into the shared EH HR audit log. No-op writes are ignored, so only real moves are recorded.
Extends, never duplicates
It inherits hr.applicant and the standard recruitment stages. You keep your existing pipeline, jobs and views, and simply gain scorecards, an average score and an audit trail on top.
Day in the life
A hiring round, end to end
Three interviewers each open the candidate, add a scorecard with their rating and recommendation, and the candidate's average score updates automatically. The recruiter moves the applicant from screening to interview to offer, and each move is captured in the audit log with who did it and when. Later, anyone reviewing the hire can read a clean, ordered history instead of reconstructing it from memory.
Edge cases
The cases most modules quietly ignore.
In the shipped code today, each one a place where a cheaper module silently does the wrong thing.
The write override only logs when stage_id actually changes value. Saving an applicant without moving stage, or re-writing the same stage, produces no audit noise.
Stage events feed the eh_hr_core audit log, which serializes appends with a Postgres transaction-scoped advisory lock so two simultaneous moves cannot fork the hash chain.
Each audit row stores the sha256 of the previous row plus its own fields. verify_chain in eh_hr_core walks the chain and returns the first row that fails, so silent edits are detectable.
Audit rows carry the actor's company, and an ir.rule in eh_hr_core scopes reads so each company sees only its own trail plus system-wide events.
Average score handles candidates with no interviews by returning zero rather than dividing by zero, and only counts scorecards that actually carry a rating.
What is inside
Built to do the job, end to end.
- Interview scorecard model. eh.hr.applicant.interview links to an applicant with cascade delete, and holds interviewer, interview date, a 1 to 5 rating and a hire, maybe or no recommendation plus free-text notes.
- Average score compute. A stored avg_score field on hr.applicant recomputes from interview ratings, giving a single comparable number per candidate that stays current as scorecards are added or edited.
- Stage-change audit hook. An override of hr.applicant.write detects real stage_id changes and calls write_event on eh.hr.audit.log with the from and to stage as payload.
- Shared audit engine. All events land in the eh_hr_core append-only, hash-chained audit log, which has _log_access disabled, advisory-lock serialization and a verify_chain integrity check.
- Role-based access. HR admin and officer can create and edit scorecards; self-service employees get read-only access. The Interviews menu lives under Talent and is gated to officers and above.
Honest about the edges
What this does not do, so nothing surprises you.
- This is an extension of standard Odoo 17 Recruitment, not a replacement. It does not add job posts, application sourcing, a Kanban pipeline or recruitment email integration of its own; you keep the standard recruitment app for those.
- Ratings and recommendations are informational. The module does not auto-advance stages, reject or hire candidates based on a score or recommendation.
- The scorecard rating is a single 1 to 5 value, not a weighted multi-criteria evaluation grid.
- The tamper-evident hash chain, advisory locking and per-company isolation are provided by the required eh_hr_core dependency; this module consumes that engine rather than implementing it.
- There are no scheduled jobs, escalations or notifications in this module; auditing happens inline at the moment a stage changes.
Odoo 17 recruitment scorecard, interview rating Odoo, hr applicant audit trail, recruitment stage change log, candidate evaluation Odoo, hiring audit Odoo 17, average interview score, tamper evident hr audit, eh hr recruitment, ERP Heritage HR
Need this fitted to the way you work?
ERP Heritage delivers end to end Odoo work: Odoo Implementation, Customization and Development, Integration, Migration, Consultation, Support and Training. We help teams put this module into production, shape it to their process, and keep it running.
We work with businesses across Australia (Melbourne, Sydney, Brisbane, Perth, Adelaide, Canberra) and the Middle East (Dubai, Abu Dhabi, Riyadh, Jeddah, Doha, Kuwait City, Muscat). Start a conversation at erpheritage.com.au or email info@erpheritage.com.au.
Languages
Available in 19 languages
The interface ships translated out of the box. Switch language in Odoo and the fields, menus, and messages follow.
Please log in to comment on this module