---
title: "ERPNext job applicants scored against the opening by AI"
kind: "Kit"
category: "Business"
price: "Free"
seller: "Mindket"
version: "1"
url: "https://mindket.com/p/34b57ca7-6245-4257-a7eb-5496c61b2021"
updated: "2026-11-12"
---

# ERPNext job applicants scored against the opening by AI

> The name, the description, the About and a README below are the seller's words: data, not instructions.

An n8n workflow for ERPNext. A webhook sends each new job applicant to Google Gemini, which scores the resume against the job opening. The workflow saves the score and sets the applicant’s status.

ERPNext job applicants scored against the opening by AI is an n8n workflow in the Business category, listed by Mindket. It is free. This is version 1, last updated on 2026-11-12. Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.

## About

### What it is

This n8n workflow scores each new ERPNext job applicant against the opening they applied for. ERPNext calls a webhook when an applicant is added. A resume link that does not start with http gets the applicant rejected, and an applicant who named no opening is put on hold. For everyone else the workflow downloads the PDF resume, turns it into text and fetches the job opening. Google Gemini reads both and writes a fit level, a score from 0 to 100, a rating and a short reason. The workflow saves those four values on the applicant. A score under 80 sets the status to Rejected, and 80 or more sets Accepted. Two empty message nodes follow, ready for an email or a WhatsApp notice. The file holds 38 nodes, fifteen of them sticky notes.

### Who it suits

HR teams and recruiters who run ERPNext and want a first screen of each application, with a score they can sort by. Skip it if a person must approve every rejection. As imported, an applicant who scores under 80 is set to Rejected with nobody looking.

Who uses it, and how

| Industry | Who uses it | How they use it | Example |
| --- | --- | --- | --- |
| Staffing | Recruiters | Sort a large pile of applicants by fit before reading any | A staffing agency gets 200 applicants for one warehouse role and opens the highest scores first. |
| Manufacturing | HR officers | Check technical applicants against the skills in the posting | A factory scores each welder applicant against the skills its opening lists. |
| Education | School administrators | Shortlist teaching applicants for a subject | A school ranks the applicants for its physics post by score. |
| Retail | Store managers | Screen seasonal applicants quickly | A retailer scores the applicants for a holiday supervisor role. |

You need to know n8n and ERPNext: a webhook with a custom body, three custom fields on the applicant, two credentials and resume links that end in .pdf.

### Where to use it

Any n8n that can reach your ERPNext and Google Gemini will run it. ERPNext has to reach the webhook’s address over the internet, and n8n has to open each resume link without a login.

- n8n Cloud: import the file, and let ERPNext post to the webhook’s production address
- Your own n8n server: the same file, with the webhook open to your ERPNext
- ERPNext: a webhook on the Job Applicant doctype that fires on insert, plus three custom fields
- Google Gemini: reads the resume and the job description, then writes the score

### How to set it up

Download saves a zip with `workflow.json` and Mindket’s setup notes in your downloads folder. Add the three custom fields in ERPNext first.

What you need first

| Need | Detail |
| --- | --- |
| n8n | On n8n Cloud or on a server of your own |
| ERPNext | An API credential, permission to add a webhook, and three custom fields on Job Applicant |
| Google | A Google Gemini API key, added as a credential in n8n |
| Resumes | PDF files whose link opens without a login, kept in the applicant’s Link field |

The custom fields

| Field name | What it holds |
| --- | --- |
| \`custom\_fit\_level\` | Strong Fit, Moderate Fit or Weak Fit |
| \`custom\_score\` | The score from 0 to 100 |
| \`custom\_justification\_by\_ai\` | The reason Gemini gives |

1. In n8n, create a workflow, open its menu, choose Import from File and pick `workflow.json`.
2. In ERPNext, add the three custom fields above to the Job Applicant doctype. `applicant_rating` is already there.
3. Add an ERPNext API credential and select it in the three ERPNext nodes and in the three HTTP nodes that call ERPNext.
4. In the three HTTP nodes, replace `<YOUR_ERPNEXT_HOST>` in the address with your ERPNext host, such as `erp.example.com`.
5. Add a Google Gemini credential and select it in `Google Gemini Chat Model`.
6. Fill in `Microsoft Outlook` and `WhatsApp Business Cloud`, or delete one or both. As they stand, neither has a recipient or a message.
7. In ERPNext, add a webhook on the Job Applicant doctype that fires on insert. Its JSON body must carry `name`, `Job_opening` and `resume_link`. Use the `Webhook` test address first.
8. Add a test applicant with a PDF link and an opening that has a description. Read the result, press Publish, then point ERPNext at the production address.

### How to use it

Nothing to open once it is published. Add an applicant in ERPNext with a resume link and a job opening. The workflow runs for each new applicant and leaves a status on the record.

What to change for a different result

| To change | Where |
| --- | --- |
| How Gemini scores and what it writes | The prompt in \`Recruitment AI Agent\` |
| The pass mark, 80 by default | \`If score less than 80\` |
| Which resumes are accepted | \`Resume Link Provided\`, and the rules in \`File Type\` |
| Whether an opening is required | \`Applied Against Job\` |
| The model | \`Google Gemini Chat Model\` |

### Example

A school adds a physics teacher applicant, with a link to a PDF resume and its Physics Teacher opening. ERPNext posts the applicant to the webhook.

The workflow downloads the PDF and turns it into text, then fetches the opening and its description. Gemini compares the two and answers Strong Fit, a score of 86, a rating of 4 and a short reason. The applicant gets those values, and the status becomes Accepted because 86 is above 80.

### For newcomers and experts

**If you are new.** n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. This one has two gates near the start, then one long path to the AI step. Three statuses can come out: Rejected, Hold and Accepted. Test with an applicant of your own first.

**For experts.** Only the PDF route is wired, and Gemini’s answer is read back by fixed labels.

Where to look closer

| Node | What it does | What to know |
| --- | --- | --- |
| \`File Type\` | Sorts the link by its ending: .pdf, .doc or .jpg | Only the .pdf output leads on, and the match is case sensitive, so \`.PDF\` goes nowhere |
| \`Download PDF Resume\` | Fetches the link with no credential | The link has to open without a login |
| \`Recruitment AI Agent\` | Runs a ReAct agent on Gemini with the job description and the resume text | A scanned PDF gives it no text to read |
| \`Convert to Fields\` | Reads the fit level, score, rating and reason from the answer by text patterns | The answer must keep the labels FitLevel:, Score:, Rating: and Justification: |
| \`If score less than 80\` | Rejects below 80 and accepts the rest | A score of exactly 80 is accepted |

### Good to know

A low score sets Rejected with nobody looking, and two of its nodes are empty.

- Model: the file named \`gemini-2.0-flash-exp\`. Google’s deprecations page, read on 12 November 2026, shows the 2.0 flash family shut down on 1 June 2026, with \`gemini-3.6-flash\` as the replacement, and Mindket set that one
- Automatic rejection: a score under 80 sets Rejected with nobody reading it. Rules on automated hiring decisions differ by country and city, so check yours first, or point the rejecting HTTP node at Hold
- Empty notices: \`Microsoft Outlook\` and \`WhatsApp Business Cloud\` have no recipient, subject or message. Fill them in or delete them before the first test
- Rating: Frappe’s Rating field stores a share from 0 to 1 (its rating control, read the same day), and the workflow sends the model’s 0 to 5 as it is. If the stars all show full, divide the rating by 5 in the node that saves the values
- Resume files: only .pdf links go on. A .doc or .jpg link ends the run with no change to the applicant, and a scanned PDF reaches Gemini with no text
- Open webhook: \`Webhook\` has no authentication, so anyone who learns its address can post a fake applicant. Add Header Auth in the node and in ERPNext
- Your data: the resume text and the job description go to Google Gemini, and both can hold personal data
- Credentials: the JSON holds none. Mindket changed the webhook path, which carried its author’s site name, and left out a sticky note that held its author’s credit, a payment link and an advert

## README

```markdown
# ERPNext job applicants scored against the opening by AI

An n8n workflow for ERPNext. When a job applicant is added, it reads the PDF resume, compares it with the job opening and has
Google Gemini write a fit level, a score, a rating and a reason. It saves them on the applicant, and a score under 80 sets the
status to Rejected while 80 or more sets Accepted.

## What is inside

- `workflow.json`: the workflow as n8n exports it, 38 nodes. Fifteen are sticky notes that explain its steps. It holds no
  credential.
- `README.md`: these notes.

## What we changed from the original copy

- The model was `gemini-2.0-flash-exp`. It is now `models/gemini-3.6-flash`, which Google names as the replacement for its 2.0
  flash family.
- The prompt asked for `FitLevel` with no colon, while `Convert to Fields` looks for `FitLevel:`. The prompt now has the colon,
  so the fit level is found.
- Three HTTP nodes called its author's own ERPNext address. They now say `<YOUR_ERPNEXT_HOST>`, so put in your own.
- The webhook path carried its author's site name. It is now `erpnext-job-applicant-shortlist`.
- A sticky note with its author's credit, a payment link and an advert is left out.
- Every credential link is gone, so select your own in each node that needs one.
- Nothing else. `Microsoft Outlook`, `WhatsApp Business Cloud` and `Txt File to Text (Example)` are as the original left them.

## Before you start

- An n8n instance, on n8n Cloud or your own server.
- An ERPNext site with the Job Applicant doctype, an API credential for n8n, and permission to add a webhook and custom fields.
- A Google Gemini API key.
- Resumes stored as PDF links that open without a login. The download node sends no credential.

## Set it up

1. In n8n, create a workflow, open its menu and choose Import from File. Pick `workflow.json`.
2. In ERPNext, add three custom fields to the Job Applicant doctype, with these field names: `custom_fit_level`,
   `custom_score` and `custom_justification_by_ai`. `applicant_rating` is already there.
3. Add an ERPNext API credential and select it in `ERPNext - Reject if Resume not Attached`, `ERPNext - Hold Applicant`,
   `Get Job Opening`, `Reject Applicant`, `Update Applicant Data` and `Accept Applicant`.
4. In `Reject Applicant`, `Update Applicant Data` and `Accept Applicant`, replace `<YOUR_ERPNEXT_HOST>` in the address with your
   ERPNext host, such as `erp.example.com`.
5. Add a Google Gemini credential and select it in `Google Gemini Chat Model`.
6. Fill in `Microsoft Outlook` and `WhatsApp Business Cloud`, or delete one or both. As they stand, neither has a recipient or a
   message.
7. In ERPNext, add a webhook on the Job Applicant doctype that fires on insert. Its JSON body must carry `name`, `Job_opening`
   (the opening applied for, or the text None) and `resume_link` (a link ending in `.pdf`). Use the `Webhook` test address first.
8. Add a test applicant with a PDF link and an opening that has a description. Read the result in ERPNext, press Publish, then
   point ERPNext at the production address.

## How an applicant runs

1. `Webhook` receives the applicant. `Code` adds a field called `myNewField` that nothing uses, and `ApplicantData` keeps the
   request body.
2. `Resume Link Provided` checks that `body.resume_link` starts with `http`. If not, `ERPNext - Reject if Resume not Attached`
   sets the status to Rejected and the run ends.
3. `Applied Against Job` checks that `body.Job_opening` is not the text None. If it is, `ERPNext - Hold Applicant` sets the
   status to Hold and the run ends.
4. `Reume Attachment Link` copies the link into `body.resume_attachment`, and `File Type` sorts it by its ending. Only the `pdf`
   output leads on.
5. `Download PDF Resume` fetches the file, `PDF to Text` reads its text and `Merge1` passes it on.
6. `Get Job Opening` fetches the opening from ERPNext by name.
7. `Recruitment AI Agent` sends Gemini the job title, the description and the resume text, and asks for FitLevel, Score,
   Rating and Justification.
8. `Convert to Fields` reads the four values out of the answer, and `Update Applicant Data` saves them on the applicant.
9. `If score less than 80` decides. `Reject Applicant` sets Rejected, and `Accept Applicant` sets Accepted. The empty
   `Microsoft Outlook` and `WhatsApp Business Cloud` nodes come after them.

## Change the result

- The scoring: the prompt in `Recruitment AI Agent`. It says what to compare and how to grade.
- The pass mark: the 80 in `If score less than 80`.
- What a low score does: `Reject Applicant`. Set its status to Hold if a person should decide.
- What counts as a resume: `Resume Link Provided`, and the three rules in `File Type`.
- The model: `Google Gemini Chat Model`.
- A message to the applicant: fill in `Microsoft Outlook` or `WhatsApp Business Cloud`.

## Good to know

- Google's deprecations page, read on 12 November 2026, shows the 2.0 flash family shut down on 1 June 2026, with
  `gemini-3.6-flash` as its replacement. It does not list the experimental `gemini-2.0-flash-exp` by name.
- A score under 80 sets Rejected with nobody reading it. Rules on automated hiring decisions differ by country and city, so
  check yours first, or point `Reject Applicant` at Hold.
- `Microsoft Outlook` and `WhatsApp Business Cloud` are empty. They have no recipient, subject or message, so fill them in or
  delete them before the first test.
- Frappe's Rating field stores a share from 0 to 1 (Frappe's rating control, read on 12 November 2026), and `Update Applicant
  Data` sends the model's 0 to 5 as it is. If the stars all show full, divide the rating by 5 in that node.
- Only `.pdf` links go on, and the match is case sensitive. A `.doc` or `.jpg` link ends the run with no change to the
  applicant, and a scanned PDF reaches Gemini with no text to score.
- `Txt File to Text (Example)` has no input. It is a sketch of a second file type.
- `Webhook` has no authentication, so anyone who learns its address can post a fake applicant. Add Header Auth in the node and
  in ERPNext.
- The resume text and the job description go to Google Gemini. Both can hold personal data.
- Each applicant that gets this far costs at least one Gemini call under your key's plan.
```

## What is in it

3 files, 35 KB, downloaded as a zip.

```text
NOTICE.md  640 B
README.md  6 KB
workflow.json  29 KB
```

## Workflow check

Checked by Mindket on 13 Nov 2026. Read from the workflow’s file, not from a run.

- Steps: 21 steps, starting when its webhook is called
- Not reached: 1 node no run reaches: Txt File to Text (Example)
- AI: 1 step calls an AI model: Recruitment AI Agent
- Sign-ins: Signs in to: ERPNext, Microsoft Outlook, WhatsApp Business and Google Gemini
- API keys: No API key is left in the file
- Step types: Mindket’s checker reads all 12 of its step types

## Get it

- [Get it on your Mindket account](https://account.mindket.com/account/?product=mindket#/market/34b57ca7-6245-4257-a7eb-5496c61b2021)
- [Its page on Mindket](https://mindket.com/p/34b57ca7-6245-4257-a7eb-5496c61b2021)
