Automated Resume Analysis and Phone Screening for HR Processes

Read Time:
minutes

Introduction 

Recruiters often spend a mere 6-8 seconds to 3 minutes scanning a resume during the initial screening process. This brevity is necessitated by the flood of applications—sometimes numbering in the hundreds or even thousands—for a single position. 

Regrettably, this rapid pace can result in deserving candidates being overlooked or less qualified candidates being selected. 

To manage this overwhelming volume, recruiters have traditionally relied on Applicant Tracking Systems (ATS) software. These systems screen a staggering 75% of resumes before they ever reach human eyes. Consequently, crafting resumes with targeted keywords has become crucial to navigate this initial filtering hurdle effectively. 

Yet, these traditional methods fall short in providing a comprehensive and interactive system that thoroughly evaluates candidates' profiles, highlighting not just their skills and achievements, but also areas where they may need to upskill to fit the selected job role.

How AI Can Help with Recruiting  

The recruitment landscape is undergoing a significant shift. Artificial intelligence (AI) is rapidly transforming how companies identify, attract, and hire top talent. This not only benefits recruiters by saving time and resources, but also enhances the candidate experience by streamlining the process and providing personalized interactions.

Here's a deeper dive into how AI is changing the game, 

  • Automated Phone Screen Scheduling

Platforms like Bland.ai utilize Machine Learning (ML) algorithms to analyze calendar availability and candidate preferences, automatically scheduling phone screens with high accuracy. These platforms go beyond scheduling by integrating Natural Language Processing (NLP) to analyze speech patterns and sentiment during phone interviews. NLP can extract valuable data on communication skills, personality traits, and alignment with the job description, providing a more holistic view of the candidate.  

  • Precision Resume Screening and Matching

Goodbye Keyword Stuffing, Hello Skill Matching! Gone are the days of keyword-heavy resumes designed to bypass applicant tracking systems (ATS). Deep Learning models can now analyze resumes for relevant skills and experience with a much deeper understanding. These models are trained on massive datasets of resumes and job descriptions, allowing them to identify not just keywords, but the actual capabilities and background required for the role. This allows for a more nuanced shortlisting process, focusing on the most qualified candidates based on a true skills match. In this blog, we'll be utilizing a closed source language model from OpenAI.

  • Automated Code Evaluation

AI is revolutionizing technical assessments, enabling recruiters to evaluate candidate proficiency faster and more accurately. Static and dynamic code analysis tools automate initial checks for syntax errors, vulnerabilities, and coding standards adherence. Code similarity detection helps identify plagiarism. But AI goes beyond automation. Tools like GitHub Copilot, an AI pair programmer, can suggest code completions during interviews, revealing a candidate's problem-solving approach and understanding of AI assistance. The open-source LLM landscape is also evolving. Facebook's CodeLlama model, fine-tuned on a massive code dataset, can analyze submissions for code quality and best practices. The future lies in combining these tools for a holistic view of a candidate's technical skills, assessing problem-solving, understanding of AI tools, and ability to write clean, efficient code. This empowers companies with a data-driven and efficient technical recruitment process.

  • Automated Grading and Performance Analysis

Instead of relying solely on predefined rubrics, AI can leverage algorithms like XGBoost, a powerful machine learning model, to  analyze candidate assessment data and identify patterns that correlate with desired competencies. This allows for a more nuanced evaluation that goes beyond just answering questions correctly, but assesses a candidate's  problem-solving approach, decision-making skills, and  alignment with the specific role requirements. AI assessments can  personalize the testing experience by utilizing adaptive testing techniques. These assessments use Bayesian networks, a type of probabilistic graphical model, to  adjust the difficulty level of questions based on a candidate's  previous responses. This ensures a more efficient assessment process that focuses on areas where the candidate's strengths and weaknesses need to be  pinpointed.

  • Personalized Onboarding Plans

Reinforcement learning algorithms can be used to create personalized learning paths that dynamically adapt based on a new hire's performance during training modules. These algorithms reward successful completion of tasks and adjust the difficulty or offer alternative learning materials based on the new hire's progress. This personalized approach optimizes the learning process, ensuring new hires acquire the necessary skills efficiently and effectively.In today's competitive job market,  embracing AI is no longer a choice – it's a necessity for staying ahead of the curve.  At Ionio, we're at the forefront of this revolution, leveraging AI to  revolutionize  the recruitment process and connect  companies with the  perfect talent.

The AI-Powered Process

Process Flow for the automation

Step 1: Resume/CV Upload and Extraction 

The workflow starts by asking the admin (or the applicant) to upload a resume/CV. Once the resume/CV has been uploaded, the text is extracted using the Python library, PyPDF. This extracted text is then stored in a text file, “extracted_text.txt”

Step 2: Job Role Input 

Next the user is asked to enter the job role for which the candidate is being evaluated, the {role} variable gets assigned.


with open("extracted_text.txt", "r") as file:
    information = file.read()
role = input("Enter the role: ")

The extracted_text.txt file is opened in read mode and the strings are stored in the {information} variable. 

 

Step 3: Large Language Model (LLM) Analysis 

The extracted text from the resume/CV and the job role are then passed to a general Large Language Model (LLM), in this case, the "gpt-3.5-turbo-0125" model. 


summary_prompt = PromptTemplate(
        input_variables=["information", "role"], template=summary_template
    )
    llm = ChatOpenAI(model="gpt-3.5-turbo-0125", temperature=0.5)
    chain = LLMChain(llm=llm, prompt=summary_prompt)
    # print(chain.invoke(input={"information": information, "role": role}))
    result = chain.invoke(input={"information": information, "role": role})
    summary = result["text"]
    return summary


Here we pass two variables to the model, {information} and {role}. The {information} variables is the extracted resume strings that we store in a txt file. This contains the resume details.
Whereas the variable {role} takes input from the recruiter or is already being defined which tells about the role for which the hiring is all about.

The model is initiated with a summary template that generates the following outputs,


summary_template = """Generate a summary and give a brief description of the 
person based on the provided {information} resume details. In the end, conclude whether the
person is suitable for the {role} role. Only consider the
candidate for acceptance if they possess relevant skills or passion
for the job role; otherwise, reject them. Provide strong reasons for
whether you accept or reject the candidate. 
The conclusion should be clear and concise and start with a heading 'Conclusion'. 
It should follow this pattern - 
Summary of Candidate:
Based on the provided resume details, the candidate possesses a diverse skill 
set and experiences {information}. They have 
demonstrated proficiency in mention key skills and experiences relevant to the job role{role}. 
Furthermore, the candidate exhibits a strong passion for mention any relevant 
interests or activities related to the job role, if not leave it.

Conclusion:
Considering the candidate's qualifications and experiences, they are deemed
suitable for the {role} role. Their expertise in mention specific skills and 
demonstrated passion for mention relevant interests align well with the 
requirements of the role. Therefore, I recommend accepting the candidate for the position.
"""


1. Summary of Candidate: A summary and brief description of the person based on the provided resume details. 

2. Conclusion: A conclusion on whether the person is suitable for the specified job role or not, considering their relevant skills, passion, and experiences. 

3. Questions to be Asked: Two questions generated based on the resume and in the context of assessing the candidate's fit for the job role. 

Step 4: Initial Screening Decision

Based on the final conclusion provided by the LLM, the recruiter can decide whether to proceed with the application or not. This completes the first phase of screening.

Step 5: Phone Interview

The next step of screening is the phone interview part, where we make use of a service called Bland.ai, which is a phone calling platform that can be integrated with applications tailored to specific needs. 

This is Bland.ai's dashboard. Here, you can see their different services. The Send Phone Call service lets you make a call to a chosen number. Conversation Pathways is a more advanced feature with complex interactions.

You can either choose Send Phone Call to set up the task or click on documentation for the Send Phone Call option. When the page opens, you'll see an interface where you can enter the phone number for the call destination. The prompt is the instruction the AI follows during the call.


You can also adjust settings like voice profile, which offers various built-in and public AI voices, or even opt for voice cloning. There are other options to explore, such as voice settings, wait_for_greeting, and call recording.

For our purpose, the recruiter initiates a phone call with the applicant and enters their contact number along with the country code.

Utilizing the advanced calling feature in Bland.ai, I tailored the tasks and greetings. In this context, the task serves as the primary instruction for the agent to proceed with the process.


def calling():
		url = "https://api.bland.ai/v1/calls"
    payload = {
        "phone_number": "+916267702526",
        "task": """The main objective of this phone interview is to gather 
        additional information about the candidate who has been shortlisted 
        based on their resume. The goal is to assess the candidate's 
        qualifications, experiences, and overall suitability for the job role.""",
        "first_sentence": """Hello, I'm calling from Ionio regarding
          the application you expressed interest in. Could you 
          confirm if this is a convenient time to speak?""",
        "wait_for_greeting": True,
        "model": "base",
        "tools": [],
        "record": True,
        "voice_settings": {},
        "language": "eng",
        "answered_by_enabled": True,
        "temperature": 0,
        "amd": False,
    }
    headers = {
        "authorization": "YOUR_KEY",
        "Content-Type": "application/json",
    }
    response = requests.request("POST", url, json=payload, headers=headers)
    response_json = response.json()
    print(response_json.get("message", ""))

This sends a call to the candidate, and the bot on call greets the applicant and asks tailored questions. These questions can be either generated by the LLM or based on the recruiter's input. The questions can be changed by the recruiter anytime. Bland.ai provides multiple calling bot profiles, and we use the default male voice. The bot is responsive and records the call, providing a transcript of the conversation. 

Step 6: Final Conclusion 

After the AI-conducted phone interview, use the "Get Transcript" feature in the Bland.ai dashboard and enter the call ID. This will give you the transcript text. You can then provide this transcript to the language model, which will analyze the interview content and provide a final assessment on whether the candidate is a good fit for the role.

Conclusion 

By automating the candidate selection process with AI, Ionio aims to provide a comprehensive and interactive system that delves deep into candidates' profiles, highlighting their skills, achievements, and areas for improvement. This approach streamlines the hiring process while ensuring that deserving candidates are not overlooked and the best candidates are selected for the job roles.

Automate your workflow with Ionio.ai

Is manual processing slowing you or your company down? In today's fast-paced world, relying on manual tasks can hinder your company's efficiency. Imagine saving hours by letting an intelligent AI assistant handle repetitive tasks. We create customized AI agents that integrate seamlessly into your workflow, enhancing productivity and minimizing manual work.

Don't be held back by inefficiencies. To explore how Ionio.ai can transform your creative process and provide the tools and support needed to fully leverage Generative AI, schedule a consultation with us.

Happy reading :)

Book an AI consultation

Looking to build AI solutions? Let's chat.

Schedule your consultation today - this not a sales call, feel free to come prepared with your technical queries.

You'll be meeting Rohan Sawant, the Founder.
 Company
Book a Call

Let us help you.

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Behind the Blog 👀
Shivam Mitter
Writer

The guy on coffee who can do AI/ML.

Pranav Patel
Editor

Good boi. He is a good boi & does ML/AI. AI Lead.