{"workflow":{"id":14295,"name":"Screen CVs against job descriptions with Gmail, easybits, Airtable and Slack","views":1,"recentViews":0,"totalViews":1,"createdAt":"2026-03-24T15:21:11.956Z","description":"**How it works**\n\nA CV arrives by email. easybits extracts structured candidate data from the PDF: same JSON schema every time, regardless of CV layout or language. The workflow then fetches the open job description from Airtable, compares the candidate's skills against the role requirements, calculates a match score, saves the candidate record, and sends a Slack notification flagged as shortlist or review.\n\n**What makes this different**\n\nThe scoring is based on the actual job description, not a static keyword list. Upload a new job description, and the scoring updates automatically for every new CV.\n\n**Set up steps**\n\n- Create a free easybits.tech account and set up two pipelines: one for CV extraction, one for job description extraction. Copy the pipeline IDs.\n- Add your Gmail OAuth2 credential in n8n\n- Add your easybits API key as a Header Auth credential\n- Add your Airtable personal access token — create two tables: Jobs and Candidates (schemas in sticky notes)\n- Add your Slack webhook URL\n- Run the Job Description Parser workflow first by emailing a job description PDF to your recruitment inbox\n- Then activate the CV Screening workflow — it reads from the Jobs table automatically\n\n**Prerequisites**\n\n- easybits.tech account (free tier available)\n- Gmail account with OAuth2 access\n- Airtable account\n- Slack workspace with incoming webhooks enabled\n\n**Setup time**: approximately 20 to 30 minutes","workflow":{"id":"wIirge1rt4E3EquqWx9sA","meta":{"instanceId":"a28a3566c085ecd2daefca91e5c2ce32a7fb369d0653612617907beb10cf2240","templateCredsSetupCompleted":true},"name":"CV screening","tags":[],"nodes":[{"id":"f2d12e48-2668-4535-acc3-128f3bd7d1c3","name":"Sticky Note — Header","type":"n8n-nodes-base.stickyNote","position":[3344,976],"parameters":{"width":656,"height":1212,"content":"## 📄 CV & Resume Screener\n### Powered by Gmail · easybits.tech · Airtable · Slack\n\nAutomatically reads CVs from Gmail, extracts structured candidate data using AI, scores each applicant against your open job requirements, saves results to Airtable, and notifies your recruiter on Slack — all without manual review.\n\n---\n\n### ✅ Prerequisites\nBefore activating this workflow, complete the following setup steps:\n\n**1. Gmail**\n- Connect your Gmail account via OAuth2\n- Applied to: Gmail Trigger node + Download Email node\n\n**2. easybits.tech API Key**\n- Sign up at [easybits.tech](https://easybits.tech) to get your free API key\n- Add the key to the `httpCustomAuth` credential in n8n\n- Update the pipeline ID in the `easybits: Extract CV Data` node\n\n**3. Airtable**\n- Create a base with two tables: **Jobs** and **Candidates**\n- Run the companion **Job Description Parser** workflow first to populate the Jobs table\n- Update the Base ID and Table IDs in all Airtable nodes\n\n**4. Slack**\n- Create two Slack Incoming Webhooks (one per channel or status)\n- Paste each webhook URL into the respective `Slack: Notify` nodes\n\n---\n\n### ⚙️ How It Works\n1. **Gmail Trigger** polls for unread emails with CV attachments\n2. **Download & Prepare** fetches the email, extracts the PDF, and base64-encodes it\n3. **easybits Extract** sends the PDF to the AI pipeline and returns clean JSON\n4. **Fetch Open Job** pulls the first open role from your Airtable Jobs table\n5. **Score CV** compares candidate skills against the job's tech stack requirements\n6. **Route by Score** splits candidates: ≥ 60% → Shortlisted · < 60% → In Review\n7. **Save & Notify** creates the candidate record in Airtable and posts a Slack summary\n\n---\n\n### 🔧 Customisation\n- **Score threshold**: Change the value `60` in the IF node (Step 6)\n- **Email filter**: Edit the Gmail search query in the trigger node\n- **Scoring logic**: Adjust the Code node in Step 5 to weight skills differently\n- **Fields**: Add or remove fields in the Airtable nodes to match your Candidates table schema"},"typeVersion":1},{"id":"3a1f6b36-74eb-493e-a748-71dc842f2f8f","name":"Sticky Note — Step 1","type":"n8n-nodes-base.stickyNote","position":[4021,1396],"parameters":{"color":7,"width":406,"height":428,"content":"### Step 1 · Get Email & Attachment\n\n📧 **Gmail Trigger** polls every minute for unread emails matching:\n`has:attachment subject:(Application OR CV OR Resume OR Bewerbung)`\n\n**Setup required:**\n- Connect Gmail via OAuth2\n- Adjust the `after:` date and subject keywords to match your inbox"},"typeVersion":1},{"id":"f3118ccb-bfd0-43d4-8388-f7ce02dfa5a0","name":"Sticky Note — Step 2","type":"n8n-nodes-base.stickyNote","position":[4477,1396],"parameters":{"color":7,"width":390,"height":428,"content":"### Step 2 · Download & Prepare PDF\n\n📥 Downloads the full email via Gmail API, extracts the PDF attachment, and base64-encodes it.\n\n⚠️ **File size limit:** PDFs over ~600 KB will be rejected by the Code node to stay within API limits.\n\n**Setup required:**\n- Same Gmail OAuth2 credential as Step 1\n- Attachment index `parts[1]` assumes the PDF is the second part — adjust if needed"},"typeVersion":1},{"id":"32fa7ad3-fbc7-4d06-bbd9-5a74fbbdb07e","name":"Sticky Note — Step 3","type":"n8n-nodes-base.stickyNote","position":[4891,1268],"parameters":{"color":7,"width":234,"height":556,"content":"### Step 3 · Extract CV with easybits\n\n🤖 Sends the base64 PDF to the easybits.tech AI pipeline and returns structured JSON (name, email, skills, experience, education, etc.)\n\n**Setup required:**\n- Add your API key to the `httpCustomAuth` credential\n- Replace the pipeline ID in the URL with your own CV extraction pipeline ID\n- Get your free key at [easybits.tech](https://easybits.tech)"},"typeVersion":1},{"id":"6607e358-4b04-4712-aef0-0f3bd26d7f8b","name":"Sticky Note — Step 4","type":"n8n-nodes-base.stickyNote","position":[5119,1220],"parameters":{"color":7,"width":226,"height":604,"content":"### Step 4 · Fetch Open Job\n\n📋 Queries Airtable for the first record where `status = \"Open\"` to get the active job's requirements.\n\n**Setup required:**\n- Update the **Airtable Base ID** and **Jobs table ID**\n- Ensure the Jobs table has a `status` field and a `tech_stack` field (comma-separated or array)\n- Run the **Job Description Parser** workflow first to populate this table"},"typeVersion":1},{"id":"1f738c86-57e3-4625-8c3c-569f0bafbc15","name":"Sticky Note — Step 5","type":"n8n-nodes-base.stickyNote","position":[5348,1220],"parameters":{"color":7,"width":216,"height":604,"content":"### Step 5 · Score CV vs Job\n\n🧮 Compares the candidate's extracted CV text against each item in the job's `tech_stack` field.\n\n**Scoring formula:**\n`score = matched skills ÷ total required skills × 100`\n\n**Customise:**\n- Edit this Code node to add weighted scoring (e.g. must-have vs nice-to-have)\n- Add extra matching fields beyond tech_stack"},"typeVersion":1},{"id":"172948e1-bb9f-4419-9edd-c764b667fc78","name":"Sticky Note — Step 6","type":"n8n-nodes-base.stickyNote","position":[5581,1220],"parameters":{"color":7,"width":198,"height":604,"content":"### Step 6 · Route by Score\n\n🔀 Routes candidates based on their match score:\n\n- ✅ **≥ 60%** → `true` branch → **Shortlisted**\n- 🔎 **< 60%** → `false` branch → **In Review**\n\n**Customise:**\n- Change the threshold value `60` in this IF node to raise or lower the bar\n- Default was 80% — lowered to 60% to cast a wider net"},"typeVersion":1},{"id":"7f530826-8eae-4ed3-8a2a-f559c8629759","name":"Sticky Note — Step 7","type":"n8n-nodes-base.stickyNote","position":[5788,1188],"parameters":{"color":7,"width":456,"height":732,"content":"### Step 7 · Save to Airtable & Notify on Slack\n\n💾 Creates a candidate record in your Airtable **Candidates** table with status set to either `Shortlisted` or `In Review`.\n\n📣 Posts a formatted summary card to Slack with the candidate name, match score, job title, matched skills, and LinkedIn URL.\n\n**Setup required:**\n- Update the **Airtable Base ID** and **Candidates table ID** in both Airtable nodes\n- Paste your **Slack webhook URLs** into both HTTP Request (Slack) nodes\n- Ensure your Candidates table fields match the column names mapped in the Airtable nodes"},"typeVersion":1},{"id":"88dce86a-3ee8-46ec-8e93-62ae9ca6dd26","name":"Gmail: Watch CV Emails","type":"n8n-nodes-base.gmailTrigger","position":[4064,1664],"parameters":{"simple":false,"filters":{"q":"has:attachment subject:(Application OR CV OR Bewerbung OR Resume) after:2026/03/12","readStatus":"unread"},"options":{},"pollTimes":{"item":[{"mode":"everyMinute"}]}},"credentials":{"gmailOAuth2":{"id":"NyXSPydHL0urjf34","name":"Gmail account 3"}},"typeVersion":1.3},{"id":"80d51d67-5511-406a-9f09-35125123c900","name":"Download Email & Attachment","type":"n8n-nodes-base.httpRequest","position":[4288,1664],"parameters":{"url":"=https://gmail.googleapis.com/gmail/v1/users/me/messages/{{ $json.id }}?format=full","options":{},"authentication":"predefinedCredentialType","nodeCredentialType":"gmailOAuth2"},"credentials":{"gmailOAuth2":{"id":"NyXSPydHL0urjf34","name":"Gmail account 3"}},"typeVersion":4.3},{"id":"ff0c2db5-ea81-4070-bf93-d82d2a131937","name":"Convert PDF to Base64","type":"n8n-nodes-base.httpRequest","position":[4512,1664],"parameters":{"url":"=https://gmail.googleapis.com/gmail/v1/users/me/messages/{{ $json.id }}/attachments/{{ $json.payload.parts[1].body.attachmentId }}","options":{},"authentication":"predefinedCredentialType","nodeCredentialType":"gmailOAuth2"},"credentials":{"gmailOAuth2":{"id":"NyXSPydHL0urjf34","name":"Gmail account 3"}},"typeVersion":4.3},{"id":"b7020e7c-6334-4dd0-a669-6699b5eb65fe","name":"Prepare PDF Payload","type":"n8n-nodes-base.code","position":[4736,1664],"parameters":{"jsCode":"const base64String = $input.first().json.data;\nconst sizeKB = Math.round(base64String.length / 1024);\n\nif (base64String.length > 800000) {\n  throw new Error(`CV too large: ${sizeKB}KB. Please use a PDF under 600KB.`);\n}\n\nreturn [{\n  json: {\n    base64: base64String,\n    sizeKB: sizeKB\n  }\n}];"},"typeVersion":2},{"id":"aaf48e8a-6c2f-4a08-9d63-463602e13a30","name":"easybits: Extract CV Data","type":"n8n-nodes-base.httpRequest","position":[4960,1664],"parameters":{"url":"https://extractor.easybits.tech/api/pipelines/8ppfebcZMIysqGMaUzli","method":"POST","options":{},"jsonBody":"={\n  \"files\": [\"data:application/pdf;base64,{{ $json.base64 }}\"]\n}","sendBody":true,"specifyBody":"json","authentication":"genericCredentialType","genericAuthType":"httpCustomAuth"},"credentials":{"httpCustomAuth":{"id":"CjY4dlWj8iGLeqRQ","name":"Custom Auth account"}},"typeVersion":4.3},{"id":"3e929414-7fe0-47f8-bc5c-68cd6b2c11f3","name":"Airtable - Fetch Open Job","type":"n8n-nodes-base.airtable","position":[5184,1664],"parameters":{"base":{"__rl":true,"mode":"id","value":"appN5gwc0tof1nc0Y"},"table":{"__rl":true,"mode":"list","value":"tblgftBvUd3PgfgKM","cachedResultUrl":"https://airtable.com/appN5gwc0tof1nc0Y/tblgftBvUd3PgfgKM","cachedResultName":"Jobs"},"options":{},"operation":"search","filterByFormula":"status = \"Open\""},"credentials":{"airtableTokenApi":{"id":"kZl4JOjQ6h36eu3R","name":"Airtable Personal Access Token account 2"}},"typeVersion":2.1},{"id":"3a4f786f-7ad4-4934-b02a-ce28e77a1a92","name":"Score CV vs Job Description ","type":"n8n-nodes-base.code","position":[5408,1664],"parameters":{"jsCode":"// 1. Get data from the previous nodes\nconst extraction = $node[\"easybits: Extract CV Data\"].json.data;\n// We use the first item from Airtable (index 0)\nconst job = $node[\"Airtable - Fetch Open Job\"].json; \n\n// Combine everything the CV parser found into one text block\nconst cvText = JSON.stringify(extraction).toLowerCase();\n\n// 2. Score against the TECH STACK instead of the long phrases\n// This list has \"Python\", \"Figma\", \"Clay\", etc.\nconst techRequirements = job.tech_stack || [];\n\nlet matches = 0;\nlet foundItems = [];\n\ntechRequirements.forEach(skill => {\n  // Clean up the skill name and check if it's in the CV\n  const cleanSkill = skill.toLowerCase().trim();\n  if (cvText.includes(cleanSkill)) {\n    matches++;\n    foundItems.push(skill);\n  }\n});\n\n// 3. Calculate Score\nconst total = techRequirements.length || 1;\nconst finalScore = Math.round((matches / total) * 100);\n\nreturn {\n  match_score: finalScore,\n  matched_count: matches,\n  total_possible: total,\n  details: foundItems.join(\", \"),\n  name: extraction.candidate_name || \"Jordan Reed\",\n  email: extraction.contact_email || \"N/A\",\n  linkedin: extraction.linkedin_url || \"N/A\"\n};"},"typeVersion":2},{"id":"0ae553ee-ca8d-44f0-bb71-8a38be3e34f1","name":"Route by Score ","type":"n8n-nodes-base.if","position":[5632,1664],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"d89ea650-898a-46ad-8782-a1f8d305ada0","operator":{"type":"number","operation":"gte"},"leftValue":"={{ $json.matchScore }}","rightValue":60}]}},"typeVersion":2.3},{"id":"f9c742df-dd7c-4a27-a223-868a59333725","name":"Airtable: Save Reviewed Candidate","type":"n8n-nodes-base.airtable","position":[5856,1568],"parameters":{"base":{"__rl":true,"mode":"id","value":"appN5gwc0tof1nc0Y"},"table":{"__rl":true,"mode":"list","value":"tblTYVUhoy9QKNnmT","cachedResultUrl":"https://airtable.com/appN5gwc0tof1nc0Y/tblTYVUhoy9QKNnmT","cachedResultName":"Candidates"},"columns":{"value":{"skills":"={{ $json.skills.join(', ') }}","status":"Shortlisted","languages":"={{ $json.languages.join(', ') }}","match_score":"={{ $json.matchScore }}","availability":"={{ $json.availability }}","linkedin_url":"={{ $json.linkedin_url }}","contact_email":"={{ $json.contact_email }}","contact_phone":"={{ $json.contact_phone }}","candidate_name":"={{ $json.candidate_name }}","highest_degree":"={{ $json.highest_degree }}","contact_address":"={{ $json.contact_address }}","current_job_title":"={{ $json.current_job_title }}","years_of_experience":"={{ $json.years_of_experience }}","current_company_name":"={{ $json.current_company_name }}","current_employment_start_date":"={{ $json.current_employment_start_date }}","highest_education_institution":"={{ $json.highest_education_institution }}"},"schema":[],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{"typecast":true},"operation":"create"},"credentials":{"airtableTokenApi":{"id":"kZl4JOjQ6h36eu3R","name":"Airtable Personal Access Token account 2"}},"typeVersion":2.1},{"id":"e9ffc87f-0677-44b5-8b55-a4184a1b70b8","name":"Slack: Notify For Review","type":"n8n-nodes-base.httpRequest","position":[6080,1568],"parameters":{"url":"https://hooks.slack.com/services/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","method":"POST","options":{},"jsonBody":"={\n  \"text\": \"👀 *Review Needed* — New Candidate!\",\n  \"blocks\": [\n    {\n      \"type\": \"section\",\n      \"fields\": [\n        { \"type\": \"mrkdwn\", \"text\": \"*Name:*\\n{{ $('Score CV vs Job Description ').item.json.candidate_name }}\" },\n        { \"type\": \"mrkdwn\", \"text\": \"*Score:*\\n{{ $('Score CV vs Job Description ').item.json.matchScore }}%\" },\n        { \"type\": \"mrkdwn\", \"text\": \"*Title:*\\n{{ $('Score CV vs Job Description ').item.json.current_job_title }}\" },\n        { \"type\": \"mrkdwn\", \"text\": \"*Company:*\\n{{ $('Score CV vs Job Description ').item.json.current_company_name }}\" },\n        { \"type\": \"mrkdwn\", \"text\": \"*Email:*\\n{{ $('Score CV vs Job Description ').item.json.contact_email }}\" },\n        { \"type\": \"mrkdwn\", \"text\": \"*Matched Job:*\\n{{ $('Score CV vs Job Description ').item.json.jobTitle }}\" }\n      ]\n    }\n  ]\n}","sendBody":true,"specifyBody":"json"},"typeVersion":4.3},{"id":"e8e35dcf-a86d-479d-84d9-8cbabc8d1801","name":"Slack: Notify For Review1","type":"n8n-nodes-base.httpRequest","position":[6080,1760],"parameters":{"url":"https://hooks.slack.com/services/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","method":"POST","options":{},"jsonBody":"={\n  \"text\": \"🚀 *New Candidate Match: Easybits.tech*\\n*Name:* {{ $node['Score CV vs Job Description '].json.name }}\\n*Score:* {{ $node['Score CV vs Job Description '].json.match_score }}%\\n*Role:* {{ $node['Airtable - Fetch Open Job'].json.job_title }}\\n*Matched:* {{ $node['Score CV vs Job Description '].json.details }}\\n*LinkedIn:* {{ $node['Score CV vs Job Description '].json.linkedin }}\"\n}","sendBody":true,"specifyBody":"json"},"typeVersion":4.3},{"id":"00384117-dbd3-44df-8db5-aec96644c251","name":"Airtable: Save Review Candidate","type":"n8n-nodes-base.airtable","position":[5856,1760],"parameters":{"base":{"__rl":true,"mode":"id","value":"appN5gwc0tof1nc0Y"},"table":{"__rl":true,"mode":"list","value":"tblTYVUhoy9QKNnmT","cachedResultUrl":"https://airtable.com/appN5gwc0tof1nc0Y/tblTYVUhoy9QKNnmT","cachedResultName":"Candidates"},"columns":{"value":{"skills":"={{ $json.skills.join(', ') }}","status":"In Review","languages":"={{ $json.languages.join(', ') }}","match_score":"={{ $json.matchScore }}","availability":"={{ $json.availability }}","linkedin_url":"={{ $json.linkedin_url }}","contact_email":"={{ $json.contact_email }}","contact_phone":"={{ $json.contact_phone }}","candidate_name":"={{ $json.candidate_name }}","highest_degree":"={{ $json.highest_degree }}","contact_address":"={{ $json.contact_address }}","current_job_title":"={{ $json.current_job_title }}","years_of_experience":"={{ $json.years_of_experience }}","current_company_name":"={{ $json.current_company_name }}","current_employment_start_date":"={{ $json.current_employment_start_date }}","highest_education_institution":"={{ $json.highest_education_institution }}"},"schema":[],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{"typecast":true},"operation":"create"},"credentials":{"airtableTokenApi":{"id":"kZl4JOjQ6h36eu3R","name":"Airtable Personal Access Token account 2"}},"typeVersion":2.1}],"active":true,"pinData":{},"settings":{"availableInMCP":false,"executionOrder":"v1"},"versionId":"ccaf6584-bb29-4051-ae84-79f28761c385","connections":{"Route by Score ":{"main":[[{"node":"Airtable: Save Reviewed Candidate","type":"main","index":0}],[{"node":"Airtable: Save Review Candidate","type":"main","index":0}]]},"Prepare PDF Payload":{"main":[[{"node":"easybits: Extract CV Data","type":"main","index":0}]]},"Convert PDF to Base64":{"main":[[{"node":"Prepare PDF Payload","type":"main","index":0}]]},"Gmail: Watch CV Emails":{"main":[[{"node":"Download Email & Attachment","type":"main","index":0}]]},"Airtable - Fetch Open Job":{"main":[[{"node":"Score CV vs Job Description ","type":"main","index":0}]]},"easybits: Extract CV Data":{"main":[[{"node":"Airtable - Fetch Open Job","type":"main","index":0}]]},"Download Email & Attachment":{"main":[[{"node":"Convert PDF to Base64","type":"main","index":0}]]},"Score CV vs Job Description ":{"main":[[{"node":"Route by Score ","type":"main","index":0}]]},"Airtable: Save Review Candidate":{"main":[[{"node":"Slack: Notify For Review1","type":"main","index":0}]]},"Airtable: Save Reviewed Candidate":{"main":[[{"node":"Slack: Notify For Review","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":20,"nodeTypes":{"n8n-nodes-base.if":{"count":1},"n8n-nodes-base.code":{"count":2},"n8n-nodes-base.airtable":{"count":3},"n8n-nodes-base.stickyNote":{"count":8},"n8n-nodes-base.httpRequest":{"count":5},"n8n-nodes-base.gmailTrigger":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Terence Hielscher","username":"terence-easybits","bio":"","verified":false,"links":[],"avatar":"https://gravatar.com/avatar/ebee7d0c82eb4132ea938aba046c4a21f525ecde50550287a6523679a884f0e4?r=pg&d=retro&size=200"},"nodes":[{"id":2,"icon":"file:airtable.svg","name":"n8n-nodes-base.airtable","codex":{"data":{"resources":{"generic":[{"url":"https://n8n.io/blog/2021-goals-level-up-your-vocabulary-with-vonage-and-n8n/","icon":"🎯","label":"2021 Goals: Level Up Your Vocabulary With Vonage and n8n"},{"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/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/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/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"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/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/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/sending-sms-the-low-code-way-with-airtable-twilio-programmable-sms-and-n8n/","icon":"📱","label":"Sending SMS the Low-Code Way with Airtable, Twilio Programmable SMS, and n8n"},{"url":"https://n8n.io/blog/automating-conference-organization-processes-with-n8n/","icon":"🙋‍♀️","label":"Automating Conference Organization Processes with n8n"},{"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/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/app-nodes/n8n-nodes-base.airtable/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/airtable/"}]},"categories":["Data & Storage"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\"]","defaults":{"name":"Airtable"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMDAgMTcwIj48cGF0aCBmaWxsPSIjZmNiNDAwIiBkPSJNODkgNC44IDE2LjIgMzQuOWMtNC4xIDEuNy00IDcuNC4xIDkuMWw3My4yIDI5YzYuNCAyLjYgMTMuNiAyLjYgMjAgMGw3My4yLTI5YzQuMS0xLjYgNC4xLTcuNC4xLTkuMWwtNzMtMzAuMUMxMDMuMiAyIDk1LjcgMiA4OSA0LjgiLz48cGF0aCBmaWxsPSIjMThiZmZmIiBkPSJNMTA1LjkgODguOXY3Mi41YzAgMy40IDMuNSA1LjggNi43IDQuNWw4MS42LTMxLjdjMS45LS43IDMuMS0yLjUgMy4xLTQuNVY1Ny4yYzAtMy40LTMuNS01LjgtNi43LTQuNUwxMDkgODQuM2MtMS45LjgtMy4xIDIuNi0zLjEgNC42Ii8+PHBhdGggZmlsbD0iI2Y4MmI2MCIgZD0ibTg2LjkgOTIuNi0yNC4yIDExLjctMi41IDEuMkw5LjEgMTMwYy0zLjIgMS42LTcuNC0uOC03LjQtNC40VjU3LjVjMC0xLjMuNy0yLjQgMS42LTMuM3EuNi0uNiAxLjItLjljMS4yLS43IDMtLjkgNC40LS4zbDc3LjUgMzAuN2M0IDEuNSA0LjMgNy4xLjUgOC45Ii8+PHBhdGggZmlsbD0iI2JhMWU0NSIgZD0ibTg2LjkgOTIuNi0yNC4yIDExLjctNTkuNC01MHEuNi0uNiAxLjItLjljMS4yLS43IDMtLjkgNC40LS4zbDc3LjUgMzAuN2M0IDEuNCA0LjMgNyAuNSA4LjgiLz48L3N2Zz4="},"displayName":"Airtable","typeVersion":2,"nodeCategories":[{"id":3,"name":"Data & Storage"}]},{"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":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":824,"icon":"file:gmail.svg","name":"n8n-nodes-base.gmailTrigger","codex":{"data":{"resources":{"generic":[{"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/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"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-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/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/using-automation-to-boost-productivity-in-the-workplace/","icon":"💪","label":"Using Automation to Boost Productivity in the Workplace"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.gmailtrigger/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Communication"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\"]","defaults":{"name":"Gmail Trigger"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMTkzIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZmlsbD0iIzQyODVGNCIgZD0iTTU4LjE4MiAxOTIuMDVWOTMuMTRMMjcuNTA3IDY1LjA3NyAwIDQ5LjUwNHYxMjUuMDkxYzAgOS42NTggNy44MjUgMTcuNDU1IDE3LjQ1NSAxNy40NTV6Ii8+PHBhdGggZmlsbD0iIzM0QTg1MyIgZD0iTTE5Ny44MTggMTkyLjA1aDQwLjcyN2M5LjY1OSAwIDE3LjQ1NS03LjgyNiAxNy40NTUtMTcuNDU1VjQ5LjUwNWwtMzEuMTU2IDE3LjgzNy0yNy4wMjYgMjUuNzk4eiIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im01OC4xODIgOTMuMTQtNC4xNzQtMzguNjQ3IDQuMTc0LTM2Ljk4OUwxMjggNjkuODY4bDY5LjgxOC01Mi4zNjQgNC42NyAzNC45OTItNC42NyA0MC42NDRMMTI4IDE0NS41MDR6Ii8+PHBhdGggZmlsbD0iI0ZCQkMwNCIgZD0iTTE5Ny44MTggMTcuNTA0VjkzLjE0TDI1NiA0OS41MDRWMjYuMjMxYzAtMjEuNTg1LTI0LjY0LTMzLjg5LTQxLjg5LTIwLjk0NXoiLz48cGF0aCBmaWxsPSIjQzUyMjFGIiBkPSJtMCA0OS41MDQgMjYuNzU5IDIwLjA3TDU4LjE4MiA5My4xNFYxNy41MDRMNDEuODkgNS4yODZDMjQuNjEtNy42NiAwIDQuNjQ2IDAgMjYuMjN6Ii8+PC9zdmc+"},"displayName":"Gmail Trigger","typeVersion":1,"nodeCategories":[{"id":6,"name":"Communication"}]},{"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"}]}],"categories":[{"id":17,"name":"HR"},{"id":49,"name":"AI Summarization"}],"image":[]}}