This workflow corresponds to n8n.io template #5428 — we link there as the canonical source.
This workflow follows the Airtable → Form Trigger 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": "gFQYkoSGHEW9QiCU",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "AI Agent Leads Processor",
"tags": [],
"nodes": [
{
"id": "5d431bce-7614-4890-a72a-625d7565c89b",
"name": "On form submission",
"type": "n8n-nodes-base.formTrigger",
"position": [
-120,
-220
],
"parameters": {
"options": {
"appendAttribution": false
},
"formTitle": "Property Form",
"formFields": {
"values": [
{
"fieldLabel": "Full Name",
"requiredField": true
},
{
"fieldLabel": "Email",
"requiredField": true
},
{
"fieldLabel": "Budget Range",
"requiredField": true
},
{
"fieldLabel": "Preferred Location",
"requiredField": true
},
{
"fieldLabel": "Purchase Timeline",
"requiredField": true
},
{
"fieldLabel": "Property Type",
"requiredField": true
}
]
},
"formDescription": "Fill the form to buy!"
},
"typeVersion": 2.2
},
{
"id": "f69f0530-4554-4911-99bb-85d9cabd512c",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-120,
0
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "1ef89976-db25-463c-83e1-5849aefd27e8",
"name": "Information Extractor",
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"position": [
100,
-220
],
"parameters": {
"text": "=You are a real estate assistant. Based on the input, classify the lead quality, extract structured info, and give a lead score (0-100).\n\nInput:\nName: {{ $json['Full Name'] }}\nEmail: {{ $json.Email }}\nBudget: {{ $json['Budget Range'] }}\nLocation: {{ $json['Preferred Location'] }}\nTimeline: {{ $json['Purchase Timeline'] }}\nProperty Type: {{ $json['Property Type'] }}\n\nInstructions:\n- Parse the budget into numeric range\n- Estimate urgency from timeline\n- Score lead (0-100) based on high budget, urgency, and location being Sydney\n- Return JSON like:\n{\n \"name\": \"...\",\n \"email\": \"...\",\n \"budget_min\": ...,\n \"budget_max\": ...,\n \"location\": \"...\",\n \"timeline\": \"...\",\n \"urgency\": \"high | medium | low\",\n \"score\": ...,\n \"qualified\":",
"options": {},
"schemaType": "fromJson",
"jsonSchemaExample": "{\n \"name\": \"\",\n \"email\": \"\",\n \"budget_min\": \"\",\n \"budget_max\": \"\",\n \"location\": \"\",\n \"timeline\": \"\",\n \"urgency\": \"high | medium | low\",\n \"score\": \"\"\n}"
},
"typeVersion": 1
},
{
"id": "384abf4b-6f25-451d-b0ee-b6089a2a7251",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
696,
-220
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "79c024d4-0727-4b53-bc8a-d87502b4cefd",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $json.qualified }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2,
"alwaysOutputData": true
},
{
"id": "45c42d95-ffe3-4aae-b4ff-77bfaf83bd32",
"name": "Edit Fields",
"type": "n8n-nodes-base.set",
"position": [
476,
-220
],
"parameters": {
"options": {
"ignoreConversionErrors": true
},
"assignments": {
"assignments": [
{
"id": "c199e2d3-6202-4db7-8912-be72a411b484",
"name": "qualified",
"type": "boolean",
"value": "={{ $json[\"output\"][\"score\"] >= 70 }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "745a47a0-47ae-40e1-988c-dc2d6493ba88",
"name": "Gmail",
"type": "n8n-nodes-base.gmail",
"position": [
1000,
-460
],
"parameters": {
"sendTo": "email",
"message": "=Name: {{ $('Information Extractor').item.json.output.name }}\nEmail: {{ $('Information Extractor').item.json.output.email }}\nLocation: {{ $('Information Extractor').item.json.output.location }}\nBudget: {{ $('Information Extractor').item.json.output.budget_min }}\nTimeline: {{ $('Information Extractor').item.json.output.timeline }}\nScore: {{ $('Information Extractor').item.json.output.score }}",
"options": {},
"subject": "\ud83d\udd25 NEW QUALIFIED LEAD"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "938a489a-e785-40e9-9b2c-93503423ab4c",
"name": "Airtable",
"type": "n8n-nodes-base.airtable",
"position": [
1000,
60
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": ""
},
"table": {
"__rl": true,
"mode": "list",
"value": ""
},
"columns": {
"value": {
"Name": "={{ $('Information Extractor').item.json.output.name }}",
"Email": "={{ $('Information Extractor').item.json.output.email }}",
"Score": "={{ $('Information Extractor').item.json.output.score }}",
"budget": "={{ $('Information Extractor').item.json.output.budget_min }}",
"Location": "={{ $('Information Extractor').item.json.output.location }}",
"Timeline": "={{ $('Information Extractor').item.json.output.timeline }}"
},
"schema": [
{
"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": "budget",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "budget",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Location",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Location",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Timeline",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Timeline",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Score",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Score",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "bc72a77a-99ea-48d3-b5ea-11ed0d942cd3",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-192,
-280
],
"parameters": {
"width": 1100,
"height": 220,
"content": "## Flow"
},
"typeVersion": 1
},
{
"id": "4ae2ea9f-e369-4dad-9b4c-6be96d7bdeda",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-180,
-40
],
"parameters": {
"color": 3,
"width": 200,
"content": "## Engine"
},
"typeVersion": 1
},
{
"id": "6be7b903-9375-45a1-b678-b72a17769468",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
920,
0
],
"parameters": {
"color": 4,
"width": 260,
"height": 220,
"content": "## CRM"
},
"typeVersion": 1
},
{
"id": "f12e0a18-e41e-4b79-8449-795e8750a805",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
920,
-520
],
"parameters": {
"color": 5,
"width": 260,
"height": 220,
"content": "## Follow Up"
},
"typeVersion": 1
},
{
"id": "70cecac6-50ea-4046-bb53-20553ea87f7a",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-580,
-540
],
"parameters": {
"color": 7,
"width": 360,
"height": 760,
"content": "## AI Agent Leads Processor\n\n- **Problem** \nReal estate agents waste time on low-quality leads and slow follow-ups. \nThey manually qualify buyers, which leads to lost deals and burnout.\n\n- **Solution** \nAn AI-powered agent that automatically scores and filters leads, sends alerts for hot leads, and stores them in a CRM. \nAgents only focus on high-quality prospects.\n\n- **This AI Agent is for...** \nSolo real estate agents or small agencies handling 10\u201350 buyer inquiries per week \u2014 especially those using online forms.\n\n- **Scope** \n\u2713 Auto-lead intake from form \n\u2713 AI lead scoring & qualification \n\u2713 Email notification for qualified leads \n\u2713 CRM logging (Airtable) \n\u2717 No built-in WhatsApp reply (optional add-on) \n\u2717 No auto-scheduling (optional add-on)\n\n- **How to Set Up** \n1. Replace the form with your own (Typeform/Google Form/etc.) \n2. Link your OpenAI key and Gmail account \n3. Connect your Airtable base \n4. Activate the workflow \n5. Test by submitting a dummy lead\n"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "c06fd443-1b58-4f75-b58e-3f32bac9d023",
"connections": {
"If": {
"main": [
[
{
"node": "Airtable",
"type": "main",
"index": 0
},
{
"node": "Gmail",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Information Extractor",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"On form submission": {
"main": [
[
{
"node": "Information Extractor",
"type": "main",
"index": 0
}
]
]
},
"Information Extractor": {
"main": [
[
{
"node": "Edit Fields",
"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.
airtableTokenApigmailOAuth2openAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
🧠 How It Works This AI Agent automatically qualifies property buyer leads from form submissions. Form Submission Trigger When a user submits their details via a property inquiry form, the workflow is triggered. AI Lead Classification The buyer's input (budget, location,…
Source: https://n8n.io/workflows/5428/ — 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.
This workflow automates the complete process of generating and sending AI-powered newsletters. It starts with a form submission where the user provides a brand name, website, and topic query. The syst
[](https://www.youtube.com/watch?v=rfu4MSvtpAw)
This workflow is ideal for:
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.
This workflow is for digital marketing agencies or sales teams who want to automatically find business leads based on industry & location, gather their contact details, and send personalized cold emai