Press "Enter" to skip to content

Vacancy-optimized resume in an automated way

Once a colleague of mine told me he had sent out about one thousand resumes to find a suitable job. I was impressed and could not imagine how I would complete a similar task. I usually tailor my resume to meet the requirements of a specific position.

When you have diverse work experience, you would like to prioritize selected important achievement records and withdraw irrelevant ones. If you have overlapping job positions due to part-time or project-based positions, you might have these positions as a higher priority in the list.

Ways of tailoring your resume

There are several approaches to tailor a resume of C.V. You could filter and sort by job only and leave all job content unedited. You could also keep the complete job history list but rearrange and preserve important achievements inside each position. Alternatively, you could select and alter the content using both methods.

Additionally, there is the time dimension. Job experiences are usually less interesting to employers as they are further back in time. It might be advantageous to hide older records unrelated to the new position.

In my case, almost every job position includes tasks from different spheres of work. For example, at Pskov Volny Institute, I conducted sociological research projects, organized alumni reunion events and lectured on measurement theory and data analysis. If applying for a research position, I would include records on sociological projects and teaching experience but omit the alumni-relations tasks.

So for a specific resume, I want to rearrange overlapping or adjacent positions to move the more important records higher in priority. I need to keep only relevant achievements for each position record and sort them from most to least relevant.

How to implement automatic resume tailoring

Keep relevant records only

We want to match specific experience records to a specific vacancy. A record can be related to the vacancy or not. If it is related, we keep it; else, we discard it. In this case, I retain research projects and lectures but drop alumni.

To get this yes/no relationship, we introduce tags. Each achievement record is to be marked with one or more tags. Sociological projects can have tags such as, among others: project management, opinion poll, data analysis, and research.

When I find an interesting vacancy, I tag it, also. The Research position tags could get research, data analysis and presentation skills. Our algorithm should look through the records and keep only those with the same tags as the position.

Order of records

Each related record has a different value for the vacancy. About the research position, my sociological projects are more important than lectures and, therefore, should be higher on the list than lectures.

To fulfill this requirement, we estimate the value of a record toward each tag. The sociological project record is twice or thrice more valuable in data science than my lectures (there were subjects on data analysis, yes). So for data analysis positions, the first record gets three scores, and the second one gets one.

What tags and values to use

I’m developing this technique and have used it only once with added tags for one specific position application. I expect that with time and the addition of appropriate tags, my records will have a sufficient range and quantity to cover a wider variety of possible vacancies.

Values for tags are relative to each other. You can define a default tag value. For example, score 1. It means an achievement is entirely related to the tag. If the achievement is partly associated with the tag, you score it 0.5 or 0.3. If the achievement exceeds the average level, you put in 1.5, 2 or 3. So very highly related scores > 1, less related scores < 1.

What to do with the time dimension

We usually arrange our job records in reverse chronological order. Usually, it is OK, but in some cases, you might prefer to push some records up in priority. I decided to combine both the value and age of my records. If a record is relatively recent but has a higher value for target vacancy, it is placed before a newer record with a lower score.

I’ve tested this approach once. It required a little iterative testing to achieve good results.

Application in R language

I implemented the approach described above in a set of scripts in the R programming language. The source code is available in our GitLab account: R script resumer. All technical details are explained in the README file.

The structure consists of three parts: head, body and tail. The body and tail are not modified by the algorithm and are presented as text files in Markdown format.

Information with job experience is stored in a text file in YAML format. Each job is described by the title of the position, name of the organization and period of work. Also, it can store an unlimited number of sub-records with achievements. Each achievement has a description and some tags with associated values.

The script produces a final document in Markdown format. After a manual check, it generates a PDF version file of the resume with Pandoc software.

Alexander Matrunich wrote it for Rstat.Consulting on October 14, 2017.

Leave a Reply

Your email address will not be published. Required fields are marked *

Защита от спама *