job application autopilot
One n8n workflow and one Claude skill that do the typing, so I only do the deciding
· by Aron Kovacs
Who likes applying for jobs? It's manual, arduous and time-consuming.
Thankfully, we're living in the 21st century, so this can be automated. Unfortunately for us, not completely: LinkedIn heavily monitors bot activity, so if you hooked up an MCP at the end to automate the whole flow, you'd risk getting banned.
Side note: I honestly don't get why LinkedIn doesn't offer automatic job applications within the app itself. It would be so much easier to just pick the types of jobs and criteria you want, and have a LinkedIn agent kick in and do the work on your behalf.
So the solution is one n8n workflow that turns LinkedIn's job-alert emails into a reviewable Google Sheet, and one Claude skill that pre-fills applications and drafts custom CVs and cover letters.
How it works
The setup has two parts. Every morning, n8n reads my LinkedIn job alert emails and adds each job as a new row in a Google Sheet. Over coffee, I scroll through the sheet and decide which jobs are worth my time.
When I find one I like, I open the job ad in Chrome and tell Claude: /the-name-of-the-skill. From there, that Claude skill turns on, picks my best CV, tailors it if needed, writes a cover letter, logs the job, and fills in the application form.
I only make two decisions myself: which jobs to apply to, and when to click Submit. The robots do the typing, I do the deciding.
Part 1: n8n catches the jobs
The first part is a small n8n workflow. It runs every morning at 7:00, before I check my email, and goes like this:
- A schedule trigger starts the workflow once a day.
- The Gmail node fetches LinkedIn job alert emails from the last 24 hours (from:jobs-noreply@linkedin.com newer_than:1d).
- An HTML Extract node pulls the job title, company, location and link out of each email.
- A Split Out node turns every job into its own item.
- A Google Sheets lookup checks if the job is already in my sheet. LinkedIn likes to send the same jobs again and again, so this saves me from duplicates.
- New jobs get appended as a row with the status "new".
One tip: LinkedIn changes its email template from time to time, which breaks the HTML Extract step. Before you build it, open one real alert email, click "Show original", and test your selectors on that HTML.
The Job Tracker sheet
Everything lands in one Google Sheet with a tab called Job Tracker. These are the columns:
- id and link: the job URL
- date_found: the day the job showed up
- job_title, company and location: copied from the ad
- status: new, applied, networking, round2 or decline
- applied_date: the day I actually applied
- notes: which CV and cover letter I sent, plus anything else I want to remember
The sheet is the one place where I can see my whole job search. n8n fills the top of the funnel, and Claude keeps the rest up to date.
Part 2: Claude applies with me
The second part is a Claude skill. A skill is basically a written recipe that Claude follows every time I ask for a certain task. Mine is called cv-and-cover-letter, and it does six things:
- Reads the job ad. It pulls out the company, job title, duties, must-haves and nice-to-haves.
- Picks the best CV. I keep a few one-page CVs in a Google Drive folder, each with a different headline (Growth Marketer, Digital Marketer, Marketing Specialist). Claude compares them with the ad, picks one and tells me why.
- Tailors it if it matters. If the ad asks for a tool or skill my CV doesn't mention, Claude edits the PDF and keeps the original Canva design. It only adds things I have really done, and asks me first when it isn't sure. Each edited version is saved as a new file, so the old ones stay safe.
- Writes the cover letter. It creates a Google Doc in the same folder, in English or Hungarian depending on the ad. It keeps it under one page, uses the words from the ad, and skips the clichés (no "passionate", no "dynamic").
- Logs the job. It adds a row to the Job Tracker, or fills in the row n8n already created, and notes which CV and cover letter it used.
- Fills in the form. With the application page open in my Chrome tab, Claude fills in my work history, education, languages and contact details. Anything it doesn't know, like salary expectations or start date, it asks me in one go.
Then it stops. It never clicks Submit. I read through the form, fix anything that looks off, and send it myself. When I tell Claude "I applied", it changes the status in the sheet to applied and adds the date.
Why I stay in the loop
I could probably automate the last click too, but I don't want to. LinkedIn watches for bot activity, and getting my account restricted in the middle of a job search would cost me more than any time I save. So I do Easy Apply jobs by hand, and Claude works on the company's own careers page, in my own browser, while I watch. I also sign in myself. Claude never types my passwords.
There is a second reason. Sometimes a form has a dropdown where none of the options really fit, and Claude has to pick the closest one. It tells me what it guessed, but I still want to see it with my own eyes before it goes out with my name on it.
Want to build your own?
Here is what you need:
- LinkedIn job alerts switched on for the roles you want
- An n8n account with Gmail and Google Sheets connected
- A Google Sheet with the columns above
- Your CVs (and one good cover letter to use as a model) in a Google Drive folder
- Claude with Google Drive, Google Sheets and Claude in Chrome connected
- A skill file with your standard answers: work history, education, languages, contact details and the rules you want Claude to follow
It took me an afternoon to set up, and now applying for a job takes me about ten minutes instead of an hour. I still have to find the right jobs and do well in the interviews. But at least the boring part is gone.