1. Field
This disclosure relates to systems and methods for recommending jobseekers and more particularly to recommendations of job jobseekers to recruiters based on associative affinities.
2. General Background
Various search engines are available to users who view, apply for, request, purchase, and subscribe to items offered on the World Wide Web and other information sharing infrastructures. In addition, the exponential growth of the number of items offered on the World Wide Web can frustrate and confuse users when attempting to locate a needed item.
In particular, jobseekers can be assisted if job listing services recommend relevant job listings that have been determined to have an affinity with jobs previously applied for by the jobseeker. By doing this, jobseekers, employers, and job listing services benefit. In addition, the employer can receive a greater number of jobseeker applications for a particular job. However, recruiters have a more difficult time determining qualified potential jobseekers from the job applicant pool because of the large ratio of recruiters to jobs available at any given time.
The present disclosure addresses the need for providing a larger selection of jobseekers for any particular job. In this disclosure, a method and system is described that provides recommendations to recruiters based in part upon job to job affinities and relationships identified between various job listings.
In one embodiment, a method of establishing affinities among jobseekers is disclosed. The method comprises: monitoring jobseeker activity, with respect to job listings displayed on a web site in response to a query by a jobseeker. The activities include jobs viewed by the jobseekers and jobs applied for by the jobseekers. Each jobseeker is assigned a jobseeker ID and where each jobseeker ID is correlated with a job ID in a database for each job the jobseeker views and does not apply for. From the database a list of job IDs is obtained and sorted by job ID with corresponding jobseeker IDs of jobseekers having applied for or viewed at least one job among the list of job IDs. The jobseeker IDs in the list are then converted to integers, subsequently grouping the list by job ID. For the grouped list the group in which each jobseeker is located is determined and an affinity among jobseekers is determined in the groups according to a formula. Jobseekers having an affinity score greater than a predetermined value are then displayed to a recruiter. The predetermined value may 0.5 or the value may be adjustable and determined by the recruiter.
In one embodiment, a method is disclosed for establishing affinities among jobseekers. The method comprises: monitoring jobseeker activity, with respect to job listings displayed on a website in response to a query by a jobseeker. The activities include jobs viewed by the jobseekers and jobs applied for by the jobseekers. Each jobseeker is assigned a jobseeker ID and where each jobseeker ID is correlated with a job ID in a database for each job the jobseeker either views or applies for. From the database a list of job IDs is obtained and sorted by job ID with corresponding jobseeker IDs of jobseekers having applied for or viewed at least one job among the list of job IDs. The jobseeker IDs in the list are then converted to integers, wherein the integers are positive for jobseekers having applied for the corresponding job and the integers are negative for jobseekers having only viewed the corresponding job. The integers in the list by job ID are then grouped by job ID. For the grouped list, the group in which each jobseeker is located is determined and an affinity is determined among jobseekers in the groups according to a formula. Jobseekers having an affinity score greater than a predetermined value are then displayed to a recruiter. The predetermined value may 0.5 or the value may be adjustable and determined by the recruiter.
In one embodiment, a method is disclosed for establishing affinities among jobseekers. The method comprises: monitoring jobseeker activity, with respect to job listings displayed on a website in response to a query by a jobseeker. The activities include jobs viewed by the jobseekers and jobs applied for by the jobseekers. Each jobseeker is assigned a jobseeker ID and where each jobseeker ID is correlated with a job ID in a database for each job the jobseeker either views or applies for. From the database a list of job IDs is obtained and sorted by job ID with corresponding jobseeker IDs of jobseekers having applied for or viewed at least one job among the list of job IDs. The jobseeker IDs in the list are then converted to integers, wherein the integers are positive for jobseekers having applied for the corresponding job and the integers are negative for jobseekers having only viewed the corresponding job. The integers in the list by job ID are then grouped by job ID, wherein a zero separates each group in the list. For the grouped list, the group is determined in which each jobseeker is located and an affinity is determined among jobseekers in the groups according to a formula. Jobseekers having an affinity score greater than a predetermined value are then displayed to a recruiter. The predetermined value may 0.5 or the value may be adjustable and determined by the recruiter.
The job listing provider 112 can include a web server 104 that transmits and receives data messages with computing devices 102, 114, and 116. The computing devices 102, 114, and 116, and the web server 104 can utilize communication protocols such as HTTP. A database 120 can store recruiter profiles which, in turn, can include a record of jobseekers previously selected by the recruiter. The database 120 can also store recruiter preferences, industry information, job application patterns, interested resumes, etc.
The job listing provider 112 further includes affinity module 108 which can reside on a stand-alone computer. In another embodiment, the affinity module 108 resides in the server 104. The affinity module 108 may include logic to determine affinity between two jobseekers stored in the database 120. The affinity module 108 is further configured with logic to access, write and read data from the jobseeker database 120. Jobseeker affinity can then be utilized by the jobseeker affinity module 108 to formulate jobseeker recommendations and relay jobseeker recommendations to the recruiter. In another embodiment, a recommending module can be utilized to formulate recommendations based on jobseeker affinity.
As previously stated, the affinity module 108 can be configured to determine the affinity of jobseekers based on attributes of the jobseeker activity patterns.
In one embodiment, the affinity of two jobseekers can be represented by a similarity score s(Jobseeker 1, Jobseeker 2, Ai), where Ai is an attribute that Jobseeker 1 and Jobseeker 2 have in common. If the sum of the similarity score s(Jobseeker 1, Jobseeker 2, Ai) is greater than a predetermined value, then Jobseeker 1 and Jobseeker 2 are affiliated. In one example, the value t can be between zero and one (e.g., 0<=t<=1). In another example, the value t can be a number within any other range. The value can be set by a system operator or administrator, or by a recruiter, or programmatically, or by some combination thereof. A total affinity score of two jobseeker listings can be calculated utilizing the similarity scores of all the attributes of Jobseeker 1 and Jobseeker 2.
In another embodiment, affinity A(Jobseeker 1, Jobseeker 2) of two jobseekers can be established by comparing each of attribute1 . . . attributeN of Jobseeker 1, with each of attribute1 . . . attributeN of Jobseeker 2. N is a fixed number of attributes utilized for comparison. In particular, each attribute of Jobseeker 1, in (attribute1 . . . attributeN), is compared to each attribute of Jobseeker 2, in (attribute1 . . . attributeN). In one embodiment, if Jobseeker 1 and Jobseeker 2 share an attributei, then that attribute similarity score is added to A(Jobseeker 1, Jobseeker 2). In another embodiment, if Jobseeker 1 and Jobseeker 2 share an attribute that is similar, based on a similarity table, then that attribute similarity score is added to A(Jobseeker 1, Jobseeker 2). In another embodiment, if Jobseeker 1 and Jobseeker 2 share an attributei in common, then a number with a value of one (or a weighted value) is added to A(Jobseeker 1, Jobseeker 2). Note that the score for each attribute can be weighted differently.
In another embodiment, the affinity A(Jobseeker 1, Jobseeker 2) is established as follows. Jobseeker 1 can have an attribute of a plurality of attributes, attribute1 . . . attributeN. In addition, attribute can have Ni values. Jobseeker 2 also has an attributei of a plurality of attributes, attribute1 . . . attributeN, of Jobseeker 2 that may be in common with Jobseeker 1. In one embodiment, the affinity A(Jobseeker 1, Jobseeker 2) can be established according to the following formula: (N12i/N1i+N12i/N2i)/2. Where N12i is the number of jobs that have attribute that both Jobseeker 1 and Jobseeker 2 selected, N1i is the number of jobs that have attribute that Jobseeker 1 selected and N2i is the number of jobs that have attribute that Jobseeker 2 selected. In another embodiment, the affinity A(Jobseeker 1, Jobseeker 2) can be established according to the following formula: (N121/N11+N121/N21)/2+ . . . +(N12i/N1i+N12i/N2i)/2.
It should be understood that the jobseeker selection module 204 may be implemented as one or more physical devices that are coupled to the processor 206 through a communication channel. Alternatively, the jobseeker selection module 204 may be represented by one or more software applications (or even a combination of software and hardware, e.g., using application specific integrated circuits (ASIC)), where the software is loaded from a storage medium, (e.g., a magnetic or optical drive or diskette) and operated by the processor 206 in the memory 210 of the computing device 102. As such, the jobseeker selection module 204 (including associated data structures) of the present disclosure may be stored on a computer readable medium, e.g., RAM memory, magnetic or optical drive or diskette and the like.
The jobseeker selection module 204 can be utilized by a recruiter to make jobseeker selections, such as matching a jobseeker from an Internet web site to a client for whom the jobseeker may be able to fill an employment position. In addition, the jobseeker selection module 204 can receive jobseeker affinity data from the server 104. The jobseeker selection module 204 can be configured to automatically make selection decisions based on affinity data and recommendations received from the server 104.
The jobseeker selection module 204 can be a computer application such as, by way of non-limiting example, an Internet browser or any other network communication software or hardware that permits a user to interact with the server 106.
In one embodiment, where the affinity of jobseekers is established independent of user interaction, the jobseeker selection module 204 is not essential because no user, such as a job recruiter, interaction is necessary to establish the affinity of two jobseekers. In another embodiment, the jobseeker selection module 204 provides jobseeker interaction data which can be utilized to establish jobseeker affinity based on the number of jobseekers that have selected a viewed or applied for a job.
At process block 304, a second jobseeker is identified. A second jobseeker can be also be retrieved from the database 120. In another example, the second jobseeker can be obtained from a new entry by the job listing provider 112. The process 300 continues to process block 306.
At process block 306, a similarity is determined between a first jobseeker attribute and a second jobseeker attribute. The similarity between two attributes can be determined utilizing predefined rules. In one example, a first jobseeker attribute and a second jobseeker attribute can be deemed similar only if the corresponding values are identical. For example, if the attribute is Location, the Location for a first and a second jobseeker is only similar if the location for both jobseekers is “Chicago.” In another embodiment, the first jobseeker attribute and the second jobseeker attribute can be deemed similar if there is a match of the first jobseeker attribute and the second jobseeker attribute in a predefined relational table. In another embodiment, the first and the second attributes are similar based on heuristic models implemented by a system administrator, jobseekers, recruiters, or programmatically. Two attribute values can be similar even when the attribute values are not identical. In one example, two locations can be deemed similar based on proximity. In another example, the predefined relational table can include locations that are similar even though the name of the location is not the same. Further, the table may indicate the level of similarity of the two attributes. For example, a location of San Francisco and a location of Berkley can have a higher similarity location than a location of San Francisco in comparison with San Jose.
Alternatively, the level of selection can be utilized to determine a similarity score. For example, if a jobseeker viewed a first job and a second job, a low similarity score is assumed for both jobs. If the jobseeker applied for both jobs, however, a higher similarity score for the two jobs can be assumed. In addition, the similarity score can then be utilized in the aggregate with other similarity scores of other users. Thus, if a high number of jobseekers applied for the same two jobs, there is a greater probability that the two jobs are closely related, which can be reflected in the sum of similarity scores. The process 300 continues to process block 308.
At process block 308, the first jobseeker and the second jobseeker are established to share affinity if the first jobseeker attribute and the second jobseeker attribute were determined to be similar. A value of similarity can be established. In another embodiment, the value of similarity can be predefined by a recruiter. For example, one recruiter can establish a high value of similarity if the recruiter only wants to view recommended jobseekers that have very close affinity to those jobseeker listings that the recruiter has previously viewed or selected. Likewise, another recruiter can establish a low value of similarity if the recruiter wants to view recommended jobseekers that are loosely related to those job listings that the recruiter has previously viewed or selected. In yet another embodiment, the value of similarity can be predefined according to the attributes being compared.
At process block 402, a first jobseeker is identified to be a good fit for a particular job. A recruiter has determined that this job candidate is a suitable fit and for a particular job and the recruiter would like to search for similar candidates. The process 400 continues to process block 404.
At process block 404, the jobs selected by the first jobseeker are retrieved from the database 120 by the affinity module 108 to determine other jobseekers that are selected for jobs in common with the first jobseeker. In one embodiment, the word “selected” means that the jobseekers applied for a particular job listing. In another embodiment, the word “selected” means that the jobseekers viewed a particular job listing. In yet another embodiment, the word “selected” means that the jobseekers rated a first job listing and a second job listing. Thus, a jobseeker is deemed selected based upon a flexible or application-specific variety of user interaction events.
The process 400 continues to process block 406. At process block 406, a second jobseeker is determined to be another good job candidate due to having selected a number of jobs in common with the first jobseeker. An affinity between the first jobseeker and the second jobseeker is determined. In one example, the affinity between the first jobseeker and the second jobseeker is the number of selections both the first jobseeker and the second jobseeker had in common. In another example, the affinity between the first jobseeker and the second jobseeker is a number proportional to the number of jobs for which both the first jobseeker and the second jobseeker applied and viewed, wherein the jobs viewed may be of a different, lesser weight than the weight given to having applied for the same job. The process 400 continues to process block 408.
At process block 408, the results of the jobseeker search results that include the information of the second job candidate is presented to the recruiter.
At process block 504, a list of job IDs is obtained from the database 120 with corresponding jobseeker IDs of jobseekers having applied for or viewed at least one job among the list of job IDs. The process 500 continues to process block 506.
At process block 506, the list is sorted by job ID. The process 500 continues to process block 508. At process block 508, the jobseeker IDs are converted to integers. The process 500 continues to process block 510.
At process block 510, the integers are grouped by job IDs. By grouping the integers it is easy to determine in which groups each jobseeker is located. The process 500 continues to process block 512.
At process block 512, an affinity is determined among jobseekers in each group according to the formula:
Where S is an affinity score, N12 is a total number of jobs for which two jobseekers individually applied, N1 is a total number of jobs for which a first jobseeker applied, and N2 is a total number of jobs for which a second jobseeker applied. In one example, jobs viewed would also be included in calculating N12, N1 and N2. In another example the jobs viewed would be weighted less than the jobs applied for in determining N12, N1 and N2. The process 500 continues to process block 514.
At process block 514, jobseekers having an affinity score greater than a predetermined value are displayed to a recruiter, concluding process flow operations.
As an illustrative example, data associated with jobseeker activity on a job listing provider 112 is collected and stored in a database. The data, pre-sorted, for two jobseekers and two jobs collected by the system may appear as follows:
Wherein “a” stands for “apply” and “v” stands for “view.” “Apply” means that the jobseeker applied for this job and “view” means that the jobseeker viewed the details of this job but did not apply.
After sorting the data:
In order to save memory and disk space the jobseekers are converted into integers. The data would then appear as follows:
Wherein Jobseeker1 is represented by the integer 1 and Jobseeker2 is represented by the integer 2.
A list is then created that maps the jobseeker id to an integer and determines which and for how many jobs each jobseeker applied and/or viewed. Such a list may appear as follows:
From above, we know that jobseeker1 is mapped to integer 1 and he/she applied to 2 jobs and viewed 0 jobs. Jobseeker2 is mapped to integer 2 and he/she applied to 1 job and viewed 1 job. This data will be used to calculate the affinity scores when the integers are mapped back to the jobseeker IDs.
An array of the above data is then created. The array includes job data for all of the jobseekers. The array for two jobseekers and two jobs may appear as follows:
In the array above, 0 is used to divide the integers (jobseekers) into different groups. Each group represents a set of jobseekers who applied for or viewed the same job. In this example, the minus sign represents a job that the jobseeker “viewed;” otherwise he/she “applied” for the job. Therefore, 1 (jobseeker1) applied to job1 and job2 and 2 (jobseeker2) viewed job1 and job2 (because of the minus sign). In calculating the affinity, to what job a group applied or viewed is not important because the job acts as a link between jobseekers. That is why the array does not include job information.
A file is created that contains the starting positions of each group in the array of which each jobseeker is a part. For example:
From the data above, we can see that jobseeker 1 (integer 1) and jobseeker 2 are in the groups starting from position 0 and position 3 in the array (note that the first position is denoted by 0).
An affinity is then calculated based on above data structure. The formula used to calculate the affinity score between jobseeker1 and jobseeker2 is:
Where S is the affinity score, N12 is the total number of jobs to which jobseeker1 and jobseeker2 both applied, N1 is the total number of jobs to which jobseeker1 applied and N2 is the total number of jobs to which jobseeker2 applied.
In one instance, jobs viewed would count in the calculation with different weights being applied (less than or equal to 1) to the viewed data and the applied-for data because having applied for a job means that the job is more relevant to a jobseeker than a job the jobseeker simply viewed. Therefore, having applied for a job would be given more weight than having viewed a job in determining the affinities. Alternatively, the applied for and viewed data may have identical weights. Taking viewed data into account, N12 would be total number of jobs to which jobseeker1 and jobseeker2 both individually applied plus the total number of jobs that jobseeker1 and jobseeker2 both individually viewed and N1 would be the total number of jobs for which jobseeker1 applied and viewed and N2 would be the total number of jobs for which jobseeker2 applied and viewed.
Now for each jobseeker, we can obtain the location of each jobseeker within the groups.
Referring to the file created above:
The first number corresponds to a jobseeker. The following numbers are the starting positions of groups in the array in which each jobseeker is located. For example, in the first line, Jobseeker1 (integer 1) belongs to the groups starting from position 0 and 3. To obtain all recommendations for jobseeker1, we first go to the group starting from position 0 and get all jobseekers located in this group. Each jobseeker has either “applied for” or “viewed” the job corresponding to the group of position 0. For simplicity in this example, the views are weighted the same as the applies. For each jobseeker in the group, add 1 to the total number for this jobseeker (for N12 defined above). Add 1 to the total number for jobseeker2—now the total is 1 (N12=1 for now). Go to next group (starting from 3), we find jobseeker2 again, so add 1 to the total. Now N12 becomes 2. We have already calculated the total applies/views for each jobseeker. Therefore, the affinity between jobseeker1 and jobseeker2 is calculated as follows: total jobs for which jobseeker1 applied or viewed is 2 and total jobs for which jobseeker2 applied or viewed is 2, and total jobs for which both of them applied or viewed is 2, so,
Affinity=2/2*2=0.5
Looping through the file will get all the affinities for all the jobseekers.
In another, more complex, illustrative example, expanding the number of jobseekers, the data associated with jobseeker activity on a job listing provider 112 is collected and stored in a database. The data, pre-sorted, for multiple jobseekers and multiple jobs collected by the system may appear as follows:
Wherein the character “a” stands represents a job that a jobseeker “applied for” and “v” represents a job that a jobseeker “viewed” where the jobseeker viewed the details of this job but not applied.
The data is then sorted by job ID:
In order to save memory and disk space the jobseekers are converted into integers. The data would then appear as follows:
Next, a list is created that maps the jobseeker ID to an integer making it possible to easily determine how many jobs each jobseeker applied for and viewed:
In the above list, jobseeker1 is mapped to integer 1 and he/she applied to 4 jobs and viewed 1 job. Jobseeker2 is mapped to integer 2 and he/she applied to 2 jobs and viewed 3 jobs. Jobseeker3 is mapped to integer 3 and he/she applied to 3 jobs and viewed 0 jobs. Jobseeker4 is mapped to integer 4 and he/she applied to 1 job and viewed 1 job.
An array of the data is then created.
[1, −2, 3, −4, 0, 1, −2, 0, 1, 2, 3, 0, 1, −2, 3, 4, 0, −1, 2, 3]
Note that in the array above, 0 is used to divide integers (jobseekers) into different groups. Each group represents a set of jobseekers who applied to or viewed the same job; different groups applied to or viewed different jobs. The minus sign implies that the jobseeker “viewed” the job; otherwise he/she “applied” to the job. In the example above, 1 (jobseeker1) applied to job1 and 2 (jobseeker2) viewed job1 (because 2 has a minus sign), and the same two jobseekers also applied to or viewed job2. In the actual calculation, to what job a group applied or viewed is not important because the job only acts as a link between jobseekers. That is why in the array we don't have any job information.
In this step, we also create a file that contains the starting positions of the groups in the array to which each jobseeker belongs:
From the data above, we can see that jobseeker 1 (integer 1) and jobseeker 2 are in the groups starting from position 0, 5, 8, 12 and 17 in the array (note that the first position is denoted by 0).
Using the above data structure, an affinity among jobseekers can be determined using the equation:
Where S is an affinity score, N12 is a total number of jobs for which two jobseekers individually applied, N1 is a total number of jobs for which a first of the two jobseeker applied, and N2 is a total number of jobs for which a second jobseeker applied. The jobseeker results are displayed to a recruiter, each having an affinity score with another jobseeker greater than a predetermined value.
In one instance, jobs “viewed” are also taken into account. In such an instance, N12 would be the total number of jobs for which jobseeker1 and jobseeker2 both individually applied plus the total number of jobs that jobseeker1 and jobseeker2 both individually viewed, N1 would be the total number of jobs for which jobseeker1 applied plus the total number of jobs viewed and N2 would be the total number of jobs for which jobseeker2 applied plus the total number of jobs viewed.
In another instance, jobs viewed would count in the calculation with different weights being applied (less than or equal to 1) to the viewed data and the applied-for data because having applied for a job means that the job is more relevant to a jobseeker than a job the jobseeker simply viewed. Therefore, having applied for a job would be given more weight in determining the affinities than having viewed a job. Alternatively, the applied-for and viewed data may have identical weights.
The above 5 jobs and 4 jobseekers yields the following:
Using the equation to determine the affinities and assuming that views are weighted the same as applies:
Thus, for example, if a recruiter selects a job, namely Job 1, the recruiter can be recommended jobseeker2, jobseeker3, and jobseeker4, along with the number of other common jobseekers.
While the apparatus and method have been described in terms of what are presently considered the most practical and preferred embodiments, it is to be understood that the disclosure need not be limited to the disclosed embodiments. It is intended to cover various modifications and similar arrangements included within the spirit and scope of the claims, the scope of which should be accorded the broadest interpretation so as to encompass all such modifications and similar structures. In addition, attributes utilized in some examples, the number of users or jobseekers, and other particular details are disclosed for discussion and exemplary purposes only. The present disclosure includes any and all embodiments of the following claims.
This application is related to U.S. patent application Ser. No. 11/442,108, filed on May 25, 2006 and U.S. patent application Ser. No. 11/441,997, filed on May 25, 2006, the disclosures of which are incorporated by reference in their entirety.