{"workflow":{"id":13584,"name":"Automate LinkedIn job search and applications with Claude AI and Google Sheets","views":2061,"recentViews":9,"totalViews":2061,"createdAt":"2026-02-22T14:25:09.718Z","description":"This AI-powered workflow automatically searches LinkedIn for relevant jobs, scores them using Claude AI based on your profile, sends personalized applications or connection requests, and logs everything to a Google Sheet for tracking.\n\n## How it works\n\n1. **Trigger** - Runs on a schedule or via webhook to start a new job search\n2. **Search LinkedIn** - Fetches job listings based on keywords, location, and filters\n3. **Filter & Deduplicate** - Removes already-applied or seen jobs\n4. **Analyze with Claude AI** - Scores each job against your resume/profile\n5. **Decision Gate** - Only proceeds with jobs above your score threshold\n6. **Apply or Connect** - Sends Easy Apply or connection request to recruiter\n7. **Log Results** - Records all actions in Google Sheets for tracking\n\n## Setup Steps\n\n1. Import this workflow into your n8n instance\n2. Configure credentials:\n   - **LinkedIn OAuth2** - LinkedIn Developer Portal\n   - **Anthropic API** - For Claude AI job scoring\n   - **Google Sheets** - To track applications\n3. Update your profile/resume text in the `Build Search Context` node\n4. Set your job keywords and location preferences\n5. Activate the workflow\n\n## Sample Trigger Payload\n```json\n{\n  \"keywords\": \"Product Manager\",\n  \"location\": \"Bangalore, India\",\n  \"experienceLevel\": \"mid-senior\",\n  \"jobType\": \"full-time\",\n  \"scoreThreshold\": 70\n}\n```\n\n## Features\n\n- **AI-powered job scoring** based on your skills and experience\n- **Duplicate prevention** - tracks seen and applied jobs\n- **Auto Easy Apply** for matching jobs\n- **Recruiter outreach** with personalized messages\n- **Full audit log** in Google Sheets\n\n**Explore More LinkedIn & Social Automation:**  \n[Contact us](https://www.oneclickitsolution.com/contact-us/) to design AI-powered lead nurturing, content engagement, and multi-platform reply workflows tailored to your growth strategy.\n","workflow":{"id":"22HogRsAuRyWszhC","meta":{"instanceId":"dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281","templateCredsSetupCompleted":true},"name":"LinkedIn Job Search Automation with Claude AI","tags":[],"nodes":[{"id":"98cfe668-e941-41b0-81a9-9adf9effedc8","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-432,-112],"parameters":{"width":760,"height":1100,"content":"## LinkedIn Job Search Automation with Claude AI\n\nThis AI-powered workflow automatically searches LinkedIn for relevant jobs, scores them using Claude AI based on your profile, sends personalized applications or connection requests, and logs everything to a Google Sheet for tracking.\n\n### How it works\n\n1. **Trigger** - Runs on a schedule or via webhook to start a new job search\n2. **Search LinkedIn** - Fetches job listings based on keywords, location, and filters\n3. **Filter & Deduplicate** - Removes already-applied or seen jobs\n4. **Analyze with Claude AI** - Scores each job against your resume/profile\n5. **Decision Gate** - Only proceeds with jobs above your score threshold\n6. **Apply or Connect** - Sends Easy Apply or connection request to recruiter\n7. **Log Results** - Records all actions in Google Sheets for tracking\n\n### Setup Steps\n\n1. Import this workflow into your n8n instance\n2. Configure credentials:\n   - **LinkedIn OAuth2** - LinkedIn Developer Portal\n   - **Anthropic API** - For Claude AI job scoring\n   - **Google Sheets** - To track applications\n3. Update your profile/resume text in the `Build Search Context` node\n4. Set your job keywords and location preferences\n5. Activate the workflow\n\n### Sample Trigger Payload\n```json\n{\n  \"keywords\": \"Product Manager\",\n  \"location\": \"Bangalore, India\",\n  \"experienceLevel\": \"mid-senior\",\n  \"jobType\": \"full-time\",\n  \"scoreThreshold\": 70\n}\n```\n\n### Features\n\n- **AI-powered job scoring** based on your skills and experience\n- **Duplicate prevention** - tracks seen and applied jobs\n- **Auto Easy Apply** for matching jobs\n- **Recruiter outreach** with personalized messages\n- **Full audit log** in Google Sheets"},"typeVersion":1},{"id":"dc1eda1a-5166-4963-abbf-c1ba32330c2e","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[348,296],"parameters":{"color":4,"width":456,"height":328,"content":"## 1. Trigger & Input Validation"},"typeVersion":1},{"id":"82414155-40a9-4cf6-97b2-a25f19d334a9","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[844,-60],"parameters":{"color":4,"width":808,"height":684,"content":"## 2. Fetch & Filter Jobs"},"typeVersion":1},{"id":"e02d5cdb-6bab-463a-a56e-8b5a390cd04e","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[1712,320],"parameters":{"color":4,"width":712,"height":284,"content":"## 3. AI Scoring & Decision"},"typeVersion":1},{"id":"b9260824-9aa7-40fa-bd3b-e1f4efd6b841","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[2480,208],"parameters":{"color":4,"width":1200,"height":492,"content":"## 4. Apply, Outreach & Log"},"typeVersion":1},{"id":"496796ff-6f97-4271-9140-5123c088f695","name":"Receive Job Search Request","type":"n8n-nodes-base.webhook","position":[416,464],"webhookId":"linkedin-job-search-webhook","parameters":{"path":"linkedin-job-search","options":{},"httpMethod":"POST","responseMode":"responseNode"},"typeVersion":2},{"id":"9410eb78-deb5-46bf-80fb-9e5da83fa6dc","name":"Validate Input and Build Search Params","type":"n8n-nodes-base.code","position":[640,464],"parameters":{"mode":"runOnceForEachItem","jsCode":"// Extract search parameters from request\nconst body = $input.item.json.body || $input.item.json;\n\n// Required fields\nconst required = ['keywords', 'location'];\nconst missing = required.filter(f => !body[f]);\nif (missing.length > 0) {\n  throw new Error(`Missing required fields: ${missing.join(', ')}`);\n}\n\n// Default values and normalization\nconst searchParams = {\n  keywords: body.keywords.trim(),\n  location: body.location.trim(),\n  experienceLevel: body.experienceLevel || 'mid-senior',\n  jobType: body.jobType || 'full-time',\n  datePosted: body.datePosted || 'past-week',\n  remote: body.remote || false,\n  scoreThreshold: parseInt(body.scoreThreshold) || 70,\n  maxApplications: parseInt(body.maxApplications) || 10,\n  sendConnectionRequest: Boolean(body.sendConnectionRequest),\n  easyApplyOnly: Boolean(body.easyApplyOnly !== false)\n};\n\n// Candidate profile (customize with your own details)\nconst candidateProfile = {\n  name: body.candidateName || 'YOUR_NAME',\n  currentTitle: body.currentTitle || 'YOUR_CURRENT_TITLE',\n  yearsExperience: body.yearsExperience || 5,\n  skills: body.skills || ['JavaScript', 'Python', 'Product Management', 'Data Analysis', 'Agile'],\n  education: body.education || 'B.Tech Computer Science',\n  summary: body.profileSummary || 'Experienced professional seeking new opportunities in the tech industry.'\n};\n\n// Experience level mapping to LinkedIn API codes\nconst expLevelMap = {\n  'internship': '1',\n  'entry': '2',\n  'associate': '3',\n  'mid-senior': '4',\n  'director': '5',\n  'executive': '6'\n};\n\n// Job type mapping\nconst jobTypeMap = {\n  'full-time': 'F',\n  'part-time': 'P',\n  'contract': 'C',\n  'temporary': 'T',\n  'internship': 'I',\n  'volunteer': 'V'\n};\n\nreturn {\n  json: {\n    searchParams,\n    candidateProfile,\n    linkedInFilters: {\n      f_E: expLevelMap[searchParams.experienceLevel] || '4',\n      f_JT: jobTypeMap[searchParams.jobType] || 'F',\n      f_TPR: 'r604800',\n      f_LF: searchParams.remote ? '2' : undefined,\n      f_EA: searchParams.easyApplyOnly ? 'true' : undefined\n    },\n    metadata: {\n      requestId: `LJSR-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,\n      startedAt: new Date().toISOString(),\n      applicationsCount: 0\n    }\n  }\n};"},"typeVersion":2},{"id":"7af17870-28d8-410f-b0ce-e04e4ca72ac1","name":"Fetch LinkedIn Job Listings","type":"n8n-nodes-base.httpRequest","position":[864,272],"parameters":{"url":"https://api.linkedin.com/v2/jobSearch","options":{"timeout":15000},"sendQuery":true,"sendHeaders":true,"authentication":"predefinedCredentialType","queryParameters":{"parameters":[{"name":"keywords","value":"={{ $json.searchParams.keywords }}"},{"name":"location","value":"={{ $json.searchParams.location }}"},{"name":"f_E","value":"={{ $json.linkedInFilters.f_E }}"},{"name":"f_JT","value":"={{ $json.linkedInFilters.f_JT }}"},{"name":"f_TPR","value":"={{ $json.linkedInFilters.f_TPR }}"},{"name":"count","value":"25"},{"name":"start","value":"0"}]},"headerParameters":{"parameters":[{"name":"X-Restli-Protocol-Version","value":"2.0.0"},{"name":"Content-Type","value":"application/json"}]},"nodeCredentialType":"linkedInOAuth2Api"},"credentials":{"linkedInOAuth2Api":{"id":"4vcL53DmBFKE4NkT","name":"LinkedIn account - test"}},"typeVersion":4.2,"continueOnFail":true},{"id":"a3773374-7fcf-4761-be73-799cc11094f7","name":"Fetch Individual Job Details","type":"n8n-nodes-base.httpRequest","position":[864,464],"parameters":{"url":"=https://api.linkedin.com/v2/jobs/{{ $json.jobId }}","options":{"timeout":10000},"sendHeaders":true,"authentication":"predefinedCredentialType","headerParameters":{"parameters":[{"name":"X-Restli-Protocol-Version","value":"2.0.0"}]},"nodeCredentialType":"linkedInOAuth2Api"},"credentials":{"linkedInOAuth2Api":{"id":"4vcL53DmBFKE4NkT","name":"LinkedIn account - test"}},"typeVersion":4.2,"continueOnFail":true},{"id":"2db8558d-1baa-4e0f-9ad3-33b719f8a0e3","name":"Parse and Normalize Job Listings","type":"n8n-nodes-base.code","position":[1088,440],"parameters":{"jsCode":"// Get raw LinkedIn job response\nconst jobsResponse = $('Fetch LinkedIn Job Listings').first().json;\nconst searchContext = $('Validate Input and Build Search Params').first().json;\n\nconst jobs = [];\n\n// Handle LinkedIn API response structure\nconst rawJobs = jobsResponse.elements || jobsResponse.jobs || jobsResponse.data || [];\n\nfor (const job of rawJobs) {\n  try {\n    const parsed = {\n      jobId: job.entityUrn?.replace('urn:li:jobPosting:', '') || job.id || '',\n      title: job.title || job.jobPostingTitle || 'Unknown Title',\n      companyName: job.companyDetails?.company?.name || job.formattedEmployerName || 'Unknown Company',\n      companyId: job.companyDetails?.company?.entityUrn?.replace('urn:li:company:', '') || '',\n      location: job.formattedLocation || job.workplaceTypes?.[0] || searchContext.searchParams.location,\n      description: job.description?.text || job.jobDescription || '',\n      descriptionSnippet: (job.description?.text || '').substring(0, 500),\n      isEasyApply: Boolean(job.easyApplyEnabled || job.applyMethod?.easyApplyJobApplicationFormCommon),\n      jobUrl: `https://www.linkedin.com/jobs/view/${job.entityUrn?.replace('urn:li:jobPosting:', '') || job.id}/`,\n      postedAt: job.listedAt ? new Date(job.listedAt).toISOString() : new Date().toISOString(),\n      applicantsCount: job.applies || 0,\n      salary: job.salaryInsights?.salaryRange?.min\n        ? `${job.salaryInsights.salaryRange.min}-${job.salaryInsights.salaryRange.max} ${job.salaryInsights.salaryRange.currencyCode}`\n        : 'Not disclosed',\n      skills: job.skills?.map(s => s.name) || [],\n      seniorityLevel: job.expLevelId || searchContext.searchParams.experienceLevel,\n      employmentType: job.employmentStatus || searchContext.searchParams.jobType,\n      remote: job.workplaceTypes?.includes('REMOTE') || false\n    };\n\n    if (parsed.jobId && parsed.title) {\n      jobs.push({ json: { job: parsed, searchContext } });\n    }\n  } catch (err) {\n    console.log('Error parsing job:', err.message);\n  }\n}\n\nif (jobs.length === 0) {\n  throw new Error('No valid job listings found. Check LinkedIn API credentials and search parameters.');\n}\n\nconsole.log(`Parsed ${jobs.length} jobs from LinkedIn`);\nreturn jobs;"},"typeVersion":2},{"id":"aedb66a1-564f-4425-a9f0-8e398d474621","name":"Check Already Applied (Google Sheets)","type":"n8n-nodes-base.googleSheets","position":[1312,440],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"id","value":"="},"documentId":{"__rl":true,"mode":"id","value":"="},"authentication":"serviceAccount"},"credentials":{"googleApi":{"id":"ScSS2KxGQULuPtdy","name":"Google Sheets- test"}},"typeVersion":4.5,"continueOnFail":true},{"id":"5b625a70-7933-4c0a-8f6e-7ad9f2249d52","name":"Skip Already Seen Jobs","type":"n8n-nodes-base.if","position":[1536,440],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"loose"},"combinator":"and","conditions":[{"operator":{"type":"number","operation":"equals"},"leftValue":"={{ $json.length || 0 }}","rightValue":0}]}},"typeVersion":2},{"id":"b8080a67-de60-4ec8-a7fc-bd3119b536e4","name":"Score Job with Claude AI","type":"@n8n/n8n-nodes-langchain.agent","position":[1760,440],"parameters":{"text":"=You are an expert career coach and resume analyst. Score the following job posting against the candidate profile and return a JSON evaluation.\n\n**Candidate Profile:**\n- Name: {{ $json.searchContext.candidateProfile.name }}\n- Current Title: {{ $json.searchContext.candidateProfile.currentTitle }}\n- Years of Experience: {{ $json.searchContext.candidateProfile.yearsExperience }}\n- Skills: {{ $json.searchContext.candidateProfile.skills.join(', ') }}\n- Education: {{ $json.searchContext.candidateProfile.education }}\n- Summary: {{ $json.searchContext.candidateProfile.summary }}\n\n**Job Posting:**\n- Title: {{ $json.job.title }}\n- Company: {{ $json.job.companyName }}\n- Location: {{ $json.job.location }}\n- Description: {{ $json.job.descriptionSnippet }}\n- Required Skills: {{ $json.job.skills.join(', ') }}\n- Seniority: {{ $json.job.seniorityLevel }}\n- Remote: {{ $json.job.remote }}\n- Salary: {{ $json.job.salary }}\n\n**Scoring Criteria:**\n1. Skills match (0-30 points) - How well candidate skills align with job requirements\n2. Experience level fit (0-25 points) - Years of experience vs role expectations\n3. Title relevance (0-20 points) - How closely current/target title matches\n4. Location/remote compatibility (0-15 points)\n5. Company fit (0-10 points) - Company size, industry, reputation\n\n**Response Format (JSON only, no markdown):**\n{\n  \"totalScore\": 82,\n  \"breakdown\": {\n    \"skillsMatch\": 25,\n    \"experienceFit\": 20,\n    \"titleRelevance\": 18,\n    \"locationFit\": 12,\n    \"companyFit\": 7\n  },\n  \"matchedSkills\": [\"list of matching skills\"],\n  \"missingSkills\": [\"list of skills candidate lacks\"],\n  \"pros\": [\"top reasons this is a good fit\"],\n  \"cons\": [\"main concerns or gaps\"],\n  \"shouldApply\": true,\n  \"coverLetterHook\": \"One compelling opening sentence for a cover letter\",\n  \"connectionMessage\": \"A short personalized LinkedIn connection message (under 300 chars)\"\n}","options":{"systemMessage":"You are a career coach that evaluates job-candidate fit and responds in JSON format only. Never include markdown code blocks or additional text outside the JSON."},"promptType":"define"},"typeVersion":1.6},{"id":"32fdfbf9-f7f0-4f47-a93a-b8a03aabbf88","name":"Claude AI Model","type":"@n8n/n8n-nodes-langchain.lmChatAnthropic","position":[1832,664],"parameters":{"model":"=claude-sonnet-4-20250514","options":{"temperature":0.3}},"credentials":{"anthropicApi":{"id":"fK55jZdb6CaYNukq","name":"Anthropic account - test"}},"typeVersion":1},{"id":"955d64a8-f686-4b5f-8a50-d6bf20621288","name":"Parse AI Score and Decide","type":"n8n-nodes-base.code","position":[2112,440],"parameters":{"mode":"runOnceForEachItem","jsCode":"const aiResponse = $input.item.json;\nlet aiText = aiResponse.response || aiResponse.output || aiResponse.text || '';\n\n// Handle content array format from Anthropic\nif (aiResponse.content && Array.isArray(aiResponse.content)) {\n  aiText = aiResponse.content[0]?.text || '';\n}\n\n// Clean JSON from any markdown code blocks\nconst cleanText = aiText\n  .replace(/```json\\s*/g, '')\n  .replace(/```\\s*/g, '')\n  .trim();\n\nlet aiScore;\ntry {\n  aiScore = JSON.parse(cleanText);\n} catch (error) {\n  throw new Error(`Failed to parse AI response: ${error.message}. Response was: ${cleanText}`);\n}\n\n// Pull job and search context from upstream\nconst jobData = $('Skip Already Seen Jobs').item.json;\nconst scoreThreshold = jobData.searchContext?.searchParams?.scoreThreshold || 70;\n\nreturn {\n  json: {\n    job: jobData.job,\n    searchContext: jobData.searchContext,\n    aiScore,\n    scoreThreshold,\n    meetsThreshold: (aiScore.totalScore || 0) >= scoreThreshold,\n    processedAt: new Date().toISOString()\n  }\n};"},"typeVersion":2},{"id":"8b09e7f3-9810-4606-bf72-59bf12213427","name":"Check Score Threshold","type":"n8n-nodes-base.if","position":[2336,440],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":false,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"boolean","operation":"true"},"leftValue":"={{ $json.meetsThreshold }}"}]}},"typeVersion":2},{"id":"1ebcd2fe-afc0-415e-91b3-93d0b0c2f7b7","name":"Submit Easy Apply Application","type":"n8n-nodes-base.httpRequest","position":[2560,344],"parameters":{"url":"https://api.linkedin.com/v2/jobs/{{ $json.job.jobId }}/apply","method":"POST","options":{"timeout":15000},"jsonBody":"={\n  \"jobPostingUrn\": \"urn:li:jobPosting:{{ $json.job.jobId }}\",\n  \"applicationData\": {\n    \"resumeText\": \"{{ $json.searchContext.candidateProfile.summary }}\",\n    \"coverLetter\": \"{{ $json.aiScore.coverLetterHook }} I am excited to apply for the {{ $json.job.title }} position at {{ $json.job.companyName }}.\",\n    \"contactInfo\": {\n      \"name\": \"{{ $json.searchContext.candidateProfile.name }}\"\n    }\n  }\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","authentication":"predefinedCredentialType","headerParameters":{"parameters":[{"name":"X-Restli-Protocol-Version","value":"2.0.0"},{"name":"Content-Type","value":"application/json"}]},"nodeCredentialType":"linkedInOAuth2Api"},"credentials":{"linkedInOAuth2Api":{"id":"4vcL53DmBFKE4NkT","name":"LinkedIn account - test"}},"typeVersion":4.2,"continueOnFail":true},{"id":"1d2c0f66-06f1-45f4-a26f-f0e93ad96246","name":"Send Recruiter Connection Request","type":"n8n-nodes-base.httpRequest","position":[2784,352],"parameters":{"url":"https://api.linkedin.com/v2/invitations","method":"POST","options":{"timeout":10000},"jsonBody":"={\n  \"invitee\": {\n    \"com.linkedin.voyager.growth.invitation.InviteeProfile\": {\n      \"profileId\": \"{{ $json.job.companyId }}\"\n    }\n  },\n  \"message\": \"{{ $json.aiScore.connectionMessage }}\",\n  \"trackingId\": \"{{ $json.searchContext.metadata.requestId }}\"\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","authentication":"predefinedCredentialType","headerParameters":{"parameters":[{"name":"X-Restli-Protocol-Version","value":"2.0.0"},{"name":"Content-Type","value":"application/json"}]},"nodeCredentialType":"linkedInOAuth2Api"},"credentials":{"linkedInOAuth2Api":{"id":"4vcL53DmBFKE4NkT","name":"LinkedIn account - test"}},"typeVersion":4.2,"continueOnFail":true},{"id":"2d335fe0-355b-4d83-a9e6-9ca8a3840a98","name":"Format Applied Job Result","type":"n8n-nodes-base.code","position":[3008,344],"parameters":{"mode":"runOnceForEachItem","jsCode":"const jobData = $('Parse AI Score and Decide').item.json;\nconst applyResponse = $('Submit Easy Apply Application').item.json;\nconst connectionResponse = $('Send Recruiter Connection Request').item.json;\n\nconst applicationSuccess = !applyResponse.error && (applyResponse.status === 200 || applyResponse.id);\nconst connectionSuccess = !connectionResponse.error && (connectionResponse.id || connectionResponse.createdAt);\n\nreturn {\n  json: {\n    status: 'APPLIED',\n    jobId: jobData.job.jobId,\n    jobTitle: jobData.job.title,\n    company: jobData.job.companyName,\n    location: jobData.job.location,\n    jobUrl: jobData.job.jobUrl,\n    salary: jobData.job.salary,\n    aiScore: jobData.aiScore.totalScore,\n    matchedSkills: jobData.aiScore.matchedSkills,\n    missingSkills: jobData.aiScore.missingSkills,\n    pros: jobData.aiScore.pros,\n    cons: jobData.aiScore.cons,\n    applicationSubmitted: applicationSuccess,\n    connectionRequestSent: connectionSuccess,\n    appliedAt: new Date().toISOString(),\n    requestId: jobData.searchContext.metadata.requestId\n  }\n};"},"typeVersion":2},{"id":"7da61876-fc9e-41a6-abad-ee3e0512fcb6","name":"Format Skipped Job Result","type":"n8n-nodes-base.code","position":[3008,536],"parameters":{"mode":"runOnceForEachItem","jsCode":"const jobData = $input.item.json;\n\nreturn {\n  json: {\n    status: 'SKIPPED_LOW_SCORE',\n    jobId: jobData.job.jobId,\n    jobTitle: jobData.job.title,\n    company: jobData.job.companyName,\n    location: jobData.job.location,\n    jobUrl: jobData.job.jobUrl,\n    salary: jobData.job.salary,\n    aiScore: jobData.aiScore.totalScore,\n    scoreThreshold: jobData.scoreThreshold,\n    matchedSkills: jobData.aiScore.matchedSkills,\n    missingSkills: jobData.aiScore.missingSkills,\n    reason: `Score ${jobData.aiScore.totalScore} below threshold of ${jobData.scoreThreshold}`,\n    processedAt: new Date().toISOString(),\n    requestId: jobData.searchContext.metadata.requestId\n  }\n};"},"typeVersion":2},{"id":"b9bf9f93-e782-41e1-9816-be4cbcb3b8fa","name":"Log All Results to Google Sheets","type":"n8n-nodes-base.googleSheets","position":[3232,440],"parameters":{"columns":{"value":{},"schema":[],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"id","value":"="},"documentId":{"__rl":true,"mode":"id","value":"="}},"credentials":{"googleSheetsOAuth2Api":{"id":"sldw2qK7iVusK0rY","name":"Google Sheets account"}},"typeVersion":4.5,"continueOnFail":true},{"id":"fe51ad52-a980-4eee-b9d5-4c3bf4da9b7e","name":"Send Summary Response","type":"n8n-nodes-base.respondToWebhook","position":[3456,440],"parameters":{"options":{"responseHeaders":{"entries":[{"name":"Content-Type","value":"application/json"}]}},"respondWith":"json","responseBody":"={{ JSON.stringify($json, null, 2) }}"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"b9ca1fac-36b1-46a2-ae5e-8996211179a8","connections":{"Claude AI Model":{"ai_languageModel":[[{"node":"Score Job with Claude AI","type":"ai_languageModel","index":0}]]},"Check Score Threshold":{"main":[[{"node":"Submit Easy Apply Application","type":"main","index":0}],[{"node":"Format Skipped Job Result","type":"main","index":0}]]},"Skip Already Seen Jobs":{"main":[[{"node":"Score Job with Claude AI","type":"main","index":0}]]},"Score Job with Claude AI":{"main":[[{"node":"Parse AI Score and Decide","type":"main","index":0}]]},"Format Applied Job Result":{"main":[[{"node":"Log All Results to Google Sheets","type":"main","index":0}]]},"Format Skipped Job Result":{"main":[[{"node":"Log All Results to Google Sheets","type":"main","index":0}]]},"Parse AI Score and Decide":{"main":[[{"node":"Check Score Threshold","type":"main","index":0}]]},"Receive Job Search Request":{"main":[[{"node":"Validate Input and Build Search Params","type":"main","index":0}]]},"Fetch LinkedIn Job Listings":{"main":[[{"node":"Parse and Normalize Job Listings","type":"main","index":0}]]},"Submit Easy Apply Application":{"main":[[{"node":"Send Recruiter Connection Request","type":"main","index":0}]]},"Log All Results to Google Sheets":{"main":[[{"node":"Send Summary Response","type":"main","index":0}]]},"Parse and Normalize Job Listings":{"main":[[{"node":"Check Already Applied (Google Sheets)","type":"main","index":0}]]},"Send Recruiter Connection Request":{"main":[[{"node":"Format Applied Job Result","type":"main","index":0}]]},"Check Already Applied (Google Sheets)":{"main":[[{"node":"Skip Already Seen Jobs","type":"main","index":0}]]},"Validate Input and Build Search Params":{"main":[[{"node":"Fetch LinkedIn Job Listings","type":"main","index":0},{"node":"Fetch Individual Job Details","type":"main","index":0},{"node":"Parse and Normalize Job Listings","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":22,"nodeTypes":{"n8n-nodes-base.if":{"count":2},"n8n-nodes-base.code":{"count":5},"n8n-nodes-base.webhook":{"count":1},"n8n-nodes-base.stickyNote":{"count":5},"n8n-nodes-base.httpRequest":{"count":4},"n8n-nodes-base.googleSheets":{"count":2},"@n8n/n8n-nodes-langchain.agent":{"count":1},"n8n-nodes-base.respondToWebhook":{"count":1},"@n8n/n8n-nodes-langchain.lmChatAnthropic":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Oneclick AI Squad","username":"oneclick-ai","bio":"The AI Squad Initiative is a pioneering effort to build, automate and scale AI-powered workflows using n8n.io. Our mission is to help individuals and businesses integrate AI agents seamlessly into their daily operations  from automating tasks and enhancing productivity to creating innovative, intelligent solutions. We design modular, reusable AI workflow templates that empower creators, developers and teams to supercharge their automation with minimal effort and maximum impact.","verified":true,"links":["https://www.oneclickitsolution.com/"],"avatar":"https://gravatar.com/avatar/848fca91367142f65f9e5c55d64e5c9952b160d7b060d103b52aa343c6bc7b3d?r=pg&d=retro&size=200"},"nodes":[{"id":18,"icon":"file:googleSheets.svg","name":"n8n-nodes-base.googleSheets","codex":{"data":{"alias":["CSV","Sheet","Spreadsheet","GS"],"resources":{"generic":[{"url":"https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/","icon":"❤️","label":"Love at first sight: Ricardo’s n8n journey"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/","icon":"⏲","label":"Creating triggers for n8n workflows using polling"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/","icon":"🍔","label":"How Honest Burgers Use Automation to Save $100k per year"},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Data & Storage","Productivity"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\",\"output\"]","defaults":{"name":"Google Sheets"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="},"displayName":"Google Sheets","typeVersion":5,"nodeCategories":[{"id":3,"name":"Data & Storage"},{"id":4,"name":"Productivity"}]},{"id":19,"icon":"file:httprequest.svg","name":"n8n-nodes-base.httpRequest","codex":{"data":{"alias":["API","Request","URL","Build","cURL"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/","icon":"🎨","label":"Automate Designs with Bannerbear and n8n"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/","icon":"🧰","label":"How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"output\"]","defaults":{"name":"HTTP Request","color":"#0004F5"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="},"displayName":"HTTP Request","typeVersion":4,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":47,"icon":"file:webhook.svg","name":"n8n-nodes-base.webhook","codex":{"data":{"alias":["HTTP","API","Build","WH"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/","icon":"👏","label":"How to automatically give kudos to contributors with GitHub, Slack, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/creating-custom-incident-response-workflows-with-n8n/","label":"How to automate every step of an incident response workflow"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"trigger\"]","defaults":{"name":"Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Webhook","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":535,"icon":"file:webhook.svg","name":"n8n-nodes-base.respondToWebhook","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.respondtowebhook/"}]},"categories":["Core Nodes","Utility"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"transform\"]","defaults":{"name":"Respond to Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Respond to Webhook","typeVersion":2,"nodeCategories":[{"id":7,"name":"Utility"},{"id":9,"name":"Core Nodes"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1145,"icon":"file:anthropic.svg","name":"@n8n/n8n-nodes-langchain.lmChatAnthropic","codex":{"data":{"alias":["claude","sonnet","opus"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatanthropic/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"Anthropic Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NiIgaGVpZ2h0PSIzMiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzdEN0Q4NyIgZD0iTTMyLjczIDBoLTYuOTQ1TDM4LjQ1IDMyaDYuOTQ1ek0xMi42NjUgMCAwIDMyaDcuMDgybDIuNTktNi43MmgxMy4yNWwyLjU5IDYuNzJoNy4wODJMMTkuOTI5IDB6bS0uNzAyIDE5LjMzNyA0LjMzNC0xMS4yNDYgNC4zMzQgMTEuMjQ2eiIvPjwvc3ZnPg=="},"displayName":"Anthropic Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":43,"name":"Personal Productivity"},{"id":49,"name":"AI Summarization"}],"image":[]}}