AutomationFlowsAI & RAG › Eastside Remodels - Lead Nurturing AI Agent

Eastside Remodels - Lead Nurturing AI Agent

Eastside Remodels - Lead Nurturing AI Agent. Uses openAi, googleCalendar, salesforce, emailSend. Webhook trigger; 13 nodes.

Webhook trigger★★★★☆ complexityAI-powered13 nodesOpenAIGoogle CalendarSalesforceEmail SendTwilioSlack
AI & RAG Trigger: Webhook Nodes: 13 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow follows the Emailsend → OpenAI 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": "Eastside Remodels - Lead Nurturing AI Agent",
  "nodes": [
    {
      "parameters": {
        "path": "/eastside-remodels-bot",
        "responseMode": "responseNode",
        "options": {
          "cors": {
            "allowedOrigins": "*"
          }
        }
      },
      "id": "webhook_trigger",
      "name": "Webhook Trigger",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1,
      "position": [
        250,
        300
      ]
    },
    {
      "parameters": {
        "model": "gpt-4",
        "messages": {
          "values": [
            {
              "role": "system",
              "content": "You are a helpful AI assistant for Eastside Remodels, a home remodeling company. Your role is to:\n1. Answer frequently asked questions about our services\n2. Qualify leads by asking relevant questions\n3. Schedule appointments when appropriate\n\nOur services include:\n- Kitchen remodeling\n- Bathroom renovations\n- Basement finishing\n- Room additions\n- Whole home renovations\n- Exterior remodeling\n\nBusiness hours: Monday-Friday 8AM-6PM, Saturday 9AM-4PM\n\nAlways be professional, friendly, and helpful. Collect the following information when qualifying leads:\n- Name\n- Phone number\n- Email\n- Project type\n- Timeline\n- Budget range\n- Property location"
            },
            {
              "role": "user",
              "content": "={{ $json.message }}"
            }
          ]
        },
        "options": {
          "temperature": 0.7,
          "maxTokens": 500
        }
      },
      "id": "openai_chat",
      "name": "OpenAI Chat",
      "type": "n8n-nodes-base.openAi",
      "typeVersion": 1,
      "position": [
        650,
        300
      ]
    },
    {
      "parameters": {
        "functionCode": "const message = items[0].json.message.toLowerCase();\nconst response = items[0].json.response;\n\n// Determine intent\nlet intent = 'general';\n\nif (message.includes('price') || message.includes('cost') || message.includes('budget')) {\n  intent = 'pricing';\n} else if (message.includes('schedule') || message.includes('appointment') || message.includes('book') || message.includes('meeting')) {\n  intent = 'scheduling';\n} else if (message.includes('timeline') || message.includes('how long') || message.includes('duration')) {\n  intent = 'timeline';\n} else if (message.includes('service') || message.includes('what do you')) {\n  intent = 'services';\n} else if (message.includes('contact') || message.includes('phone') || message.includes('email')) {\n  intent = 'contact';\n}\n\n// Extract lead information if present\nconst emailRegex = /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}/;\nconst phoneRegex = /\\b\\d{3}[-.]?\\d{3}[-.]?\\d{4}\\b/;\n\nconst extractedData = {\n  intent: intent,\n  email: message.match(emailRegex)?.[0] || null,\n  phone: message.match(phoneRegex)?.[0] || null,\n  message: message,\n  response: response,\n  timestamp: new Date().toISOString(),\n  leadScore: 0\n};\n\n// Calculate lead score\nif (extractedData.email) extractedData.leadScore += 20;\nif (extractedData.phone) extractedData.leadScore += 20;\nif (intent === 'scheduling') extractedData.leadScore += 30;\nif (intent === 'pricing') extractedData.leadScore += 15;\nif (message.includes('urgent') || message.includes('asap')) extractedData.leadScore += 15;\n\nreturn [extractedData];"
      },
      "id": "intent_classifier",
      "name": "Intent Classifier",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        450,
        300
      ]
    },
    {
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{ $json.intent }}",
              "value2": "scheduling"
            }
          ]
        }
      },
      "id": "is_scheduling",
      "name": "Is Scheduling?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 1,
      "position": [
        850,
        300
      ]
    },
    {
      "parameters": {
        "resource": "event",
        "operation": "create",
        "calendar": "primary",
        "summary": "Eastside Remodels Consultation",
        "start": "={{ $json.appointmentDate }}",
        "end": "={{ $json.appointmentEndDate }}",
        "description": "Lead Information:\nName: {{ $json.name }}\nPhone: {{ $json.phone }}\nEmail: {{ $json.email }}\nProject: {{ $json.projectType }}\nBudget: {{ $json.budget }}\nNotes: {{ $json.notes }}",
        "options": {
          "sendNotifications": true,
          "sendUpdates": "all"
        }
      },
      "id": "google_calendar",
      "name": "Book in Google Calendar",
      "type": "n8n-nodes-base.googleCalendar",
      "typeVersion": 1,
      "position": [
        1050,
        200
      ]
    },
    {
      "parameters": {
        "conditions": {
          "number": [
            {
              "value1": "={{ $json.leadScore }}",
              "operation": "larger",
              "value2": 50
            }
          ]
        }
      },
      "id": "high_quality_lead",
      "name": "High Quality Lead?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 1,
      "position": [
        850,
        500
      ]
    },
    {
      "parameters": {
        "authentication": "oAuth2",
        "resource": "lead",
        "operation": "create",
        "company": "={{ $json.name }}",
        "email": "={{ $json.email }}",
        "phone": "={{ $json.phone }}",
        "additionalFields": {
          "leadSource": "AI Chat Bot",
          "status": "Open - Not Contacted",
          "rating": "={{ $json.leadScore >= 70 ? 'Hot' : $json.leadScore >= 40 ? 'Warm' : 'Cold' }}",
          "description": "Project Type: {{ $json.projectType }}\nBudget: {{ $json.budget }}\nTimeline: {{ $json.timeline }}\nConversation: {{ $json.message }}"
        }
      },
      "id": "salesforce_lead",
      "name": "Create Salesforce Lead",
      "type": "n8n-nodes-base.salesforce",
      "typeVersion": 1,
      "position": [
        1050,
        400
      ]
    },
    {
      "parameters": {
        "fromEmail": "info@eastsideremodels.com",
        "toEmail": "={{ $json.email }}",
        "subject": "Thank You for Contacting Eastside Remodels",
        "html": "<!DOCTYPE html>\n<html>\n<head>\n    <style>\n        body { font-family: Arial, sans-serif; line-height: 1.6; }\n        .container { max-width: 600px; margin: 0 auto; padding: 20px; }\n        .header { background-color: #2c3e50; color: white; padding: 20px; text-align: center; }\n        .content { padding: 20px; background-color: #f4f4f4; }\n        .cta { background-color: #3498db; color: white; padding: 10px 20px; text-decoration: none; display: inline-block; margin-top: 20px; }\n    </style>\n</head>\n<body>\n    <div class=\"container\">\n        <div class=\"header\">\n            <h1>Eastside Remodels</h1>\n        </div>\n        <div class=\"content\">\n            <h2>Thank you for your interest!</h2>\n            <p>Dear {{ $json.name }},</p>\n            <p>Thank you for contacting Eastside Remodels. We've received your inquiry about {{ $json.projectType }} and one of our remodeling specialists will contact you within 24 hours.</p>\n            <p><strong>Your Project Details:</strong></p>\n            <ul>\n                <li>Project Type: {{ $json.projectType }}</li>\n                <li>Timeline: {{ $json.timeline }}</li>\n                <li>Budget Range: {{ $json.budget }}</li>\n            </ul>\n            <p>In the meantime, feel free to browse our portfolio at www.eastsideremodels.com</p>\n            <a href=\"https://eastsideremodels.com\" class=\"cta\">View Our Work</a>\n        </div>\n    </div>\n</body>\n</html>",
        "options": {
          "attachments": []
        }
      },
      "id": "send_email",
      "name": "Send Follow-up Email",
      "type": "n8n-nodes-base.emailSend",
      "typeVersion": 2,
      "position": [
        1250,
        300
      ]
    },
    {
      "parameters": {
        "content": "## FAQ Responses Database",
        "height": 200,
        "width": 400
      },
      "id": "faq_note",
      "name": "FAQ Database",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        250,
        500
      ]
    },
    {
      "parameters": {
        "functionCode": "// Store FAQ responses\nconst faqs = {\n  \"pricing\": {\n    \"kitchen\": \"Kitchen remodels typically range from $15,000 to $75,000 depending on size and finishes.\",\n    \"bathroom\": \"Bathroom renovations usually cost between $8,000 to $35,000.\",\n    \"basement\": \"Basement finishing projects range from $20,000 to $50,000 for most homes.\",\n    \"general\": \"Project costs vary based on scope, materials, and finishes. We offer free consultations to provide accurate estimates.\"\n  },\n  \"timeline\": {\n    \"kitchen\": \"Most kitchen remodels take 6-12 weeks from start to finish.\",\n    \"bathroom\": \"Bathroom renovations typically complete in 3-5 weeks.\",\n    \"basement\": \"Basement projects usually require 8-12 weeks depending on complexity.\",\n    \"general\": \"Project timelines vary by scope. We'll provide a detailed timeline during consultation.\"\n  },\n  \"services\": [\n    \"Kitchen Remodeling\",\n    \"Bathroom Renovations\",\n    \"Basement Finishing\",\n    \"Room Additions\",\n    \"Whole Home Renovations\",\n    \"Exterior Remodeling\",\n    \"Custom Cabinetry\",\n    \"Flooring Installation\"\n  ],\n  \"warranty\": \"We offer a 5-year warranty on workmanship and stand behind all manufacturer warranties on materials.\",\n  \"financing\": \"Yes, we offer flexible financing options through our lending partners with terms up to 84 months.\"\n};\n\nreturn [{ json: { faqs } }];"
      },
      "id": "faq_database",
      "name": "FAQ Database",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        250,
        700
      ]
    },
    {
      "parameters": {
        "resource": "message",
        "operation": "send",
        "from": "+1234567890",
        "to": "={{ $json.phone }}",
        "message": "Hi {{ $json.name }}! This is Eastside Remodels. Thanks for your interest in our {{ $json.projectType }} services. Your appointment is confirmed for {{ $json.appointmentDate }}. Reply STOP to opt out."
      },
      "id": "twilio_sms",
      "name": "Send SMS Confirmation",
      "type": "n8n-nodes-base.twilio",
      "typeVersion": 1,
      "position": [
        1250,
        100
      ]
    },
    {
      "parameters": {
        "channel": "#new-leads",
        "text": ":house: *New Lead Alert!*\n\n*Name:* {{ $json.name }}\n*Email:* {{ $json.email }}\n*Phone:* {{ $json.phone }}\n*Project:* {{ $json.projectType }}\n*Budget:* {{ $json.budget }}\n*Timeline:* {{ $json.timeline }}\n*Lead Score:* {{ $json.leadScore }}/100\n*Status:* {{ $json.leadScore >= 70 ? ':fire: HOT' : $json.leadScore >= 40 ? ':sunny: WARM' : ':snowflake: COLD' }}",
        "options": {
          "username": "Eastside Bot",
          "icon_emoji": ":robot_face:"
        }
      },
      "id": "slack_notification",
      "name": "Notify Sales Team",
      "type": "n8n-nodes-base.slack",
      "typeVersion": 1,
      "position": [
        1050,
        600
      ]
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ JSON.stringify($json) }}",
        "options": {
          "responseHeaders": {
            "entries": [
              {
                "name": "Content-Type",
                "value": "application/json"
              }
            ]
          }
        }
      },
      "id": "webhook_response",
      "name": "Webhook Response",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1,
      "position": [
        1450,
        300
      ]
    }
  ],
  "connections": {
    "webhook_trigger": {
      "main": [
        [
          {
            "node": "intent_classifier",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "intent_classifier": {
      "main": [
        [
          {
            "node": "openai_chat",
            "type": "main",
            "index": 0
          },
          {
            "node": "is_scheduling",
            "type": "main",
            "index": 0
          },
          {
            "node": "high_quality_lead",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "openai_chat": {
      "main": [
        [
          {
            "node": "webhook_response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "is_scheduling": {
      "main": [
        [
          {
            "node": "google_calendar",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "send_email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "high_quality_lead": {
      "main": [
        [
          {
            "node": "salesforce_lead",
            "type": "main",
            "index": 0
          },
          {
            "node": "slack_notification",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "send_email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "google_calendar": {
      "main": [
        [
          {
            "node": "twilio_sms",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "salesforce_lead": {
      "main": [
        [
          {
            "node": "send_email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "send_email": {
      "main": [
        [
          {
            "node": "webhook_response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "twilio_sms": {
      "main": [
        [
          {
            "node": "send_email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "slack_notification": {
      "main": [
        [
          {
            "node": "webhook_response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "saveDataSuccessExecution": "all",
    "saveManualExecutions": true,
    "saveExecutionProgress": true
  },
  "staticData": null,
  "tags": [
    {
      "name": "AI Agent",
      "createdAt": "2024-01-01T00:00:00.000Z"
    },
    {
      "name": "Lead Generation",
      "createdAt": "2024-01-01T00:00:00.000Z"
    }
  ],
  "triggerCount": 1,
  "updatedAt": "2024-01-01T00:00:00.000Z",
  "versionId": "1.0.0"
}
Pro

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

About this workflow

Eastside Remodels - Lead Nurturing AI Agent. Uses openAi, googleCalendar, salesforce, emailSend. Webhook trigger; 13 nodes.

Source: https://gist.github.com/imatomicrohit-ux/e4540d996b87722d58adbff0b2f38a75 — 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

This n8n workflow orchestrates a powerful suite of AI Agents and automations to manage and optimize various aspects of an e-commerce operation, particularly for platforms like Shopify. It leverages La

Google Sheets, HTTP Request, Slack +10
AI & RAG

The system collects real-time wearable health data, normalizes it, and uses AI to analyze trends and risk scores. It detects anomalies by comparing with historical patterns and automatically triggers

Postgres, Agent, OpenAI Chat +7
AI & RAG

This workflow automates customer feedback processing by analyzing sentiment, identifying key issues, generating personalized responses, and escalating critical cases to support teams when required. De

Redis, Postgres, Agent +7
AI & RAG

AI-Driven Handbook Generator with Multi-Agent Orchestration (Pyragogy AI Village). Uses start, postgres, openAi, emailSend. Webhook trigger; 36 nodes.

Start, Postgres, OpenAI +3
AI & RAG

AI-Driven Handbook Generator with Multi-Agent Orchestration (Pyragogy AI Village). Uses start, postgres, openAi, emailSend. Webhook trigger; 36 nodes.

Start, Postgres, OpenAI +3