This workflow corresponds to n8n.io template #7567 — we link there as the canonical source.
This workflow follows the Agent → Airtable recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "WORKFLOW_ID_PLACEHOLDER",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "13 - SmartScore Enrichment Engine",
"tags": [],
"nodes": [
{
"id": "sticky-note-1",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-100,
100
],
"parameters": {
"color": 4,
"width": 220,
"height": 740,
"content": "## \ud83d\udcdb Filter Non-Business Emails\nFilters out Gmail-based or personal emails.\n\nAllows only leads with non gmail.com (business) domains to proceed for enrichment."
},
"typeVersion": 1
},
{
"id": "sticky-note-2",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
140,
-40
],
"parameters": {
"color": 6,
"width": 540,
"height": 880,
"content": "## \ud83d\udcac LLM (OpenAI / Claude)\nSupplies the GPT-4o-mini model to the downstream agent node.\n\n## \ud83c\udfe2 Enrich Company Info (AI)\nAI agent enriches company data using domain:\n\nFields returned: company_name, industry, headquarters, employee_count, website, linkedin, description.\n\n## \ud83e\ude84 Merge Enriched Lead Profile\nMerges formatted lead + enriched company data.\n\nAdds metadata: enrichment timestamp & workflow ID.\n\nEnsures consistent field structure for scoring and downstream nodes."
},
"typeVersion": 1
},
{
"id": "openai-chat-model-scorer",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
844,
660
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "typeform-trigger",
"name": "\ud83d\udcdd New Typeform Lead",
"type": "n8n-nodes-base.typeformTrigger",
"position": [
-500,
440
],
"parameters": {
"formId": "YOUR_TYPEFORM_ID"
},
"credentials": {
"typeformApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "format-incoming-data",
"name": "\ud83d\udd27 Format Incoming Data",
"type": "n8n-nodes-base.code",
"position": [
-280,
440
],
"parameters": {
"jsCode": "let input = items[0].json;\nlet output = {};\n\n// Utility: Extract domain from email\nfunction extractDomain(email) {\n return typeof email === 'string' && email.includes('@')\n ? email.split('@')[1].toLowerCase()\n : null;\n}\n\n// Case 1: Direct object (Typeform-style)\nif (input?.Name && input?.Email) {\n output = {\n name: input[\"Name\"] || null,\n email: input[\"Email\"] || null,\n phone: input[\"Phone Number\"] || null,\n message: input[\"Message\"] || null,\n domain: extractDomain(input[\"Email\"]),\n source: \"Typeform\"\n };\n}\n\n// Case 2: Array of one object (Typeform-style)\nelse if (Array.isArray(input) && input[0]?.Name && input[0]?.Email) {\n const data = input[0];\n output = {\n name: data[\"Name\"] || null,\n email: data[\"Email\"] || null,\n phone: data[\"Phone Number\"] || null,\n message: data[\"Message\"] || null,\n domain: extractDomain(data[\"Email\"]),\n source: \"Typeform\"\n };\n}\n\n// Case 3: Calendly payload\nelse if (input?.event === \"invitee.created\" && input?.payload) {\n const payload = input.payload;\n const email = payload.email || null;\n output = {\n name: payload.name || `${payload.first_name || \"\"} ${payload.last_name || \"\"}`.trim(),\n email: email,\n phone: payload.text_reminder_number || null,\n message: payload.questions_and_answers?.[0]?.answer || null,\n domain: extractDomain(email),\n source: \"Calendly\"\n };\n}\n\n// Else: unsupported\nelse {\n output = {\n error: \"Unsupported input format\",\n inputType: typeof input,\n preview: JSON.stringify(input)\n };\n}\n\nreturn [{ json: output }];"
},
"typeVersion": 2
},
{
"id": "airtable-store",
"name": "\ud83d\udce6 Store Basic Info (Airtable)",
"type": "n8n-nodes-base.airtable",
"position": [
-280,
640
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "YOUR_AIRTABLE_BASE_ID",
"cachedResultUrl": "https://airtable.com/YOUR_AIRTABLE_BASE_ID",
"cachedResultName": "Your Base Name"
},
"table": {
"__rl": true,
"mode": "list",
"value": "YOUR_AIRTABLE_TABLE_ID",
"cachedResultUrl": "https://airtable.com/YOUR_AIRTABLE_BASE_ID/YOUR_AIRTABLE_TABLE_ID",
"cachedResultName": "Table 1"
},
"columns": {
"value": {
"Name": "={{ $json.Name }}",
"Email": "={{ $json.Email }}",
"Message": "={{ $json.Message }}",
"Phone Number": "={{ $json[\"Phone Number\"] }}"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "id",
"defaultMatch": true
},
{
"id": "Name",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Phone Number",
"type": "number",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Phone Number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Message",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Message",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Email"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "upsert",
"authentication": "airtableOAuth2Api"
},
"credentials": {
"airtableOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "filter-non-business-emails",
"name": "\ud83d\udcdb Filter Non-Business Emails",
"type": "n8n-nodes-base.if",
"position": [
-60,
440
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "filter-condition-1",
"operator": {
"type": "string",
"operation": "notEquals"
},
"leftValue": "={{ $json.domain }}",
"rightValue": "gmail.com"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "enrich-company-info",
"name": "\ud83c\udfe2 Enrich Company Info (AI)",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
160,
440
],
"parameters": {
"text": "=You are a company research assistant. I will give you a domain name.\n\nHere's the domain: {{ $json.domain }}\n\nYour task is to return a JSON object with the following details about the company:\n\ncompany_name: Full name of the company\n\nindustry: The primary industry the company belongs to\n\nheadquarters: City and country of the company headquarters\n\nemployee_count: Approximate number of employees (numeric or range)\n\nwebsite: Official website URL\n\nlinkedin: LinkedIn profile link (if available)\n\ndescription: 1-2 sentence summary of the company and what it does\n\nOnly use verified, credible information. Respond only in JSON. ",
"options": {},
"promptType": "define"
},
"typeVersion": 2
},
{
"id": "merge-enriched-profile",
"name": "\ud83e\ude84 Merge Enriched Lead Profile",
"type": "n8n-nodes-base.code",
"position": [
536,
440
],
"parameters": {
"jsCode": "// Access data from previous nodes using correct n8n syntax\n// Replace \"If\" and \"AI Agent\" with your actual node names\n\n// Method 1: Try accessing by node name (replace with your actual node names)\nlet leadData = {};\nlet aiEnrichment = {};\n\ntry {\n // Try to get data from IF node - replace \"If\" with your actual node name\n const ifNodeData = $node[\"\ud83d\udcdb Filter Non-Business Emails\"].json;\n if (Array.isArray(ifNodeData)) {\n leadData = ifNodeData[0];\n } else {\n leadData = ifNodeData;\n }\n console.log('Lead data from If node:', leadData);\n} catch (error) {\n console.log('Could not access If node:', error.message);\n}\n\ntry {\n // Try to get data from AI Agent node - replace \"AI Agent\" with your actual node name \n const aiNodeData = $node[\"\ud83c\udfe2 Enrich Company Info (AI)\"].json;\n let aiOutput = '';\n \n if (Array.isArray(aiNodeData)) {\n aiOutput = aiNodeData[0].output || aiNodeData[0];\n } else {\n aiOutput = aiNodeData.output || aiNodeData;\n }\n \n console.log('AI output:', aiOutput);\n \n // Parse AI output if it's in JSON format\n if (typeof aiOutput === 'string') {\n const jsonMatch = aiOutput.match(/```json\\n([\\s\\S]*?)\\n```/);\n if (jsonMatch && jsonMatch[1]) {\n aiEnrichment = JSON.parse(jsonMatch[1]);\n } else {\n try {\n aiEnrichment = JSON.parse(aiOutput);\n } catch (parseError) {\n aiEnrichment = { raw_output: aiOutput };\n }\n }\n } else {\n aiEnrichment = aiOutput;\n }\n \n console.log('Parsed AI enrichment:', aiEnrichment);\n} catch (error) {\n console.log('Could not access AI Agent node:', error.message);\n aiEnrichment = { error: 'Could not access AI data' };\n}\n\n// Combine the data (no duplication)\nconst enrichedLead = {\n // Original lead data\n name: leadData.name || '',\n email: leadData.email || '',\n phone: leadData.phone || '',\n message: leadData.message || '',\n domain: leadData.domain || '',\n source: leadData.source || '',\n \n // AI enrichment data\n company_name: aiEnrichment.company_name || 'Unknown',\n industry: aiEnrichment.industry || 'Unknown',\n headquarters: aiEnrichment.headquarters || '',\n employee_count: aiEnrichment.employee_count || '',\n website: aiEnrichment.website || '',\n linkedin: aiEnrichment.linkedin || '',\n company_description: aiEnrichment.description || '',\n \n // Metadata\n enriched_at: new Date().toISOString(),\n workflow_id: $workflow.id\n};\n\nconsole.log('Final enriched lead:', enrichedLead);\n\nreturn { json: enrichedLead };"
},
"typeVersion": 2
},
{
"id": "ai-lead-scorer",
"name": "\ud83c\udfaf AI Lead Scorer",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
756,
440
],
"parameters": {
"text": "=You are an AI sales analyst. Based on the enriched contact and company profile below, give a lead score from 1 to 10 (10 being highest potential to convert to a valuable customer).\n\nConsider factors like company size, industry relevance, contact source, domain reputation, and any relevant company metadata.\n\nLead Details:\n\nName: {{ $json.name }}\n\nEmail: {{ $json.email }}\n\nMessage: {{ $json.message }}\n\nCompany Info: {{ $json.company_description }}\n\nCompany Name: {{ $json.company_name }}\n\nWebsite: {{ $json.website }}\n\nIndustry: {{ $json.industry }}\n\nHeadquarters: {{ $json.headquarters }}\n\nEmployee Count: {{ $json.employee_count }}\n\nLinkedIn: {{ $json.linkedin }}\n\nDescription: {{ $json.company_description }}\n\nand i don't need anything except the output\n\nexample:\n7",
"options": {},
"promptType": "define"
},
"typeVersion": 2
},
{
"id": "hubspot-crm",
"name": "\ud83d\udce8 Send to HubSpot CRM",
"type": "n8n-nodes-base.hubspot",
"position": [
1132,
440
],
"parameters": {
"email": "={{ $('\ud83e\ude84 Merge Enriched Lead Profile').item.json.email }}",
"options": {},
"authentication": "appToken",
"additionalFields": {
"country": "={{ $('\ud83e\ude84 Merge Enriched Lead Profile').item.json.headquarters }}",
"message": "={{ $('\ud83e\ude84 Merge Enriched Lead Profile').item.json.message }}",
"industry": "={{ $('\ud83e\ude84 Merge Enriched Lead Profile').item.json.industry }}",
"firstName": "={{ $('\ud83e\ude84 Merge Enriched Lead Profile').item.json.name }}",
"websiteUrl": "={{ $('\ud83e\ude84 Merge Enriched Lead Profile').item.json.website }}",
"companyName": "={{ $('\ud83e\ude84 Merge Enriched Lead Profile').item.json.company_name }}",
"phoneNumber": "={{ $('\ud83e\ude84 Merge Enriched Lead Profile').item.json.phone }}",
"customPropertiesUi": {
"customPropertiesValues": [
{
"value": "={{ $('\ud83e\ude84 Merge Enriched Lead Profile').item.json.linkedin }}",
"property": "company_s_linkedin"
},
{
"value": "={{ $('\ud83e\ude84 Merge Enriched Lead Profile').item.json.company_description }}",
"property": "company_descreption"
},
{
"value": "={{ $json.output }}",
"property": "lead_score"
}
]
}
}
},
"credentials": {
"hubspotAppToken": {
"name": "<your credential>"
}
},
"typeVersion": 2.1,
"alwaysOutputData": false
},
{
"id": "google-sheets-enriched",
"name": "\ud83d\udcca Save Enriched Lead",
"type": "n8n-nodes-base.googleSheets",
"position": [
1352,
440
],
"parameters": {
"columns": {
"value": {
"Name": "={{ $('\ud83e\ude84 Merge Enriched Lead Profile').item.json.name }}",
"Email": "={{ $('\ud83e\ude84 Merge Enriched Lead Profile').item.json.email }}",
"Score": "={{ $('\ud83c\udfaf AI Lead Scorer').item.json.output }}",
"Message": "={{ $('\ud83e\ude84 Merge Enriched Lead Profile').item.json.message }}",
"Website": "={{ $('\ud83e\ude84 Merge Enriched Lead Profile').item.json.website }}",
"Industry": "={{ $('\ud83e\ude84 Merge Enriched Lead Profile').item.json.industry }}",
"LinkedIn": "={{ $('\ud83e\ude84 Merge Enriched Lead Profile').item.json.linkedin }}",
"Description": "={{ $('\ud83e\ude84 Merge Enriched Lead Profile').item.json.company_description }}",
"Headquaters": "={{ $('\ud83e\ude84 Merge Enriched Lead Profile').item.json.headquarters }}",
"Company Name": "={{ $('\ud83e\ude84 Merge Enriched Lead Profile').item.json.company_name }}",
"Company Size": "={{ $('\ud83e\ude84 Merge Enriched Lead Profile').item.json.employee_count }}"
},
"schema": [
{
"id": "Company Name",
"type": "string",
"display": true,
"required": false,
"displayName": "Company Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Industry",
"type": "string",
"display": true,
"required": false,
"displayName": "Industry",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Description",
"type": "string",
"display": true,
"required": false,
"displayName": "Description",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Size",
"type": "string",
"display": true,
"required": false,
"displayName": "Company Size",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Headquaters",
"type": "string",
"display": true,
"required": false,
"displayName": "Headquaters",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Website",
"type": "string",
"display": true,
"required": false,
"displayName": "Website",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Message",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Message",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "LinkedIn",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "LinkedIn",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Score",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Score",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Email"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID_1/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "YOUR_GOOGLE_SHEET_ID_1",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID_1/edit",
"cachedResultName": "Company's Data Sheet"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4
},
{
"id": "google-sheets-raw",
"name": "\ud83d\udcc4 Log Raw Lead",
"type": "n8n-nodes-base.googleSheets",
"position": [
-280,
240
],
"parameters": {
"columns": {
"value": {
"Name": "={{ $json.Name }}",
"Email": "={{ $json.Email }}",
"Message": "={{ $json.Message }}",
"Phone Number": "={{ $json[\"Phone Number\"] }}"
},
"schema": [
{
"id": "Name",
"type": "string",
"display": true,
"required": false,
"displayName": "Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Phone Number",
"type": "string",
"display": true,
"required": false,
"displayName": "Phone Number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Message",
"type": "string",
"display": true,
"required": false,
"displayName": "Message",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Email"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID_2/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "YOUR_GOOGLE_SHEET_ID_2",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID_2/edit",
"cachedResultName": "Raw Data Sheet"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4
},
{
"id": "sticky-note-3",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-680,
-120
],
"parameters": {
"width": 560,
"height": 960,
"content": "**Triggered on new Typeform submission. Captures: Name, Email, Phone, Message.**\n\n## \ud83d\udd27 Format Incoming Data\nCleans data from Typeform. Extracts key fields, tags source, checks if email is business.\n\n## \ud83d\udcc4 Log Raw Lead\nSaves raw lead data to Google Sheet for backup.\n\n## \ud83d\udce6 Store Basic Info (Airtable)\nUpserts lead into Airtable by Email to prevent duplicates."
},
"typeVersion": 1
},
{
"id": "openai-chat-model-enricher",
"name": "\ud83d\udcac LLM (OpenAI)",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
240,
660
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "sticky-note-4",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
720,
-120
],
"parameters": {
"color": 3,
"width": 560,
"height": 960,
"content": "## \ud83c\udfaf AI Lead Scorer\n\nEvaluates lead quality based on:\n\nCompany metadata\nIndustry fit\nContact source\nDomain type\n\nReturns a lead score (1\u201310).\n\n## \ud83d\udce8 Send to HubSpot CRM\n\nCreates or updates a contact in HubSpot.\n\nSends:\n\nName, Email, Phone, Website\nCompany Description, LinkedIn, Country, Industry\nCustom Properties:\nlead_score\ncompany_s_linkedin\ncompany_descreption"
},
"typeVersion": 1
},
{
"id": "sticky-note-5",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1300,
-120
],
"parameters": {
"color": 5,
"height": 960,
"content": "## \ud83d\udcca Save Enriched Lead\n\nLogs fully enriched and scored lead into Sheet of:\n\nCompany's Google Spreadsheet.\n\nColumns:\n\nContact Info: Name, Email, Phone, Message\n\nCompany Info: Name, Industry, Size, Website, HQ, LinkedIn\n\nLead Score"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "WORKFLOW_VERSION_ID",
"connections": {
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "\ud83c\udfaf AI Lead Scorer",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"\ud83d\udcac LLM (OpenAI)": {
"ai_languageModel": [
[
{
"node": "\ud83c\udfe2 Enrich Company Info (AI)",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"\ud83c\udfaf AI Lead Scorer": {
"main": [
[
{
"node": "\ud83d\udce8 Send to HubSpot CRM",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udcdd New Typeform Lead": {
"main": [
[
{
"node": "\ud83d\udcc4 Log Raw Lead",
"type": "main",
"index": 0
},
{
"node": "\ud83d\udce6 Store Basic Info (Airtable)",
"type": "main",
"index": 0
},
{
"node": "\ud83d\udd27 Format Incoming Data",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udce8 Send to HubSpot CRM": {
"main": [
[
{
"node": "\ud83d\udcca Save Enriched Lead",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udd27 Format Incoming Data": {
"main": [
[
{
"node": "\ud83d\udcdb Filter Non-Business Emails",
"type": "main",
"index": 0
}
]
]
},
"\ud83c\udfe2 Enrich Company Info (AI)": {
"main": [
[
{
"node": "\ud83e\ude84 Merge Enriched Lead Profile",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udcdb Filter Non-Business Emails": {
"main": [
[
{
"node": "\ud83c\udfe2 Enrich Company Info (AI)",
"type": "main",
"index": 0
}
]
]
},
"\ud83e\ude84 Merge Enriched Lead Profile": {
"main": [
[
{
"node": "\ud83c\udfaf AI Lead Scorer",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
airtableOAuth2ApigoogleSheetsOAuth2ApihubspotAppTokenopenAiApitypeformApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow starts whenever a new lead is submitted through Typeform. It cleans and stores the raw lead data, checks if the email is business-related (not Gmail), and then uses AI to enrich the lead with company details. After enrichment, the workflow scores the lead with AI,…
Source: https://n8n.io/workflows/7567/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Typeform IA - YT. Uses typeformTrigger, agent, lmChatOpenAi, toolWorkflow. Event-driven trigger; 75 nodes.
This template enables natural-language-driven automation using Bright Data's MCP tools, triggered directly by new leads in HubSpot. It dynamically extracts and executes the right tool based on lead co
Import company domains from a Google Sheet, automatically analyze their websites with AI, enrich them with firmographic data via Sona Enrich, and sync the results to HubSpot—so you can quickly discove
Streamline client onboarding and project setup from hours to minutes with AI-driven automation. This intelligent workflow eliminates manual coordination, builds proposals, creates projects in Asana, w
🧠 AI-Powered Lead Routing and Sales Team Distribution