🚀 Positions sorted by relevance

Find highly relevant positions instantly on your Discover page

Project: 🎯 Find relevant positions Type: 🚀 Feature User: 💁🏻‍♀️ People

Key changes

Notion image
  1. A powerful new sorting algorithm presents positions based on how well-matched they are to your interests, excluding positions that don’t match essential criteria
  1. The Discover page has been simplified by removing arbitrary categories
  1. Salary Benchmarking has been moved to its own page
 

Why?

34% of product improvement suggestions from our users are related to finding more relevant positions. For most users, this is the critical first step in having a positive experience so we’ve committed to making significant improvements in how it works. Previously when using the Discover page, an individual’s interests and preferences weren’t given enough significance. Arbitrary categorisation caused users to see fewer positions and often miss the most relevant ones.

What?

Your homepage is now simplified to show you only a list of positions that are right for you, ordered by most relevant using your preferences as specified on your profile.

This means if you are a Senior Back End Developer, looking for a position in a Fin-tech Company with 1-10 employees, using Node.JS… that’ll be the first position you see when you log into cord.

Notion image
 

Nb. The Salary Benchmarking Tool (SBT) now has its own place on the top navigation so that it is more easily accessible. P

How?

Stripping back on the front end allowed us to present this cleanly to users, but the deep work happened on the back end. Resident BE Dev, Hasan built a logic that prioritised positions based on relevance.

Essential criteria (eg must meet Work Eligibility preferences) were used as filters, and the remaining criteria (eg preference for fin-tech company) were used to create a score for the relevance of the position. The more matches, the higher the score.

This score was then weighted and generated a list of positions based on relevance. It works beautifully.

Want even more details? Open this

Results are first retrieved from the database using the following filters

  • Standard base conditions
    • Not invisible, hidden, deleted and listing must be active
  • Job title
  • Remote preferences
  • Work eligibilities
  • Salary
    • we allow for positions slightly above or below, the range is calculated dynamically depending on the salary size
    • More than 70k, 15k below and 20k above
    • More than 50k, 10k below and 20k above
      • If the salary is bigger than 90k, we allow positions 25k below (listing min salary) and 30k above (listing max salary)
    • Otherwise, 10k below and 15k above
  • Filter out positions that are
    • in candidates shortlist (only hidden)
    • already in progress application
    • the company is in their unlisted list
 

Once we have these results, we score their relevance based on the below conditions

  • Seniorities → Candidate seniorities
  • Primary/secondary skills → Candidate skill preferences
    • If preferences are null we will revert to use primary/secondary skills
      • Primary listing skills → Candidate primary skills
      • Secondary listing skills → Candidate primary + secondary skills
  • Industry → Candidate industry preferences
  • Funding stage → Candidate funding stage preferences
  • Company size → Candidate company size
  • For location, if the candidate is remote only/hybrid we check positions remote location countries/continents → Candidate remote location countries/continents
    • If a candidate is not remote only, we also check position location → Candidate location preferences
 

Relevance is scored by the “exactness” of the match, this is mainly based off the frequency that the candidate preferences appear e.g. if the candidate has React and Javascript skills and both React and Javascript were in the listing, this would be scored higher than another listing that only has Javascript

Conditions can be weighted e.g. a listing which matches job title can be scored above another listing that matches funding stage.

For now weightings cannot be individual to the candidate and are controlled by cord.

 

Finally, we order the results by scores descending and then by response rate, last active. Meaning that if a two positions have the exact same relevance score, we check response rate, if response rate is the same, we check last active.

What’s next?

Over the next few weeks, we'll be continuing to develop this feature, with the goal of allowing you to build your own relevance engine, and weigh your preference yourself.

 
 
 
 
 
Did this answer your question?
😞
😐
🤩

Last updated on February 21, 2023