Drop us a line
If you are interested in the development of a custom solution — send us the message and we'll schedule a talk about it.
MyAmichi is a recruiting platform, created mostly with the aim to help recruiters and job seekers from the IT community to meet each other.
The platform has two types of users: recruiters and job candidates. Each candidate has their profile containing necessary information, such as personal information, previous education, working experience, skills, contact information etc.
While looking for a candidate, a recruiter specifies the skills that a candidate must have for the job. Then, he gets the list of candidates ordered by the matching rates between the recruiter’s requirements and the candidate’s profile.
One of the most important matching criteria is the candidate’s set of skills. The problem laid in that the algorithm considered only the perfectly matched skills. Quite often job seekers indicate skills very similar to what a recruiter is looking for, but because of the strict nature of the search engine matching mechanism, those candidates were overlooked and didn’t appear among the search results at all. For example, if a recruiter looked for someone with strong knowledge of C++, and a job seeker had indicated that he excelled at “C++ embedded” , the latter wouldn’t be shown among the search results, although the skills are very much alike. Another thing to improve was that the algorithm didn’t consider connections between some skills, which exist among different programming languages and frameworks. For instance, the candidate with skill “Django” is likely to have skill “Python” (as Django is a Python framework), but the algorithm wouldn’t pay attention to this fact while assigning scores, so a part of relevant candidates could have been missed.
Our objective was to improve the skill matching algorithm to make it work properly in these cases.
While checking a candidate for matching the recruiter’s skills requirements, the algorithm compares the required skill and the candidate’s set of skills (so it’s not that the whole pool of the recruiters skills being forced to comply with the candidate’s). This approach enables to evaluate similarity between the two skills being compared.
MyAmichi allows candidates to import skills from their LinkedIn accounts instead of typing them manually. Such import is possible because MyAmichi skills are mostly the same as the skills on LinkedIn website. Therefore, the problem is to find skills similarity in LinkedIn skills domain.
It’s worth noting that the similarity between the skills Sr and Sc is asymmetric. For example, skill “AngularJS” usually implies having skill “JavaScript” (as AngularJS is a JavaScript framework), but that is not true for the opposite case: knowing JavaScript doesn’t necessarily mean knowing AngularJS.
Let’s denote the set of skills of user u as skills(u) . Then as an estimate of the match degree between recruiter entered skill Sr and a candidate skill Sc we can use conditional probability of having skill Sr given that the candidate has skill Sc , i.e.
According to the definition of conditional probability, we have the following equation:
Thus, in order to calculate match degree between Sr and Sc we need to estimate two kinds of probabilities:
for a given skills
for a given pair of skills s 1 and s 2.
To estimate these probabilities, we used an external data source StackOverflow. Each topic on the site is labelled with one or more tags, so the topics were found relevant to the skills matching.
We mapped a significant part of LinkedIn skills to StackOverflow tags combining the following simple techniques:
The following considerations explain the calculation of the extent to which candidate skill Sc matches the skill Sr entered by a recruiter.
Let’s denote the set of tags of a StackOverflow topic t as tags(t)
Let T be the set of all topics on StackOverflow.
Having the LinkedIn to StackOverflow mapping f, we can approximate for a random topic t ∈ T. Similarly, can be approximated by for a random topic t ∈ T .
for a given StackOverflow skill s’ and a random topic t ∈ T is estimated to be
Similarly, for given StackOverflow skills s’1 , s’2 and a random topic t ∈ T estimated to be
Therefore, the extent to which candidate skill – Sc matches the skill – Sr entered by a recruiter is calculated by the formula:
The developed smart-matching algorithm provides more reasonable and precise search results. It has greatly improved the recruiters’ ability to find suitable candidates: on average there are 27% more relevant candidates found in searching results than before.
If you are interested in the development of a custom solution — send us the message and we'll schedule a talk about it.
JavaScript, Ruby
HR Planning SoftwareThe customer asked Azati to audit the existing solution in terms of general performance to create a roadmap of future improvements. Our team also increased application performance and delivered several new features.
Python
Stock Market Trend Discovery with Machine LearningAt Azati Labs, our engineers developed an AI-powered prototype of a tool that can spot a stock market trend. Online trading applications may use this information to calculate the actual stock market price change.
Python
Semantic Search Engine for Bioinformatics CompanyAzati designed and developed a semantic search engine powered by machine learning. It extracts the actual meaning from the search query and looks for the most relevant results across huge scientific datasets.
Java, JavaScript
E-health Web Portal for International Software IntegratorAzati helped a well-known software integrator to eliminate legacy code, rebuild a complex web application, and fix the majority of mission-critical bugs.
JavaScript, Ruby
Custom Platform for Logistics and Goods TransportationAzati helped a European startup to create a custom logistics platform. It helps shippers to track goods in a real-time, as well as guarantees that the buyer will receive the product in a perfect condition.