Now we are going to take on the board and build an AI resume analyzing system.
That's going to be a game changer for recruiters.
It will speed up your hiring process and again, it will be so powerful.
So watch this video to the end.
Because what it does, it retrieves all of the data actually from the resume and also evaluates the
candidate based on its experience and previous jobs.
But now, without being too much, let me show you how it works.
So I sent an email to myself with the resume of John Smith.
This is the sample, and inside I've got the summary experience.
Um, you know, I've got the education certifications.
So all of the information that proper resume should have.
Um, and then what I can do, I can actually execute the workflow.
So simply, uh, what it does, it retrieves for us this specific resume based on the filters we filter.
So we check exactly if it's the resume.
We upload the file to Google Drive.
We download it.
We use this node to extract the information.
And also we use AI to also extract their information and also a agent to evaluate our candidate.
After we do this, we get everything.
So the name, email number, skill set, qualifications even to additional fields from our agent, um,
which are the score and justification.
So we've got a score which is nine and justification.
So John Smith's extensive experience in full stack development, particularly with JavaScript frameworks
like react and backend systems in node JS, aligns closely with typical requirements for a full stack
developer role.
So that's great.
Actually, we've got all of the information.
And again it may be a huge time saver for recruiters if you manage a lot of resumes.
Um, also what's very important you upload the resumes inside a specific folder so you store them actually
also use AI to evaluate them.
That's great.
Um, additionally, I need to mention, remember you can change the trigger, so maybe you've got another
place where you store the resumes.
It may be the slack.
I don't know, maybe notion, um, maybe other specific place.
And the only thing you need to change the trigger.
That's great.
Um, for example, you've got here the alternatives.
But for now, I recommend you to watch this video to the end, because actually, I will guide you through
each step in the specific automation.
Also will have some, I can say, special and unique ways of how we set up this, um, specific notes.
Um, and for sure watch it to the end because it will be so powerful.
So let's go to the point and set up this entire project.
And the first thing we want to add, as usually is the trigger.
And for that we are using Gmail.
So we've got on message received.
And here I can say we have something special and some terms because I will be applying the filters and
also the prefix.
So for that case what we have we've got the moat.
We can leave every minute or just you can actually no, every hour check every day for new emails.
However, the problem is we don't want to check for every email.
We don't want to get like every email we receive.
We want to indicate, okay, I want to have an email that contains the specific attachment that should
be actually the PDF, because this is the format that, um, you know, um, most people use for their
CVS.
Um, and also it should be the resume because obviously we may have, I can say the like the PDFs,
um, about many different things.
So we need to actually somehow filter it, filter all of the emails so it works the proper way we can
add the filter, um, which is the search.
That's great.
And now the first thing that comes, um, to our mind and also we see it, um, is this specific comment
which is has um, we've got the colon attachment If we go there to this link.
So more info, you will see how this specific field works.
So we've got different operators like from.
So find emails sent from a specific person.
We've got a tool so find emails sent to a specific person.
And here when we scroll down we've got for an example file name we'll be using file name PDF.
Uh you've got different operators you can use.
And that's also actually the tip for you in the future if you're using Gmail note which is for sure.
Like I guess, uh, like a lot of people, um, also me are using it every day for every automation,
almost every automation.
Um, you can apply these filters.
They are very useful.
So the first thing I want to actually provide in the filter so in the search option is has colon attachment.
What it does it checks if the email has attachment.
So we are one step further in this automation, so we don't take all of the emails that we receive in
our inbox.
However, only these that have, um, attachment.
The next thing, um, what we can provide is the file name, uh, pdf, and every file that is in the
PDF format comes with the PDF extension.
So we say all right.
Okay.
Um, whenever we've got the file.
So new attachment because remember that attachment can be an image.
It can be the XML like the file.
So there we check for the attachment.
However here we specify okay we want to have only the PDFs only the PDF.
This is the format we are interested in.
Otherwise just yeah you know like it won't run so it won't run on any image on any other format.
Um, so we've got the resumes, um, in our PDF format.
So I hope you understand.
So we've got for now two search options.
And the last one is simply the word resume.
So we check for the word resume inside our email.
So it covers 99% of the cases.
So I can say that's great.
We've got our search options set up.
The next thing what we want to do is to disable the option, which is simplify because we want to have
some options.
And the first option is actually attachment prefix.
So whenever we've got an attachment we want to name it as CV or even resume.
However for now I would like to have the CV and additional option is download attachment.
So we want to download this attachment right away after our Gmail uh trigger.
Okay.
For now we can fetch test events.
Um actually event.
And we can see we've got our file which is CV one and this is the resume.
So our John Smith.
That's great.
Um, the next step inside this automation is Google Drive.
So we simply want to.
arm and upload the file to our folder.
And now for the input data field name.
We want to specify this specific name.
So this is the CV zero.
For the file name we can go ahead to schema.
And now search for uh what we have here.
We'll search for the specific text.
So for now we can actually take the file name which will be the name of the person.
So from you know we've got here the variable.
So from and this is the email address from, from which we, we received the email and the resume.
And this is the name of the person.
So this is Chris and Vitorovic obviously.
So we can take this variable and put it here.
Um yeah.
So that's great.
And for the Google Drive um, I've taken my drive and there I've got the um, the folder which is already
created, which is actually, uh, where do we have it?
Job resumes.
Let me open it very quickly.
And inside I've got the resumes.
As you can see, I've tested like this automation many times, so I've got a lot of resumes.
However, you need to create your folder here to upload the file.
Um, actually files.
Um, then what we do, we execute the step.
That's pretty straightforward.
And then, um, we've got the web content link.
Um, so that's great.
And the next thing we want to actually download this file from Google Drive because it's needed for
further steps.
So we pick drive Google Drive and there download file.
Um for the file we specify the ID uh and that's pretty straightforward.
We just take this variable from upload file.
So this is the ID.
And then we execute this step.
We should get the file downloaded inside our automation.
That's great.
Perfect.
Um so we've got our three specific notes.
And the fourth one is to take our PDF and extract from it the information, all of the information.
That would be the best case.
And now there are different approaches you can use.
Maybe the tool on the internet which is PDF.
I don't know maybe IO.
I'm not sure about it, but you've got different applications that can extract for you the information
from PDF.
Um, in case you've got the image, you can use open AI Image Analyzer.
However, it's not for that specific circumstance because we've got a PDF or even we've got the best
approach which is actually using the extract node.
So extract from file.
And here you have extract from PDF.
Um, simply you don't change anything here.
You just click on execute step and then um that's that's very cool.
You've got a text, entire text extracted by the specific node.
So pretty long data.
Yeah, we've got everything here.
That's correct.
So we have our first steps.
And the next thing after we have the information we want to use.
Um information extractor.
This is the node that uses AI to extract specific information.
And now there is the specific case we need to have the text.
Um so we need to specify the text in order for it to work.
We can use the variable from the previous node which is extract from file.
And the variable will be text.
So let's drag and drop it here.
That's pretty straightforward.
However actually we need to specify the schema type which is defined using JSON schema.
And there provide a specific code.
And what we want to receive um by This and by using this specific note and also OpenAI model three things.
Firstly, the name, phone number and email address.
Um, actually we need to use the specific JSON code.
And for this circumstance, I prepared for you this code right away without you doing anything like,
you know, you can just copy and paste it from the file that will be in the resources of this material.
Also, we will find here the JSON template as usual.
Uh, but what we have here we've got specific information.
So the first variable we want to retrieve is the name.
So the type is string.
Over here we've got a name type string.
The second the second one is overall the email.
Again we've got the type string.
Also the format which is email.
And the third one is phone number.
And there the pattern.
We've got the specific pattern.
Um I've created that with ChatGPT.
And that's also great indicator.
Door so you can do this stuff with your specific model.
So create a code that returns for you specific information you want.
Um, let's use the model which is OpenAI.
Um, and we'll be using for for this particular case.
So let's pick for oh that's great.
And now in general let's execute the step.
And we should get again the name um email and phone number.
Let's preview it.
Okay.
We've got the name email and phone number.
That's correct.
Nice.
Um, the next note will be our agent that will be responsible for more things.
So let's let's preview it.
Okay.
Um, it will retrieve for us the skill set, qualifications, job history, score and justification.
So five different variables.
And that's really cool.
So we've got three variables that are static from our resume.
However, these two are given by our agent.
Um, that's cool because not only you can store your resumes, you can track them via multiple platforms.
So as I said at the beginning, you may have different triggers.
Let's say slack, let's say notion, let's say I don't know, maybe outlook.
Um, however, also um, you can actually evaluate the candidate.
So not only again save the information however also like give it some score or justification.
Why why why.
It's for an example nine not 5 or 4.
Um, so I hope you know what I mean.
Um, and it's pretty useful for recruiters, obviously.
But let's go back to setting it up.
Uh, for the model, we can connect it also with OpenAI model.
So use one model and provide right here as typically our prompt and system the message for the prompt.
Um, we've got the resume, so let me pick it.
We've got the resume.
And what we do, we take the text from extract from file note and for the system message it's more sophisticated,
more more advanced.
But let's preview what we have.
So we've got the purpose.
So we are a CV evaluation and summarization agent.
Your task is to extract key information from a CV and output it in a structured format.
You must also evaluate how well the candidate, um, fits a specified job role and assign a role score.
Relevance.
Um, we can even, um, put it as score 1 to 10, followed by short justification.
We've got how it works.
So when provided with a job with a CV and job description, follow this process.
So firstly extract summarize information from the CV.
Um so we've got three specific variables explained.
And secondly we've got to evaluate the candidates for the job role.
So compare the candidate qualifications and experience with the job requirements.
Assign a score from 1 to 10 based on relevance.
And we've got the explanation for the rating for the score system.
So 1 to 3 is weak match 4 to 6 moderate strong which is seven eight and excellent which is 910.
Provide a brief justification for the score.
Mentions strengths and gaps directly related to the to the role.
No assumptions or interpretations.
This is pretty everything that we need, only like the prompt.
So the text uh from our extractor.
And this is the message and it should give us, um, the data.
Uh, what's very important also, uh, we should get actually, uh, one field.
So it will be the output our model thinks.
And here.
That's great.
Um, I guess we've got everything right there.
Okay.
Later we'll check it, because sometimes, um, it may have some problems.
I had some problems with this automation.
Like, um, sometimes it didn't return for an example like skill set in a specific form.
I had the problems later, so I will show you what I mean.
However, I've got the way, um, to to prevent the problem.
Um, but let's move on.
The next thing what we want to do is to add the edit field to clean up a little bit the data.
Um, I mean, not clean up.
However, change the name of the variable.
So to the content, uh, it's pretty straightforward.
We can execute this step.
Um, and here we've got a content and this exact data.
Um, next what we have, we've got the code node.
So what we want to do, uh, we've got the information from our agent.
However, for now, we want to take all of this information and structure it in the specific variables.
We are using the code node, which is really powerful.
Like it's one of the most powerful nodes inside notion.
And so we want to specify the code.
I've got a code for you which is this JavaScript entire code.
Um, that the only role is to extract for us all of the information.
I won't explain that.
I mean, like, you know, um, it's really sophisticated.
Um, I use ChatGPT to create it, um, to customize it for me.
I change also some stuff, um, because I had some problems.
However, it works for now.
So I came up with this entire code and let me show you what it does so we can execute this step.
And it gives us actually the information.
It gives us the information.
So education qualifications, job history, skill set score justification.
And the problem is we've got the null values.
And I said I've got I had the problems with this specific this specific automation.
So let me show you what we can do with that.
Our agent misinterpreted the instructions and provided the form.
Actually the output that doesn't align with the code note and the exact code we have inside.
And the walkthrough is to go here and type up, provide the form of the answer that aligns this specific
code to retrieve, that retrieves the information that, uh, retrieves the information, make it this
way so it works, and what we can do, it's a great, actually trick we can paste the entire code we
used in the further step of this automation.
So we give our agents some background, some information, how the code looks like.
And then it takes into account, um, that data when creating the response.
We can again execute the step and see if that solved the problem.
It's running, running and running.
And after a few seconds we've got our content.
So now what we can do we can go back to canvas and test out again the code.
Note.
So let's see.
All right.
So still we've got a problem.
However I guess maybe it's the problem with uh with the sentence.
So, um, provide a form of the answer that aligns the specific code that retrieves the information
so I can type, um, this is the JSON code um, we are using.
Um, to retrieve.
Retrieve?
Um, data provide output.
Um, so it will work.
So it works with it.
Perfect.
Um, let's again execute this step.
Um, I'm very curious.
So we've got the output.
It thinks.
It thinks we've got again, the content.
Let's run the code.
It's running, running and running.
And after a few seconds, we've got our output.
So now let's test out the code.
Note once again, um, hopefully it works.
Yeah.
So we've got it.
Educational qualifications, job history, skill set, score and justification.
That's really cool.
Um, and I can say this is really everything.
So now with all that information, we can save the data inside, um, Google Sheets.
So we can append the row and sheet.
And when we are here, we can pick the specific document.
So list of candidates.
Um, let me show you.
So in general in the resources also we will have this Google Sheets to copy.
You can open it and then make a copy and use it.
So again inside we've got name email number, skill set qualifications, job history score and justification.
Uh and we need to map out the specific fields.
So we have the name.
Um, actually let's go here.
Um, let's pick the name from information extractor, email, phone number and Rest information from
our agent.
I'm not actually our code node.
Okay, so we have the skill set, um, qualifications, job history, score and justification.
That's correct.
We can execute the step.
So it should appear here.
Great.
And now what we can do.
Um, we just created our automation, so let's test it out once again.
And for this specific case.
So for testing and creating this project we had the John Smith, which is really, I can say experienced
person in front end and back end.
So like this person is really relevant for the job description and for the job, uh, for this specific
role.
Okay.
But now I've got other resume, um, that I can use for the person that is not that, um, experienced
for this specific role.
So we can see if the entire automation works and if the score is different, justification and so on.
So we can test out the entire system.
For now.
Let me send uh, my email actually email to myself.
So now I've got the document for Emily Turner.
And there again the the similar action form.
So summary experience education Certifications.
Projects.
Um, so we can test out this specific workflow.
Execute workflow.
And we can preview if everything works.
So yeah, we've got Emily Turner.
Um.
That's great.
And now it it's extracting for us.
The data uses our agent to do all of this stuff.
And now we can see if we have the information.
So let's wait.
Yes we've got it.
So name email number, skill set and the score which is seven because Emily Turner is a strong match
for a junior developer role due to her completion of a full stack web development bootcamp and active
involvement in practical projects, which align well with the technical requirements for a junior developer.
Her skills and HTML, CSS, and JavaScript and react are crucial for many entry level positions.
However, this um, actually this experience is worse than the John Smith.
So in that case we've got the lowest score, which is seven.
And that's great.
We created the entire automation from scratch.
Also remember you can use different triggers.
So let's say you can use the trigger which is slack whenever you've got the attachment in um in your
channel.
So let's say on new message on new message posted to channel.
And there you can choose the specific, you know, um, circumstance like how it should behave.
Um, also, um, you've got the other trigger, which is it can be the on form submission.
So you can specify that you want to have um, the file and then you require the file and someone uploads
for you, um, the PDF.
Um, so again you can experiment with this automation and change it for your specific application you
use for hiring process.
Um, additionally, we can test out another thing.
Let's say someone sends us an email that contains, um, let's say image.
Not not actually, um, you know, not actually the resume and PDF format.
However, the image, maybe it's the resume.
Okay.
So let's do the following stuff.
I can send the email to myself and now let's type resume.
It's my resume okay.
Um, now I can attach some image.
Let's say it will be some random image.
So we'll just, you know, like test the system because like, the title is resume.
This is my resume.
So, um, let's let's test out our filters for the image.
It will be whatever it can be.
Like this.
Uh, what we have, um, this place card, even, uh, let it let it upload.
Okay, so I just uploaded some other image.
Whatever.
Let's send the email and let's even wait a few minutes.
Um, so we can make sure actually, you know, it works.
And then we can run this specific workflow once again.
Let's execute the workflow.
And there is the moment of truth.
Okay.
So it took the Emily Turner resume.
So it didn't take the last attachment.
Okay.
It only took the resume.
So that works.
Another thing we can send the resume however don't provide the word which is resume.
So in that case we can see if everything is correct.
Um, for that case, what we can do, we can actually again send an email.
So I have the title of the email which is hey.
And in the description I've got a job application.
However for the attachment I've got the PDF and it's also an attachment.
However it's like you know like different attachment.
This is for creating clone agent whatever.
Um, however in that specific case and we've got two requirements, um, actually fulfilled.
So attachment file name.
However, we don't have the resume, so it shouldn't take this specific email as a case for our automation.
Um, let's send this specific message.
And again, wait one two minutes to make sure.
Uh, yeah.
It actually, um, detected our email.
Let's execute the workflow.
And again, we've got Emily Turner.
So perfect okay.
It didn't take any other information.
So every time, you know, it checks for the latest, uh, resume, um, that you have inside your,
um, inside your Gmail.
And for this automation, for this video, I can say that's everything.
Thank you for watching.
I hope you enjoyed it.
Uh, and, yeah, I think it's a great automation that may help you, um, in many different cases,
can save you a lot of time and definitely can speed up your hiring process.
Thank you for watching again and I will see you in the next material.