{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "00a6357a-03f0-48f0-bed9-dcf7de5b5511",
      "name": "Get many rows",
      "type": "n8n-nodes-base.nocoDb",
      "position": [
        -1136,
        624
      ],
      "parameters": {
        "table": "mznkwe3wz0dofde",
        "options": {},
        "operation": "getAll",
        "projectId": "psinm4yvd05vnvy",
        "returnAll": true,
        "authentication": "nocoDbApiToken"
      },
      "credentials": {
        "nocoDbApiToken": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "d2f3be79-b5cc-4145-b9f5-75b075d7c3c9",
      "name": "Filter",
      "type": "n8n-nodes-base.filter",
      "position": [
        -912,
        624
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "or",
          "conditions": [
            {
              "id": "8ed5c77d-155f-4e54-9792-80e591213ea9",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json['Next Follow up/Contact'] }}",
              "rightValue": "={{ $now.format('M/dd/yy') }}"
            },
            {
              "id": "2d5ae5f1-ba75-474d-b2ba-a53643e4452e",
              "operator": {
                "type": "dateTime",
                "operation": "before"
              },
              "leftValue": "={{ $json['Next Follow up/Contact'] }}",
              "rightValue": "={{ $now.format('M/dd/yy') }}"
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "92ea9d6b-fd48-441f-8083-a07cf273b744",
      "name": "Switch",
      "type": "n8n-nodes-base.switch",
      "position": [
        -272,
        592
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Follow Up 1 ",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "30fceefc-9858-4b72-bea7-59c20a328a92",
                    "operator": {
                      "type": "string",
                      "operation": "empty",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json['Follow Up 1 (Day 3) Y/N'] }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Follow Up 2",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "37ae5967-faa4-4595-9a41-00c9f160ae38",
                    "operator": {
                      "type": "string",
                      "operation": "empty",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json['Follow Up 2 (Day 7) Y/N'] }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Follow Up 3",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "ae3c3461-15d1-4adf-a67a-4a9cb14a4bc2",
                    "operator": {
                      "type": "string",
                      "operation": "empty",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json['Follow Up 3 (Day 12) Y/N'] }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Follow Up 4",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "7488eccf-3b6a-4244-9782-0aa4ff5e3105",
                    "operator": {
                      "type": "string",
                      "operation": "empty",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json['Follow Up 4 (Day 16) Y/N'] }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "596a5b9d-51ea-4b81-9715-fcdef5d8a9f0",
      "name": "Groq Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGroq",
      "position": [
        32,
        144
      ],
      "parameters": {
        "model": "openai/gpt-oss-120b",
        "options": {}
      },
      "credentials": {
        "groqApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "39beac49-471d-45bd-bbed-1e527d57d022",
      "name": "Groq Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatGroq",
      "position": [
        32,
        544
      ],
      "parameters": {
        "model": "openai/gpt-oss-20b",
        "options": {}
      },
      "credentials": {
        "groqApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a55a3e49-72fb-4549-b390-144948324b2b",
      "name": "Groq Chat Model2",
      "type": "@n8n/n8n-nodes-langchain.lmChatGroq",
      "position": [
        32,
        944
      ],
      "parameters": {
        "model": "openai/gpt-oss-20b",
        "options": {}
      },
      "credentials": {
        "groqApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "6121e37c-b95c-4c92-a540-aa602b8568b3",
      "name": "Groq Chat Model3",
      "type": "@n8n/n8n-nodes-langchain.lmChatGroq",
      "position": [
        32,
        1456
      ],
      "parameters": {
        "model": "openai/gpt-oss-120b",
        "options": {}
      },
      "credentials": {
        "groqApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "932677fa-c641-4cd3-b084-0dba8bca85a2",
      "name": "Send email",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        320,
        -80
      ],
      "parameters": {
        "text": "={{ $json.text }}",
        "options": {
          "appendAttribution": false
        },
        "subject": "RE: Quick question about Lead Qualification",
        "toEmail": "={{ $('Get many rows').item.json.email }}",
        "emailFormat": "text"
      },
      "credentials": {
        "smtp": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "d1d382d4-9ac2-4ebe-a9d2-50a6ddf49501",
      "name": "Send email1",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        336,
        320
      ],
      "parameters": {
        "text": "={{ $json.text }}",
        "options": {
          "appendAttribution": false
        },
        "subject": "RE: Quick question about lead qualification",
        "toEmail": "={{ $('Get many rows').item.json.email }}",
        "emailFormat": "text"
      },
      "credentials": {
        "smtp": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "3cd74ac1-2c6e-49ff-9bc3-42a2fc0cdaee",
      "name": "Send email2",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        304,
        720
      ],
      "parameters": {
        "text": "={{ $json.text }}",
        "options": {
          "appendAttribution": false
        },
        "subject": "RE: Quick question about lead qualification",
        "toEmail": "={{ $('Get many rows').item.json.email }}",
        "emailFormat": "text"
      },
      "credentials": {
        "smtp": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "20e78be4-e656-4e21-8557-e3d8547c5a8f",
      "name": "Send email3",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        304,
        1232
      ],
      "parameters": {
        "text": "={{ $json.text }}",
        "options": {
          "appendAttribution": false
        },
        "subject": "RE: Quick question about lead qualification ",
        "toEmail": "={{ $('Get many rows').item.json.email }}",
        "emailFormat": "text"
      },
      "credentials": {
        "smtp": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "04d81390-a5ab-4670-8eff-b6421c646731",
      "name": "Update a row",
      "type": "n8n-nodes-base.nocoDb",
      "position": [
        512,
        320
      ],
      "parameters": {
        "table": "mznkwe3wz0dofde",
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldName": "Follow Up 2 (Day 7) Y/N",
              "fieldValue": "Y"
            },
            {
              "fieldName": "Next Follow up/Contact",
              "fieldValue": "={{ $now.plus(5, 'Days').format('M/dd/yy') }}"
            },
            {
              "fieldName": "Id",
              "fieldValue": "={{ $('Get many rows').item.json.Id }}"
            }
          ]
        },
        "operation": "update",
        "projectId": "psinm4yvd05vnvy",
        "authentication": "nocoDbApiToken"
      },
      "credentials": {
        "nocoDbApiToken": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "8fd0f965-59c1-4c93-9d5f-b49a7849ec87",
      "name": "Update a row1",
      "type": "n8n-nodes-base.nocoDb",
      "position": [
        528,
        -80
      ],
      "parameters": {
        "table": "mznkwe3wz0dofde",
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldName": "Follow Up 1 (Day 3) Y/N",
              "fieldValue": "Y"
            },
            {
              "fieldName": "Next Follow up/Contact",
              "fieldValue": "={{ $now.plus(4, 'Days').format('M/dd/yy') }}"
            },
            {
              "fieldName": "Id",
              "fieldValue": "={{ $('Get many rows').item.json.Id }}"
            }
          ]
        },
        "operation": "update",
        "projectId": "psinm4yvd05vnvy",
        "authentication": "nocoDbApiToken"
      },
      "credentials": {
        "nocoDbApiToken": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "f33d7ba4-fe04-48f8-8d21-c5424a330349",
      "name": "Update a row2",
      "type": "n8n-nodes-base.nocoDb",
      "position": [
        512,
        720
      ],
      "parameters": {
        "table": "mznkwe3wz0dofde",
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldName": "Follow Up 3 (Day 12) Y/N",
              "fieldValue": "Y"
            },
            {
              "fieldName": "Next Follow up/Contact",
              "fieldValue": "={{ $now.plus(4, 'days').format('M/dd/yy') }}"
            },
            {
              "fieldName": "Id",
              "fieldValue": "={{ $('Get many rows').item.json.Id }}"
            }
          ]
        },
        "operation": "update",
        "projectId": "psinm4yvd05vnvy",
        "authentication": "nocoDbApiToken"
      },
      "credentials": {
        "nocoDbApiToken": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "df8f317d-3265-4d8a-bdd0-cb2bbf27157c",
      "name": "Update a row3",
      "type": "n8n-nodes-base.nocoDb",
      "position": [
        512,
        1232
      ],
      "parameters": {
        "table": "mznkwe3wz0dofde",
        "fieldsUi": {
          "fieldValues": [
            {
              "fieldName": "Follow Up 4 (Day 16) Y/N",
              "fieldValue": "Y"
            },
            {
              "fieldName": "Id",
              "fieldValue": "={{ $('Get many rows').item.json.Id }}"
            }
          ]
        },
        "operation": "update",
        "projectId": "psinm4yvd05vnvy",
        "authentication": "nocoDbApiToken"
      },
      "credentials": {
        "nocoDbApiToken": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "30a03741-6f5e-43a7-91d2-c57e3cd70b23",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -1328,
        624
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 10
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "c3602cdb-4e3a-47d7-827c-be80b75cce98",
      "name": "Filter1",
      "type": "n8n-nodes-base.filter",
      "position": [
        -704,
        624
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "c188d6ef-d923-48c0-89fe-2a699ab30ecf",
              "operator": {
                "type": "string",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $json['Not Interested'] }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "4ce96b40-c824-4cc5-9f0f-d397f7a262be",
      "name": "Follow Up Message 1",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        -48,
        -80
      ],
      "parameters": {
        "text": "=You are an email personalization assistant. Your job is to modify an email template by replacing ONLY one specific element:\n\n1. Replace the recipient's name\n\nCRITICAL INSTRUCTIONS:\n- Change ONLY the name\n- Keep ALL other content exactly the same\n- Maintain the exact formatting, spacing, and structure\n- Do not modify subject lines, signatures, or any other text\n- Do not add extra content or make style changes\n\nINPUT FORMAT:\nYou will receive:\n- Original Email: \nHey Michael, \n[[Insert Follow Up Email 1]]\n\n- New Name: {{ $json.first_name }}\n\nREPLACEMENT RULES:\n- Replace \"Michael\" with the actual name provided\n- Use the exact capitalization provided in the input\n\nOUTPUT FORMAT:\nReturn only the modified email with no additional commentary, explanations, or metadata.",
        "batching": {},
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "b38f5b0f-07ad-4d7d-8a43-811770d66a08",
      "name": "Follow Up Message 2",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        -48,
        320
      ],
      "parameters": {
        "text": "=You are an email personalization assistant. Your job is to modify an email template by replacing ONLY one specific element:\n\n1. Replace the recipient's name\n\nCRITICAL INSTRUCTIONS:\n- Change ONLY the name\n- Keep ALL other content exactly the same\n- Maintain the exact formatting, spacing, and structure\n- Do not modify subject lines, signatures, or any other text\n- Do not add extra content or make style changes\n\nINPUT FORMAT:\nYou will receive:\n- Original Email: \nHey ((name)),\n[[Insert Follow Up Email 2]]\n\n\n- New Name: {{ $json.first_name }}\n\nREPLACEMENT RULES:\n- Look for placeholders like: ((name)), or obvious name placeholders\n- Use the exact capitalization provided in the input\n\nOUTPUT FORMAT:\nReturn only the modified email with no additional commentary, explanations, or metadata.",
        "batching": {},
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "623869ff-9e98-4278-b8b3-c1e8e689edd4",
      "name": "Follow Up Message 3",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        -48,
        720
      ],
      "parameters": {
        "text": "=You are an email personalization assistant. Your job is to modify an email template by replacing ONLY one specific element:\n\n1. Replace the recipient's name\n\nCRITICAL INSTRUCTIONS:\n- Change ONLY the name\n- Keep ALL other content exactly the same\n- Maintain the exact formatting, spacing, and structure\n- Do not modify subject lines, signatures, or any other text\n- Do not add extra content or make style changes\n\nINPUT FORMAT:\nYou will receive:\n- Original Email: \nHey ((name)),\n\n[[Insert Follow Up Email 3]]\n\n\n- New Name: {{ $json.first_name }}\n\nREPLACEMENT RULES:\n- Look for placeholders like: ((name)), or obvious name placeholders\n- Use the exact capitalization provided in the input\n\nOUTPUT FORMAT:\nReturn only the modified email with no additional commentary, explanations, or metadata.",
        "batching": {},
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "9ad58bd4-a5c2-4206-b1b1-48b83cf9c2d8",
      "name": "Follow Up Message 4",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        -48,
        1232
      ],
      "parameters": {
        "text": "=You are an email personalization assistant. Your job is to modify an email template by replacing ONLY one specific element:\n\n1. Replace the recipient's name\n\nCRITICAL INSTRUCTIONS:\n- Change ONLY the name\n- Keep ALL other content exactly the same\n- Maintain the exact formatting, spacing, and structure\n- Do not modify subject lines, signatures, or any other text\n- Do not add extra content or make style changes\n\nINPUT FORMAT:\nYou will receive:\n- Original Email: \nHi ((name))\n[[Insert Follow Up Email 4]]\n\n\n- New Name: {{ $json.first_name }}\n\nREPLACEMENT RULES:\n- Look for placeholders like: ((name)), or obvious name placeholders\n- Use the exact capitalization provided in the input\n\nOUTPUT FORMAT:\nReturn only the modified email with no additional commentary, explanations, or metadata.",
        "batching": {},
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "5353f6d4-32b4-471c-b383-641b78b75c91",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2896,
        -800
      ],
      "parameters": {
        "color": 5,
        "width": 1312,
        "height": 1408,
        "content": "# Automated Email Follow-Up Workflow\n\nThis n8n template demonstrates how to automate personalized cold email follow-ups using AI personalization and database tracking. Perfect for sales teams, recruiters, and agencies managing high-volume outreach.\n\n**Use cases:** Follow up with cold leads, re-engage trial users, nurture conference contacts, recruit candidates, or follow up with proposal recipients.\n\n\n\n## How it works\n\n* NocoDB fetches all leads and filters those needing follow-up today based on the \"Next Follow up/Contact\" date\n* A switch node routes leads to the appropriate follow-up stage (1-4) based on which follow-ups have already been sent\n* AI personalizes each email template by inserting the recipient's name while keeping the rest of the content intact\n* Emails are sent via SMTP (or Gmail node), then the database updates to mark the follow-up as sent and schedule the next one\n* The workflow runs daily at 10 AM to automatically process follow-ups without manual intervention\n\n\n\n## Good to know\n\n* Each AI personalization costs ~$0.001 with Groq (free tier available). See Groq pricing for details.\n* Follow-up schedule: Day 3, 7, 12, 16 after initial contact (fully customizable)\n* Leads marked \"Not Interested\" are automatically excluded from future follow-ups\n* The workflow only processes leads with an \"Initial Contact Date\" set - this triggers the entire sequence (The initial Contact is done manually and updated manually)\n\n\n\n## How to use\n\n* The schedule trigger runs daily but can be replaced with manual trigger or webhook for immediate testing\n* Customize the 4 email templates in the AI nodes to match your brand voice and offering\n* Adjust follow-up intervals by modifying the \"Update a row\" nodes (currently +4 or +5 days between follow-ups)\n* Import your lead list to NocoDB with minimum required fields: first_name, last_name, email, Initial Contact Date\n\n\n\n## Requirements\n\n* **NocoDB account** - Free lead database (You can use any database-Google Sheets, Airtable etc. However ensure the essential details below are in the database)\n* **Groq API key** (or OpenAI/Ollama) - For AI personalization (Swap this for any LLM you like/have)\n* **SWITCH** the 'Send Email' nodes for the **Gmail** Node and set it up using OAuth\n\n## Database Structure\n\n**Critical columns** (workflow will fail without these):\n* `first_name` - Recipient's first name for personalization\n* `email` - Where to send follow-ups\n* `Initial Contact Date` - Triggers the sequence when set\n* `Next Follow up/Contact` - Determines when next follow-up sends\n* `Follow Up 1 (Day 3) Y/N` - Tracks completion (null/Y)\n* `Follow Up 2 (Day 7) Y/N` - Tracks completion (null/Y)\n* `Follow Up 3 (Day 12) Y/N` - Tracks completion (null/Y)\n* `Follow Up 4 (Day 16) Y/N` - Tracks completion (null/Y)\n* `Not Interested` - Excludes leads from sequence\n\n**Optional enrichment columns:**\norganization_name, title, industry, linkedin_url, city, organization_website_url, organization_annual_revenue_printed, organization_linkedin_url, organization_phone, organization_country\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "2be4a15e-542b-4556-95f4-75a0525e00af",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1552,
        -800
      ],
      "parameters": {
        "color": 6,
        "width": 1088,
        "height": 880,
        "content": "## Customizing this workflow\n\n**Change follow-up timing:** Edit the `$now.plus(X, 'Days')` values in the Update nodes to adjust intervals between follow-ups.\n\n**Swap AI providers:** Replace Groq nodes with OpenAI, Anthropic, or local Ollama models - all use the same LangChain interface.\n\n**Use Gmail instead of SMTP:** Replace \"Send Email\" nodes with native Gmail nodes for better deliverability and OAuth authentication.\n\n**Add more follow-ups:** Duplicate the Follow Up 4 branch, add a new condition to the Switch node, and create corresponding database column.\n\n**Different email content per industry:** Create separate branches in the Switch node based on the lead's industry field to send targeted messaging.\n\n\n\n## Setup Checklist\n\n**Database Setup (5 minutes):**\n1. Create NocoDB/datbase table with required columns: first_name, last_name, email, Initial Contact Date, Next Follow up/Contact, Follow Up 1-4 Y/N, Not Interested\n2. Import your lead list or add leads manually\n3. Set \"Initial Contact Date\" to when you first contacted them\n4. Calculate \"Next Follow up/Contact\" as Initial Contact Date + 3 days\n\n**Workflow Configuration (10 minutes):**\n1. Add NocoDB/dtabase credentials (get API token from NocoDB settings)\n2. Add Groq/LLM credentials (free at console.groq.com)\n3. Add email credentials (SMTP details or Gmail OAuth)\n4. Update email templates in the 4 AI personalization nodes\n\n**Testing (5 minutes):**\n1. Add test lead with your email and today's follow-up date\n2. Execute workflow manually\n3. Verify email received and database updated\n4. Test each follow-up stage by updating the test lead\n\n**Go Live:**\n1. Set schedule trigger to your preferred time (default: 10 AM daily)\n2. Activate workflow\n3. Monitor for first few days to ensure proper execution\n"
      },
      "typeVersion": 1
    },
    {
      "id": "9f98fd9b-9c40-4d91-bce5-f2410f80b718",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1536,
        112
      ],
      "parameters": {
        "color": 4,
        "width": 1072,
        "height": 336,
        "content": "## Troubleshooting\n\n**No emails sending:**\nCheck if \"Next Follow up/Contact\" is today or earlier, follow-up fields are null (not \"Y\"), and email credentials are valid.\n\n**AI personalization fails:**\nVerify API key is valid and has credits, model name is correct (openai/gpt-oss-120b for Groq).\n\n**Database not updating:**\nConfirm field names match exactly (case-sensitive), NocoDB credentials are current, and you're using the correct Project/Table IDs.\n\n**Wrong follow-up sent:**\nCheck Switch node conditions - they route based on which follow-up fields are empty vs \"Y\".\n"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Filter": {
      "main": [
        [
          {
            "node": "Filter1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch": {
      "main": [
        [
          {
            "node": "Follow Up Message 1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Follow Up Message 2",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Follow Up Message 3",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Follow Up Message 4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter1": {
      "main": [
        [
          {
            "node": "Switch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send email": {
      "main": [
        [
          {
            "node": "Update a row1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send email1": {
      "main": [
        [
          {
            "node": "Update a row",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send email2": {
      "main": [
        [
          {
            "node": "Update a row2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send email3": {
      "main": [
        [
          {
            "node": "Update a row3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get many rows": {
      "main": [
        [
          {
            "node": "Filter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Groq Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Follow Up Message 1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Groq Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Follow Up Message 2",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Groq Chat Model2": {
      "ai_languageModel": [
        [
          {
            "node": "Follow Up Message 3",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Groq Chat Model3": {
      "ai_languageModel": [
        [
          {
            "node": "Follow Up Message 4",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get many rows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Follow Up Message 1": {
      "main": [
        [
          {
            "node": "Send email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Follow Up Message 2": {
      "main": [
        [
          {
            "node": "Send email1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Follow Up Message 3": {
      "main": [
        [
          {
            "node": "Send email2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Follow Up Message 4": {
      "main": [
        [
          {
            "node": "Send email3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}