Context
A job platform has two customers with opposed incentives. Employers want fewer, better applications. Jobseekers want more chances to be seen. Keyword search serves neither: it rewards whoever games the vocabulary, and it is blind to a candidate who describes the same experience in different words.
What I did
- Led technology and AI strategy for the company, and focused engineering on matching quality rather than listing volume — volume is the metric that looks good and feels bad to both sides.
- Introduced language-model understanding of job descriptions and profiles, so “built data pipelines in Python” and “ETL engineer” can be recognised as the same thing.
- Kept humans in the loop on anything consequential. A model that ranks is useful; a model that silently rejects is a liability, in fairness terms and in business terms.
- Invested in the delivery basics — environments, CI, observability — because matching improvements are only worth having if you can ship and measure them weekly.
- Wrote about the shift publicly, in From learning machine language to machines learning human language.
Outcome
Matching moved off pure keyword overlap toward understanding what a role and a candidate actually describe, which is the change both sides of the marketplace feel — employers in relevance, candidates in being found for work they can genuinely do.
What I’d do differently
I would have set the evaluation harness up before the model work, not alongside it. Without a stable way to say “this ranking is better than that one”, every matching change becomes an argument about anecdotes, and the loudest recent example wins. That is an expensive way to make product decisions.