AutomationFlowsAI & RAG › AI Lead Qualification & Routing

AI Lead Qualification & Routing

AI Lead Qualification & Routing. Uses httpRequest, slack, airtable. Webhook trigger; 9 nodes.

Webhook trigger★★★★☆ complexity9 nodesHTTP RequestSlackAirtable
AI & RAG Trigger: Webhook Nodes: 9 Complexity: ★★★★☆ Added:

This workflow follows the Airtable → HTTP Request 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 →

Download .json
{
  "name": "AI Lead Qualification & Routing",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "lead-intake",
        "responseMode": "responseNode",
        "options": {}
      },
      "id": "webhook-trigger",
      "name": "Webhook - Lead Intake",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1,
      "position": [
        250,
        300
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "http://localhost:3000/api/leads/analyze",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "name",
              "value": "={{ $json.body.name }}"
            },
            {
              "name": "email",
              "value": "={{ $json.body.email }}"
            },
            {
              "name": "company",
              "value": "={{ $json.body.company }}"
            },
            {
              "name": "message",
              "value": "={{ $json.body.message }}"
            },
            {
              "name": "phone",
              "value": "={{ $json.body.phone }}"
            },
            {
              "name": "source",
              "value": "={{ $json.body.source || 'n8n' }}"
            },
            {
              "name": "job_title",
              "value": "={{ $json.body.job_title }}"
            }
          ]
        },
        "options": {
          "timeout": 30000
        }
      },
      "id": "http-analyze",
      "name": "AI Lead Analysis",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 3,
      "position": [
        480,
        300
      ]
    },
    {
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{ $json.analysis.category }}",
              "operation": "equals",
              "value2": "HOT"
            }
          ]
        }
      },
      "id": "if-hot",
      "name": "Is HOT Lead?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 1,
      "position": [
        720,
        300
      ]
    },
    {
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{ $json.analysis.category }}",
              "operation": "equals",
              "value2": "WARM"
            }
          ]
        }
      },
      "id": "if-warm",
      "name": "Is WARM Lead?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 1,
      "position": [
        720,
        520
      ]
    },
    {
      "parameters": {
        "channel": "#sales-alerts",
        "text": "\ud83d\udd25 *HOT LEAD ALERT* \u2014 Score: {{ $json.analysis.score }}/100\n\n*Name:* {{ $json.name || $node['AI Lead Analysis'].json.analysis.summary }}\n*Company:* {{ $json.company }}\n*Email:* {{ $json.email }}\n\n*AI Summary:*\n{{ $json.analysis.summary }}\n\n*Recommended Action:*\n{{ $json.analysis.recommended_action }}\n\n*Budget:* {{ $json.analysis.budget }} | *Urgency:* {{ $json.analysis.urgency }} | *Deal Size:* {{ $json.analysis.estimated_deal_size }}",
        "otherOptions": {}
      },
      "id": "slack-hot",
      "name": "Slack Alert (HOT)",
      "type": "n8n-nodes-base.slack",
      "typeVersion": 1,
      "position": [
        960,
        200
      ],
      "notes": "Send immediate Slack notification for HOT leads"
    },
    {
      "parameters": {
        "application": "YOUR_AIRTABLE_BASE_ID",
        "table": "Leads",
        "options": {},
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldName": "Name",
              "fieldValue": "={{ $json.name }}"
            },
            {
              "fieldName": "Email",
              "fieldValue": "={{ $json.email }}"
            },
            {
              "fieldName": "Company",
              "fieldValue": "={{ $json.company }}"
            },
            {
              "fieldName": "Score",
              "fieldValue": "={{ $json.analysis.score }}"
            },
            {
              "fieldName": "Category",
              "fieldValue": "={{ $json.analysis.category }}"
            },
            {
              "fieldName": "Intent",
              "fieldValue": "={{ $json.analysis.intent }}"
            },
            {
              "fieldName": "Budget",
              "fieldValue": "={{ $json.analysis.budget }}"
            },
            {
              "fieldName": "Urgency",
              "fieldValue": "={{ $json.analysis.urgency }}"
            },
            {
              "fieldName": "Summary",
              "fieldValue": "={{ $json.analysis.summary }}"
            },
            {
              "fieldName": "Source",
              "fieldValue": "={{ $json.source || 'n8n' }}"
            },
            {
              "fieldName": "Status",
              "fieldValue": "HOT - Immediate Action"
            }
          ]
        }
      },
      "id": "airtable-hot",
      "name": "CRM - HOT Lead",
      "type": "n8n-nodes-base.airtable",
      "typeVersion": 1,
      "position": [
        960,
        340
      ],
      "notes": "Push HOT lead to Airtable with priority tag"
    },
    {
      "parameters": {
        "application": "YOUR_AIRTABLE_BASE_ID",
        "table": "Leads",
        "options": {},
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldName": "Name",
              "fieldValue": "={{ $json.name }}"
            },
            {
              "fieldName": "Email",
              "fieldValue": "={{ $json.email }}"
            },
            {
              "fieldName": "Company",
              "fieldValue": "={{ $json.company }}"
            },
            {
              "fieldName": "Score",
              "fieldValue": "={{ $json.analysis.score }}"
            },
            {
              "fieldName": "Category",
              "fieldValue": "={{ $json.analysis.category }}"
            },
            {
              "fieldName": "Summary",
              "fieldValue": "={{ $json.analysis.summary }}"
            },
            {
              "fieldName": "Status",
              "fieldValue": "WARM - Nurture Sequence"
            }
          ]
        }
      },
      "id": "airtable-warm",
      "name": "CRM - WARM Lead",
      "type": "n8n-nodes-base.airtable",
      "typeVersion": 1,
      "position": [
        960,
        480
      ],
      "notes": "Push WARM lead to nurture pipeline"
    },
    {
      "parameters": {
        "application": "YOUR_AIRTABLE_BASE_ID",
        "table": "Leads",
        "options": {},
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldName": "Name",
              "fieldValue": "={{ $json.name }}"
            },
            {
              "fieldName": "Email",
              "fieldValue": "={{ $json.email }}"
            },
            {
              "fieldName": "Score",
              "fieldValue": "={{ $json.analysis.score }}"
            },
            {
              "fieldName": "Category",
              "fieldValue": "COLD"
            },
            {
              "fieldName": "Status",
              "fieldValue": "COLD - Archived"
            }
          ]
        }
      },
      "id": "airtable-cold",
      "name": "CRM - COLD Lead",
      "type": "n8n-nodes-base.airtable",
      "typeVersion": 1,
      "position": [
        960,
        640
      ],
      "notes": "Archive COLD leads"
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify({ success: true, message: 'Lead processed', lead_id: $json.lead_id, category: $json.analysis.category }) }}"
      },
      "id": "respond-webhook",
      "name": "Respond to Webhook",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1,
      "position": [
        1200,
        300
      ]
    }
  ],
  "connections": {
    "Webhook - Lead Intake": {
      "main": [
        [
          {
            "node": "AI Lead Analysis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Lead Analysis": {
      "main": [
        [
          {
            "node": "Is HOT Lead?",
            "type": "main",
            "index": 0
          },
          {
            "node": "Is WARM Lead?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is HOT Lead?": {
      "main": [
        [
          {
            "node": "Slack Alert (HOT)",
            "type": "main",
            "index": 0
          },
          {
            "node": "CRM - HOT Lead",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is WARM Lead?": {
      "main": [
        [
          {
            "node": "CRM - WARM Lead",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "CRM - COLD Lead",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Slack Alert (HOT)": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "CRM - HOT Lead": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "CRM - WARM Lead": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "CRM - COLD Lead": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "tags": [
    {
      "name": "lead-qualification"
    },
    {
      "name": "ai-agent"
    },
    {
      "name": "sales-automation"
    }
  ]
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

AI Lead Qualification & Routing. Uses httpRequest, slack, airtable. Webhook trigger; 9 nodes.

Source: https://github.com/Arsenic-23/ai-lead-qualification-agent/blob/69b33d56baae27fe0bc01573011cf465634dcf54/workflows/n8n-workflow.json — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

Automate candidate evaluation from CV submission to interview booking. Perfect for HR teams and recruiters.

Airtable, HTTP Request, Information Extractor +6
AI & RAG

This workflow listens for Aimfox webhooks when a LinkedIn connection request is accepted, notifies a Slack channel, creates and enriches a lead in Airtable using Apify scrapers for profile/company dat

Slack, OpenAI Chat, Airtable +4
AI & RAG

• Webhook receives lead form submissions from your website • AI Agent (GPT-4o) analyzes lead quality using intelligent scoring framework • Clearbit enriches company data automatically (employee count,

Agent, Execute Workflow Trigger, HTTP Request +6
AI & RAG

Onsite Photos to Jobs (SMS Agent). Uses dataTable, twilio, httpRequest, airtable. Webhook trigger; 62 nodes.

Data Table, Twilio, HTTP Request +1
AI & RAG

WF-OB-2: Post-Call Handler. Uses httpRequest, slack. Webhook trigger; 48 nodes.

HTTP Request, Slack