1. Home
  2. Sample Projects
  3. Filtering Résumés

Filtering Résumés

◷ Reading Time: 6 minutes

The example shows how to use the PDF extension to read résumés in PDF version and check whether the required skills are there in the résumé.


A company is hiring a new software developer. Once the résumés are received in PDF format, it requires to filter whether certain keywords are present in those résumés. The created flow saves the time of HR team as they don’t have to manually go through each résumé to see whether the candidates have the required skills.

How to Run

1. Open the file ‘Flow.xml’.

2. Click on Debug with JSON composer.

3. Go to Text Mode and enter keywords to search as a list.

    "keywords":["java", "python", "matlab"]

4. Click OK

5. Click Next Step to go step by step.

Once the execution is completed successfully, the matching percentage can be seen under the Parameters window.

If there is no match, the notifications can be seen under the Notifications window.

Project Description

Flow was created to filter the PDFs. In the beginning, the user can provide a list of keywords that need to be cross-checked with the résumés. The flow will check how many keywords are there in the résumés and provide the percentage of matching keywords.

Video Description

Process Steps

1. Crete a Generic Flow file.

2. Define variables.

keywordsInexpressionList of keywords to input
pdfLocalStore the PDF input file
keywordLocalstringStore each keyword in the loop ‘Keywords to search in PDF’
keywordRegexLocalstringRegular expression for each keyword
keywordContainingPageNumberLocalstringOnce a keyword is found pages, store the page numbers
numberOfMatchingKeywordsLocalintCount the number of matching keywords (default ‘value’ should be set to 0)
matchingPercentageLocaldecimalPercentage of the matching keywords

3. Add a Start node.

4. Add an Activity node to load the PDF file

pdf = 'Resume.pdf'|toPdf({textExtractionMethod:'words'})

5. Add a Loop node to go through each kwyword in the input list keywords.

List Source: keywords
Item Name: keyword
Initializer: Build Regex node
Finalizer: Count matching keywords node

Add the following nodes inside the loop.

6. Add an Activity node to build the regex for each word

keywordRegex= "(?i)\\b" + keyword

7. Add an Activity node to cross-check the words with the PDF file and get the indexes of the pages

keywordContainingPageNumber=pdf|pdfIndexOf(keywordRegex, 0)

8. Add a Decision node. If the keyword was found, proceed. If not, show a notification using a Notification node.

Found Condition: keywordContainingPageNumber|length()>0
Notification Message: No match found

9. Add an Activity node to count matching keywords


Add the following nodes outside the loop.

10. Add a Decision node. If at least one keyword was found, proceed. If not, show a notification.

Yes Condition: numberOfMatchingKeywords>0
Notification Message: No matching keywords

11. Add an Activity node to determine the percentage of matching keywords

matchingPercentage = ((numberOfMatchingKeywords|asDecimal()/keywords|length())*100)|round(2)

12. Add an End node to end the flow.

Download the project

The project can be downloaded using the attachment at the end of the page.

Updated on April 26, 2022

Article Attachments

Was this article helpful?

Related Articles