Every piece of client feedback teaches the AI what "a good candidate" means for that client. After enough signal, the AI proposes a concrete search refinement — you review and apply it, and the search gets sharper with every round.
Clients rate candidates from two places, both one click:
Every rating, note, and rejection reason is recorded against the role.
Once a role has 3 or more feedback items, the AI looks for the pattern behind the ratings and generates a calibration insight with three parts:
| Part | Example |
|---|---|
| Pattern | "Strong matches all come from smaller companies where candidates owned projects end-to-end" |
| Suggestion | "Deprioritise large-enterprise backgrounds for this role" |
| Proposed change | Specific text to add to the search criteria |
Structured rejection reasons are weighted heavily — three "too junior" rejections say more than three unexplained "Not Right" clicks.
The insight appears on the role for your review. If you apply it:
You can also dismiss an insight — you know things about the client the feedback doesn't show.
One exception to review-first: if the last 3+ rejections all share the same rejection category (for example, three "too junior" in a row), the pattern is treated as unambiguous and the insight is applied automatically — the search stops wasting everyone's time immediately. You're notified when this happens and can review or reverse the change.
Before any insight is saved, the AI checks whether the feedback pattern might be a proxy for a protected characteristic — for example, a pattern that tracks age, gender, or ethnicity rather than skills.
If the check trips:
This is part of PlacementFlow's auditable-AI posture: the calibration loop can't quietly learn a discriminatory preference from click patterns.