How to use AI to find a job means letting a workflow do the repetitive part of the search: find live postings, identify the person who is actually hiring and draft a specific first message, while you keep the decision to send it. The AI Job Hunter workflow built for the 4Geeks workshop does that in 13 n8n nodes, from a candidate form to a Gmail draft. This is the working version as of September 2026, node by node, including the mistakes that broke it the first time. This is not a list of "AI job search tools". ChatGPT rewriting a cover letter does not solve the two steps that actually move a candidacy: a current posting and a named person. The workflow below is a data pipeline with a human checkpoint. What does it mean to use AI to find a job? Most applications die in the same two places. The candidate spends hours on job boards reading postings that are stale or irrelevant, and the few applications that go out land in a form that nobody reads. A message that reaches a recruiter or a hiring manager by name, and mentions something real about the role, gets a different kind of attention. Finding that person and writing that message takes about twenty minutes per posting, so almost nobody does it. Using AI here means attacking those two bottlenecks, not spraying applications. The workflow pulls postings from Google for Jobs through an API, so the openings are real and current. It asks Apollo for the recruiter, talent acquisition lead or hiring manager at that company and reveals a verified work email. Then it hands Claude the posting, the contact and the candidate's profile with strict rules, and gets back an 80 to 120 word message that references the job description and connects it to one concrete achievement. What it deliberately does not do is send anything. That is the part people get wrong when they think of "AI applying for jobs". The value is not that a model writes for you. The value is a pipeline of real data with a human checkpoint at the end. For the manual side of the same search, the guide on covers portfolio, networking and interviews. What does the AI Job Hunter workflow do, node by node? The workflow runs in n8n, free or self hosted. Each row is a real node with the configuration that ended up working. | | Node | What it does | | | | | | 1 | Candidate Form Trigger | n8n's public form collects the candidate profile | | 2 | Build Candidate Profile | Set node normalizes the form fields into short names | | 3 | JSearch Find Jobs | HTTP Request finds real postings via Google for Jobs | | 4 | Filter & Select Top Jobs | Code node cleans the response and keeps up to 5 postings | | 5 | Apollo Find Hiring Contact | HTTP Request finds the likely hiring contact | | 6 | Apollo Reveal Contact Email | HTTP Request reveals the email, costs 1 Apollo credit | | 7 | Merge Job + Contact | Code node combines posting and contact | | 8 | Claude Draft Outreach Message | HTTP Request drafts the message | | 9 | Compile Final Record | Code node assembles the final record | | 10 | Log to Google Sheets | One row per run | | 11 | Gmail Create Draft | Creates the draft, never sends | | 12 13 | Error Trigger and Slack | Separate branch that reports failures | Accounts you need: n8n, RapidAPI with the JSearch API by OpenWeb Ninja (a paid plan is recommended), Apollo.io with a master API key (paid plan), the Anthropic API (pay per use), Google Sheets and Gmail through OAuth, and a Slack workspace for alerts. How do you capture the candidate profile? (nodes 1 and 2) The form asks for six things: name, target role, country as an ISO code (co, mx, ar, cl, es), key skills separated by commas, years of experience and one concrete achievement. That last field matters more than it looks. Without a specific achievement, the model has nothing real to connect to the posting and the message drifts into generic praise. Node 2 is a Set node that renames the long form labels into short variables: candidate name, target role, country code, skills, years experience and achievement. The most common failure in the whole workflow lives right here. Each field label in node 2 has to match the form label exactly, accents included. A single mismatch produces an "undefined" three or four nodes later, where it is much harder to trace. How does the workflow find real job postings? (nodes 3 and 4) Node 3 is an HTTP Request to JSearch: Two details cost the original build real time. The version in the URL matters, because v1 is deprecated for many RapidAPI accounts and returns errors that look like authentication problems. And the authentication has to be n8n's Custom Auth, not Header Auth, because JSearch needs two headers (X RapidAPI Key and X RapidAPI Host) and Header Auth only supports one. Node 4 is a Code node. The real results are nested under data.jobs, not under data, and postings without a company website are dropped because Apollo needs the domain in the next step: The description is cut at 800 characters on purpose. It is enough for the model t