There’s a strange blind spot in most recruitment software. You can track candidates through every stage of the hiring funnel — sourcing, screening, interviews, assessments — but the moment an offer goes out, visibility drops off a cliff. Did it get accepted? How long did the candidate sit on it? How does the salary compare to what you offered for the same role six months ago? Most teams end up answering these questions in spreadsheets, if they answer them at all. Odoo 20 fills that gap with a new Offer Analysis report built directly into the Recruitment module.
What the Report Actually Shows
The Offer Analysis report lives inside the Recruitment app’s reporting section, right alongside the existing pipeline and source analysis views. It pulls together every offer your organization has extended and breaks them down by status — accepted, declined, pending, expired — across any time range you choose. The numbers aren’t just counts. You get acceptance rates as percentages, average time-to-offer from application date, and salary figures grouped by department, job position, or individual recruiter.
The practical difference is that HR managers can now answer “are we losing candidates at the offer stage?” without exporting data to a separate tool. If your engineering team’s acceptance rate is 90% but your sales team’s is hovering around 55%, that discrepancy shows up immediately — and it shows up in the same system where you’re managing the candidates themselves.
Why This Matters More Than It Sounds
Offer-stage analytics tend to be treated as a nice-to-have, something that large enterprises build custom dashboards for while everyone else just checks in with hiring managers over coffee. But the offer stage is where recruitment costs actually materialize. A declined offer after three rounds of interviews represents weeks of lost time for interviewers, coordinators, and the candidate themselves. Multiply that by a dozen open positions and you’re looking at real money.
The report makes patterns visible that are otherwise invisible. Maybe offers that take more than 48 hours to send after the final interview have a 40% lower acceptance rate. Maybe a particular department consistently offers below market and wonders why their top picks keep declining. These aren’t hypotheticals — they’re the kinds of patterns that only surface when you have structured data across enough offers, and that data has to live somewhere accessible to the people making hiring decisions.
Fits Into the Existing Pipeline
One of the cleaner aspects of this addition is that it doesn’t require any new data entry. The report draws from offer records that already exist in the recruitment pipeline. When a recruiter generates an offer through the standard workflow — setting salary, start date, and terms on the candidate’s application form — that data automatically feeds into the analysis. There’s no separate form to fill out, no integration to configure. If you’ve been using Odoo’s recruitment module to manage offers, the report is already populated with your historical data.
The grouping and filtering options follow the same conventions as other Odoo reporting views. You can pivot by department, job position, recruiter, or time period. You can switch between list, pivot table, and graphical views. And because it’s a standard Odoo report, it plays nicely with the spreadsheet integration — meaning you can pull offer metrics into the same financial models and headcount plans that live in Odoo’s spreadsheet app.
The Bigger Recruitment Picture
This isn’t the only reporting improvement Odoo has made to recruitment recently. Source analysis, pipeline velocity, and interviewer workload reports have all seen incremental improvements over the last few release cycles. But the offer analysis report stands out because it addresses the most consequential moment in the hiring process: the point where a company commits real compensation dollars and a candidate decides whether to show up on Monday.
For talent acquisition teams running on Odoo, it means one less reason to maintain a parallel reporting stack. The data that used to live in recruiter spreadsheets and quarterly review decks now lives where the actual hiring happens — and it updates in real time as offers move through their lifecycle.