Salary estimation & normalization
Salary normalization (hourly / monthly / yearly heuristic) and role-based estimation crossing internal data with the public INSEE and DREES APIs, surfaced as a candidate-side estimation badge.
Large PR (~3,400 lines, 72 files) bundling three salary features shipped and tested together. Normalization: unit detection (hourly / monthly / yearly) through a normalize_salary callback, annualized storage and migration of existing offers. Role-based estimation: a SalaryEstimator::Finder service and SalaryEstimation model crossing internal data with the public INSEE / DREES APIs, surfaced as a badge and a modal on the offer page, rebuilt on the Tailwind mockups (Figma v12) and deployed on Staffsanté, Staffsocial and Promed.
On search, an Elasticsearch filter extension to include offers with no stated salary but a reliable estimate, improving recall.