---
title: "Job applicant CV scored by AI and logged to Google Sheets"
kind: "Kit"
category: "Business"
price: "Free"
seller: "Mindket"
version: "1"
url: "https://mindket.com/p/f6d8bb15-8ebd-4925-8c78-877b5625593d"
updated: "2026-11-12"
---

# Job applicant CV scored by AI and logged to Google Sheets

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

An n8n workflow with a CV form: an applicant sends a name, an email address and a PDF. OpenAI pulls out the details, summarizes them and votes from 1 to 10 against your profile, and one row per applicant lands in a Google Sheet.

Job applicant CV scored by AI and logged to Google Sheets 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 job applicants from their CVs. Someone sends a form with a name, an email address and a PDF. An OpenAI model reads the text and pulls out the phone number, city and birthdate, then the education, job history and skills. A summary of 100 words or less is compared with a profile you wrote, and the model gives a vote from 1 to 10 with its reasons. One row per applicant is added to a Google Sheet, and the PDF is saved to a Drive folder on the way. Twelve nodes do the work, beside six sticky notes.

### Who it suits

Small companies, agencies and recruiters who collect CVs through a careers page and keep their shortlist in a Google Sheet. It gives a first sorted view of a pile of applications. Skip it if nobody should see a score before reading the CV, or if the place you hire in limits automated screening. The profile in the file looks for a web developer.

Who uses it, and how

| Industry | Who uses it | How they use it | Example |
| --- | --- | --- | --- |
| Web and software agencies | Owners and office managers | Put the form on a careers page and get a row for each applicant | An agency hiring a full-stack developer sorts twenty applicants by \`VOTE\`. |
| Recruitment | Agency recruiters | Keep one copy of the workflow for each open role, each with its own \`Profile Wanted\` text | A recruiter runs a copy for every role a client has open. |
| Small business | Founders | Hire a first support or operations person without an HR team | A founder opens the sheet each morning and reads the reasons beside each vote. |
| Freelance and project hiring | Team leads | Get a quick skills list from a stack of CVs | A lead scans the \`SKILLS\` column to see who knows the tools a project needs. |

You need some n8n: importing a file, adding three credentials and building a sheet whose twelve headers match the file. Nothing in the file states a setup time.

### Where to use it

Any n8n that can reach OpenAI and Google will run it. Plan where the CVs and the sheet live, since both hold personal data.

- n8n Cloud: import the file into a new workflow there
- Your own n8n server: the same file and steps
- Google Sheets: the shortlist lives in your sheet, one row for each applicant
- A careers page: link to the form’s production address, or add a node after \`Google Sheets\` to alert the person who hires

### How to set it up

Download saves a zip with `workflow.json` and Mindket’s setup notes in your downloads folder. Build the sheet and the folder before you import the file.

What you need first

| Need | Detail |
| --- | --- |
| n8n | On n8n Cloud or on a server of your own |
| OpenAI | An API key. The one chat model node uses \`gpt-4o-mini\` |
| Google | An account for a Google Drive OAuth2 credential and a Google Sheets OAuth2 credential |
| A Drive folder | Where the CVs are saved |
| A sheet | A first row with \`DATA\`, \`NAME\`, \`PHONE\`, \`CITY\`, \`EMAIL\`, \`DATA NASCITA\`, \`EDUCATIONAL\`, \`JOB HISTORY\`, \`SKILLS\`, \`SUMMARIZE\`, \`VOTE\` and \`CONSIDERATION\`, spelled as written |

1. In n8n, create a workflow, open its menu, choose Import from File and pick `workflow.json`.
2. Add an OpenAI credential and select it in `OpenAI`. That one node serves all four AI steps.
3. Add a Google Drive OAuth2 credential and select it in `Upload CV`. Replace `YOUR_FOLDER_ID` with your folder’s ID, the part of its address after `/folders/`.
4. Add a Google Sheets OAuth2 credential and select it in `Google Sheets`. Replace `YOUR_SHEET_ID` with the sheet’s ID, the part of its address between `/d/` and `/edit`.
5. Check that the sheet’s first row holds the twelve headers from the table. The node stops if one is missing.
6. Open `Profile Wanted` and write the profile you are hiring for.
7. Save, open the form’s test address and send a CV of your own as a PDF.
8. Check the new row, then press Publish and share the form’s production address.

### How to use it

Share the form’s address with applicants. Each one types a name and an email address and attaches a PDF. The form confirms at once, and the run goes on behind it. Open the sheet for the row. Open the run under Executions to see what each step returned.

What to change for a different result

| To change | Where |
| --- | --- |
| The profile | The text in \`Profile Wanted\` |
| The scoring rule | The message in \`HR Expert\`, which asks for a vote from 1 to 10 and its reasons, in Italian |
| What is pulled out | The attributes of \`Qualifications\` and the schema of \`Personal Data\` |
| The summary | The prompt in \`Summarization Chain\`, which asks for 100 words or less |
| The model | \`OpenAI\`, shared by all four steps |

### Example

A web agency keeps the profile that ships in the file, a full-stack developer who knows PHP, Python and JavaScript and lives in northern Italy. An applicant sends a PDF that lists those three languages and two years at another agency in Milan.

One row lands in the sheet. It holds today’s date, the name and email from the form, and the phone, city and birthdate from the CV. The career fields follow, then the summary, a vote and the reasons for it. The prompt is in Italian, so expect the reasons in Italian until you translate it.

### 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. The form feeds two branches, one that saves the PDF and one that reads it. Two AI steps pull facts out of the text, `Merge` joins them, and two more write the summary and the vote. Test it with your own CV first, then open `HR Expert` in the run to see how it reasoned.

**For experts.** One chat model node feeds four chains, and the vote comes back as structured JSON.

Where to look closer

| Node | What it does | What to know |
| --- | --- | --- |
| \`Qualifications\` and \`Personal Data\` | Two Information Extractor nodes read the same PDF text | Both answer under \`output\`, so \`Merge\` folds them into one \`output\` object |
| \`Summarization Chain\` | Summarization 2 with its own prompt, which carries the merged fields | The text lands in \`response.text\`, which \`HR Expert\` and the sheet read |
| \`HR Expert\` | A basic LLM chain with a \`Structured Output Parser\` | Its answer is \`vote\`, a string, and \`consideration\` |
| \`Google Sheets\` | Appends with the columns defined below | Version 4.5 compares the sheet’s headers with the node’s column list and stops when one is missing |

### Good to know

A vote is a model’s opinion, and each run sends a CV to OpenAI.

- A hint: a person should read the vote and the CV. A badly laid out PDF can lose details before the model sees them, and a scan with no text gives the model nothing
- Personal data: each CV’s text goes to OpenAI, and the phone number and birthdate land in your sheet. Tell applicants what happens to their data, and check the hiring and data-protection rules where you operate
- Files: \`Upload CV\` is a branch of its own, so the sheet holds no link to the saved PDF
- Models: OpenAI’s deprecations page, read on 12 November 2026, gives 14 January 2027 as the shutdown date of \`gpt-4o-mini\` and names \`gpt-6-luna\` as its replacement. Pick the replacement in \`OpenAI\` before then
- Billing: OpenAI bills at least four model calls for each CV, one in each of \`Personal Data\`, \`Qualifications\`, \`Summarization Chain\` and \`HR Expert\`
- Open form: once the workflow is published, anyone with the form’s address can send CVs and spend your OpenAI key
- A repair: the original copy read the name from \`Nome\` and filled a column called \`TELEFONO\`, which left two columns empty. Mindket’s copy fixes both
- Credentials: the JSON holds none

## README

```markdown
# Job applicant CV scored by AI and logged to Google Sheets

An n8n workflow with a CV form. An applicant sends a name, an email address and a PDF. The workflow keeps the PDF in
Google Drive, has an OpenAI model pull out the contact details and the career, summarizes them, and scores the applicant
from 1 to 10 against a profile you wrote. One row per applicant lands in a Google Sheet.

## What is inside

- `workflow.json`: the workflow as n8n exports it, 12 nodes beside 6 sticky notes. It holds no credential.
- `README.md`: these notes.

## What we changed from the original copy

The copy Mindket started from had two slips that left a column empty. Mindket fixed both:

- `Google Sheets` read the applicant's name from `Nome`, but the form's field is called `Name`, so the `NAME` column
  stayed blank. It now reads `Name`.
- The same node filled a column called `TELEFONO`, while the sheet's column list in the file calls it `PHONE`. A row is
  written by header name, so the phone number never arrived. The value now goes to `PHONE`.

The sheet's address and the Drive folder's address belonged to the original copy's own account. They now read
`YOUR_SHEET_ID` and `YOUR_FOLDER_ID`, and the cached names of that sheet are gone.

## Before you start

- An n8n instance, on n8n Cloud or your own server.
- An OpenAI API key. The one chat model node uses `gpt-4o-mini`.
- A Google account that can use both Drive and Sheets.
- A Drive folder for the CVs.
- A Google Sheet whose first row holds these twelve headers, spelled exactly as written: `DATA`, `NAME`, `PHONE`,
  `CITY`, `EMAIL`, `DATA NASCITA`, `EDUCATIONAL`, `JOB HISTORY`, `SKILLS`, `SUMMARIZE`, `VOTE` and `CONSIDERATION`. The
  node stops with "Column names were updated after the node's setup" when one is missing. Extra columns are fine.

## Set it up

1. In n8n, create a workflow, open its menu and choose Import from File. Pick `workflow.json`.
2. Add an OpenAI credential and select it in `OpenAI`. That one node serves all four AI steps.
3. Add a Google Drive OAuth2 credential and select it in `Upload CV`. Replace `YOUR_FOLDER_ID` with your folder's ID,
   the part of its address after `/folders/`.
4. Add a Google Sheets OAuth2 credential and select it in `Google Sheets`. Replace `YOUR_SHEET_ID` with the sheet's ID,
   the part of its address between `/d/` and `/edit`. The node writes to the sheet's first tab.
5. Open `Profile Wanted` and replace its text with the profile you are hiring for.
6. Save, open the form's test address, and send a test CV of your own as a PDF.
7. Check the new row, then press Publish and share the form's production address.

## How a run goes

1. `On form submission` is the form, titled `Send CV`. It takes `Name`, `Email` and `CV`, which must be a `.pdf`.
2. `Upload CV` saves the PDF in your Drive folder as `CV-` plus the date and the original file name.
3. `Extract from File` reads the text out of the PDF.
4. `Personal Data` asks the model for the telephone number, the city and the birthdate. `Qualifications` asks for the
   education and the job history, each in 100 words at most, and for the skills as a bulleted list.
5. `Merge` joins the two answers into one item.
6. `Summarization Chain` writes a summary of 100 words or less, in a conversational tone.
7. `Profile Wanted` holds the profile text. It ships with a web agency looking for a full-stack developer in northern
   Italy.
8. `HR Expert` compares the summary with that profile. A `Structured Output Parser` makes it answer with a `vote` and a
   `consideration`.
9. `Google Sheets` appends one row: the date, the name, the phone, the city, the email, the birthdate, the education, the
   job history, the skills, the summary, the vote and its reasons.

## Change the look

- The profile: the text in `Profile Wanted`.
- The scoring rule: the message in `HR Expert`. It asks for a vote, where the top mark is the ideal candidate, and
  for the reasons in `consideration`. It is written in Italian, as are the labels `Profilo ricercato` and `Candidato`.
  Translate it if you want the reasons in another language.
- What is pulled out: the attributes of `Qualifications` and the schema of `Personal Data`.
- The summary: the prompt in `Summarization Chain`.
- The columns: the `Google Sheets` node and the sheet's first row, which must stay in step.
- The model: `OpenAI`.

## Good to know

- A person should read the vote. It is a model's opinion of a summary of a PDF, and a badly laid out CV can lose
  details before the model sees them.
- Each run sends the CV's text to OpenAI and writes the applicant's phone number and birthdate to your sheet. Tell
  applicants what happens to their data, and check the hiring and data-protection rules where you operate.
- `Upload CV` is a branch of its own. Nothing later reads the saved file, so the sheet holds no link to it.
- The form takes PDFs only, and a scanned PDF with no text layer gives the model nothing to read.
- OpenAI's deprecations page, read on 12 November 2026, gives 14 January 2027 as the shutdown date of `gpt-4o-mini`
  and names `gpt-6-luna` as its replacement. Pick the replacement in `OpenAI` before then.
- Billing: OpenAI bills at least four model calls for each CV, one in each of `Personal Data`, `Qualifications`,
  `Summarization Chain` and `HR Expert`.
- Once the workflow is published, anyone with the form's address can send CVs and spend your OpenAI key.
- The JSON holds no credential. The `Profile Wanted` text is an example for the original copy's own search.
```

## What is in it

3 files, 24 KB, downloaded as a zip.

```text
NOTICE.md  639 B
README.md  5 KB
workflow.json  18 KB
```

## Workflow check

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

- Steps: 10 steps, starting on a form
- AI: 4 steps call an AI model: Personal Data, Summarization Chain, HR Expert and Qualifications
- Sign-ins: Signs in to: Google Drive, Google Sheets and OpenAI
- API keys: No API key is left in the file
- Step types: Mindket’s checker reads all 9 of its step types

## Get it

- [Get it on your Mindket account](https://account.mindket.com/account/?product=mindket#/market/f6d8bb15-8ebd-4925-8c78-877b5625593d)
- [Its page on Mindket](https://mindket.com/p/f6d8bb15-8ebd-4925-8c78-877b5625593d)
