AutomationFlowsAI & RAG › Generate Dream 100 Prospect Lists with Perplexity AI Research and Google Sheets

Generate Dream 100 Prospect Lists with Perplexity AI Research and Google Sheets

ByBrandon True @brandonius on n8n.io

Send an AI a few details about your "Dream Customer" in normal english, then have it search the web and give you a "Dream 100" - 100 ideal prospects to connect with in your industry.

Chat trigger trigger★★★★☆ complexityAI-powered29 nodesAgentOpenRouter ChatChat TriggerMemory Buffer WindowGoogle SheetsChatSlack TriggerSlack
AI & RAG Trigger: Chat trigger Nodes: 29 Complexity: ★★★★☆ AI nodes: yes Added:
Generate Dream 100 Prospect Lists with Perplexity AI Research and Google Sheets — n8n workflow card showing Agent, OpenRouter Chat, Chat Trigger integration

This workflow corresponds to n8n.io template #8466 — we link there as the canonical source.

This workflow follows the Agent → Chat 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 →

Download .json
{
  "id": "wUgvcUo65uVym17q",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Dream 100 Research Agent",
  "tags": [],
  "nodes": [
    {
      "id": "7735b048-fdf6-4719-a440-c45fc6437ace",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        624,
        -112
      ],
      "parameters": {
        "text": "={{ $json['User Chat Message'] }} {{ $json['Retrigger Chat'] }}",
        "options": {
          "systemMessage": "You are a helpful research assistant designed to help a business owner identify their \"Dream 100\" - the 100 people who are their most relevant customers - the most likely to pay lots of money with the least hassle/service drain, and be ambassadors for the company once loyal.\n\nMake sure the user tells you what their business sells before you begin calling research tools.\n\nAlso ensure the user gives you all of the following information about their ideal customer:\n- Job Title and Seniority Level\n- Company Size\n- Industry / Vertical\n- Geography or Location\n- EXCLUSIONS for al of the above categories (Not India, Not 250+ person companies)\n\n- Who is their ideal customer's target audience?  (Coach FOR marketing executives)\n- What are the \u201cmarkers\u201d of them being good?  (Speak at conferences, have books, maintain a LinkedIn following, etc.)\n- What outcome do they want?  (More clients, more leads, save time, lose weight?)\n\n- If the user has examples, try to collect 2-5 examples of people they want in their dream 100, along with why those people.\n\nOnce you have all that information, use your chat model and research tool to output the list of the dream 100 and deposit it in google sheets.  Your goal is to find prospects who match the given profile and are similar to the example people the user gave you.\n\n- Number each prospect 1-100 (\"Prospect ID\"), and use that to match the row in google sheets\n- Output the prospect's name (\"Prospect Name\") and put it in that column\n- Output a 100-175 word summary on the prospect (\"Prospect Summary\") and put it in that column.  Include where they work, who they serve, and a guess at how valuable they\u2019d be and why (Serve X valuable customer, Handles Y super high volume, Influencer in Z space)\n- Output a 50-75 word explanation for why this person fits into the user's dream 100 (\"Reason\") and put it in that column.  (Is similar to X, Important in Y sector)\n\nIf Perplexity only returns 5 or 10 results, add them all to google sheets, then re-call Perplexity.  Repeat this until you've found 100 prospects.\n\nDO NOT return all the details of the prospects in your agent chat, just deposit them in the google sheet."
        },
        "promptType": "define"
      },
      "typeVersion": 2.2
    },
    {
      "id": "939929d6-51bd-451c-b1be-473d0f704cfc",
      "name": "OpenRouter Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        448,
        320
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openRouterApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "2128e6c2-07f1-4943-8894-749c8a655bb4",
      "name": "When chat message received",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        -320,
        -160
      ],
      "parameters": {
        "options": {
          "responseMode": "responseNodes"
        }
      },
      "typeVersion": 1.3,
      "alwaysOutputData": false
    },
    {
      "id": "61a6c6bb-dbc9-4903-918d-335e7c8e03c6",
      "name": "Simple Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        608,
        320
      ],
      "parameters": {},
      "typeVersion": 1.3
    },
    {
      "id": "23b43c9f-1041-4643-a69d-5869698afd3b",
      "name": "User Chat Message",
      "type": "n8n-nodes-base.set",
      "position": [
        -80,
        -160
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "1df142cc-4f0b-4a49-86a6-9718f7402e6a",
              "name": "User Chat Message",
              "type": "string",
              "value": "={{ $json.chatInput }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "5b050dcb-36b2-4e59-90d5-99f3555c6e21",
      "name": "Agent Re-trigger chat message",
      "type": "n8n-nodes-base.set",
      "position": [
        -80,
        -16
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "a43b6f64-b16f-4aff-885c-a007c24d6354",
              "name": "Retrigger Chat",
              "type": "string",
              "value": "Give me the next 10 entries.  Make sure their Prospect IDs are higher than the previous batch.  So, if you just gave me prospects 11-20, this time give me 21-30.  If you just did 21-30, give me 31-40, etc.  Ensure none of the people you find me are duplicates of ones previously included in the list."
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "9b7c9cb6-6a51-4e64-8ca2-0cdcc3a23986",
      "name": "Send correct message",
      "type": "n8n-nodes-base.switch",
      "position": [
        144,
        -96
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Correct Message",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": false,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "5c0ef267-db3a-4ee1-8be4-e97f75cbb972",
                    "operator": {
                      "type": "string",
                      "operation": "notEmpty",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json['Retrigger Chat'] }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Correct Message",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": false,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "5a2be6c2-ed82-4c43-98a7-fa3e853ca974",
                    "operator": {
                      "type": "string",
                      "operation": "notEmpty",
                      "singleValue": true
                    },
                    "leftValue": "={{ $json['User Chat Message'] }}",
                    "rightValue": ""
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {
          "ignoreCase": true
        }
      },
      "typeVersion": 3.2
    },
    {
      "id": "1723928c-4170-428c-a1f8-887f0de1de1a",
      "name": "Check First Row",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1280,
        -112
      ],
      "parameters": {
        "options": {},
        "filtersUI": {
          "values": [
            {
              "lookupValue": "1",
              "lookupColumn": "Prospect ID"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/10zLEA_zRfbvHkSc23MKcZ3BVroa26h-ZoXlTAdveAcc/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "10zLEA_zRfbvHkSc23MKcZ3BVroa26h-ZoXlTAdveAcc",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/10zLEA_zRfbvHkSc23MKcZ3BVroa26h-ZoXlTAdveAcc/edit?usp=drivesdk",
          "cachedResultName": "Dream 100"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "b2ffa88a-295d-4f3e-8baf-31cad5ded06a",
      "name": "Check Last Row",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1280,
        80
      ],
      "parameters": {
        "options": {},
        "filtersUI": {
          "values": [
            {
              "lookupValue": "100",
              "lookupColumn": "Prospect ID"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/10zLEA_zRfbvHkSc23MKcZ3BVroa26h-ZoXlTAdveAcc/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "10zLEA_zRfbvHkSc23MKcZ3BVroa26h-ZoXlTAdveAcc",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/10zLEA_zRfbvHkSc23MKcZ3BVroa26h-ZoXlTAdveAcc/edit?usp=drivesdk",
          "cachedResultName": "Dream 100"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "d16e47c3-eb87-4f0e-9c7a-3aecfbe31061",
      "name": "First Row Name",
      "type": "n8n-nodes-base.set",
      "position": [
        1472,
        -112
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "ecf75ecc-4897-45eb-a042-3ba5d1556838",
              "name": "Prospect 1",
              "type": "string",
              "value": "={{ $json['Prospect Name'] }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "64a7b6e3-8c99-4620-99ce-66314e8a8ebb",
      "name": "Is there any data in the sheet?",
      "type": "n8n-nodes-base.if",
      "position": [
        1744,
        -32
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "702f3427-cf4b-4f0a-a2ca-815921da02b2",
              "operator": {
                "type": "string",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $('First Row Name').item.json['Prospect 1'] }}",
              "rightValue": ""
            },
            {
              "id": "2b662685-1155-4a24-a1b6-b54fda3dd4bd",
              "operator": {
                "type": "string",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $('Last Row Name').item.json['Prospect 100'] }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "7fa555fe-746f-4e07-a4ee-81a228372dbc",
      "name": "Do we need MORE data in the sheet?",
      "type": "n8n-nodes-base.if",
      "position": [
        1952,
        112
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "702f3427-cf4b-4f0a-a2ca-815921da02b2",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $('First Row Name').item.json['Prospect 1'] }}",
              "rightValue": ""
            },
            {
              "id": "2b662685-1155-4a24-a1b6-b54fda3dd4bd",
              "operator": {
                "type": "string",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $('Last Row Name').item.json['Prospect 100'] }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "60cb44fb-2f32-48b9-a6fd-fef0bdb89b02",
      "name": "Collect More Info",
      "type": "@n8n/n8n-nodes-langchain.chat",
      "position": [
        2256,
        -144
      ],
      "parameters": {
        "message": "={{ $('AI Agent').item.json.output }}",
        "options": {
          "memoryConnection": false
        },
        "waitUserReply": false
      },
      "typeVersion": 1
    },
    {
      "id": "868a7b0a-0346-4f8c-bfd9-fd339652807d",
      "name": "All Done!",
      "type": "@n8n/n8n-nodes-langchain.chat",
      "position": [
        2256,
        128
      ],
      "parameters": {
        "message": "=",
        "options": {
          "memoryConnection": false
        },
        "waitUserReply": false
      },
      "typeVersion": 1
    },
    {
      "id": "2023a54e-49ec-4bc6-b32b-2cfb653494c2",
      "name": "Last Row Name",
      "type": "n8n-nodes-base.set",
      "position": [
        1488,
        80
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "ecf75ecc-4897-45eb-a042-3ba5d1556838",
              "name": "Prospect 100",
              "type": "string",
              "value": "={{ $json['Prospect Name'] }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "1b57cc85-537e-4df6-b65b-9a51f692680c",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -496,
        -224
      ],
      "parameters": {
        "width": 864,
        "height": 480,
        "content": "## Pick a message to send to the agent"
      },
      "typeVersion": 1
    },
    {
      "id": "37fa8afb-d08c-47fc-92d8-c0bc264a7dc4",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        400,
        -224
      ],
      "parameters": {
        "color": 4,
        "width": 736,
        "height": 704,
        "content": "## The Brain - Takes your Prompt, Does Research"
      },
      "typeVersion": 1
    },
    {
      "id": "dfc23859-460d-467f-9fff-d66d1319e5bf",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1168,
        -224
      ],
      "parameters": {
        "color": 5,
        "width": 480,
        "height": 464,
        "content": "## Check how much data is in the sheet"
      },
      "typeVersion": 1
    },
    {
      "id": "5239fb30-715d-4cdb-bcd9-b2e8954cf549",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1696,
        -224
      ],
      "parameters": {
        "color": 6,
        "width": 752,
        "height": 528,
        "content": "## Do more research or respond to user?"
      },
      "typeVersion": 1
    },
    {
      "id": "c470b239-c9d5-4a5c-9e4d-213f3d30fdb5",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -880,
        -176
      ],
      "parameters": {
        "color": 3,
        "width": 288,
        "height": 320,
        "content": "## Connect to Trigger via Slack Message\n\nChange the variable in \"User Chat Message\" from the n8n chat -> slack message"
      },
      "typeVersion": 1
    },
    {
      "id": "f7a06a9b-ad7b-4e64-a800-21e5e99b23ad",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2496,
        -240
      ],
      "parameters": {
        "color": 3,
        "width": 352,
        "height": 544,
        "content": "## Connect These to Respond via Slack Message\n\nConnect the AI agent's output as the content of both messages"
      },
      "typeVersion": 1
    },
    {
      "id": "52f38441-eee3-48db-8994-57f848a03c54",
      "name": "When Slack Received",
      "type": "n8n-nodes-base.slackTrigger",
      "position": [
        -832,
        16
      ],
      "parameters": {
        "options": {},
        "trigger": [
          "message"
        ],
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "typeVersion": 1
    },
    {
      "id": "caeaca6e-c815-4a4b-85a6-6a7d090c5a0f",
      "name": "Collect More Info Slack",
      "type": "n8n-nodes-base.slack",
      "position": [
        2576,
        -48
      ],
      "parameters": {
        "otherOptions": {}
      },
      "typeVersion": 2.3
    },
    {
      "id": "5c4db052-a638-484a-bf80-602fb357d4cd",
      "name": "All Done Slack",
      "type": "n8n-nodes-base.slack",
      "position": [
        2576,
        128
      ],
      "parameters": {
        "otherOptions": {}
      },
      "typeVersion": 2.3
    },
    {
      "id": "17e6c1af-57ed-41aa-8fc2-fd0331332a37",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -16,
        -416
      ],
      "parameters": {
        "width": 448,
        "content": "## Google Sheet Template \n\n(Make a copy)\n\nhttps://docs.google.com/spreadsheets/d/1WWRwi3bseuZd1ebaAdGQYzDhwW_zBEOYib20l2Z_coY/edit?usp=sharing"
      },
      "typeVersion": 1
    },
    {
      "id": "3f0d7097-5dea-491a-b25a-c76d491c1674",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -496,
        -608
      ],
      "parameters": {
        "width": 448,
        "content": "## SETUP TUTORIAL LOOM VIDEO\n\nhttps://www.loom.com/share/2a71542149054456b993826f56e5503f?sid=41a106b3-a16d-4686-8280-b7e56af8ce42"
      },
      "typeVersion": 1
    },
    {
      "id": "a0503770-12fb-4e35-89b8-17820a13d0b5",
      "name": "Research via Perplexity",
      "type": "n8n-nodes-base.perplexityTool",
      "position": [
        976,
        320
      ],
      "parameters": {
        "model": "sonar-deep-research",
        "options": {},
        "messages": {
          "message": [
            {
              "content": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('message0_Text', ``, 'string') }}"
            }
          ]
        },
        "requestOptions": {}
      },
      "credentials": {
        "perplexityApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "741e1777-1bcd-4a4b-964a-f6d0285f032a",
      "name": "Insert Data Into Sheet",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        784,
        320
      ],
      "parameters": {
        "columns": {
          "value": {
            "Reason": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Reason', ``, 'string') }}",
            "Prospect ID": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prospect_ID__using_to_match_', ``, 'string') }}",
            "Prospect Name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prospect_Name', ``, 'string') }}",
            "Prospect Summary": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prospect_Summary', ``, 'string') }}"
          },
          "schema": [
            {
              "id": "Prospect ID",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Prospect ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Prospect Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Prospect Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Prospect Summary",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Prospect Summary",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Reason",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Reason",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Prospect ID"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/10zLEA_zRfbvHkSc23MKcZ3BVroa26h-ZoXlTAdveAcc/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "10zLEA_zRfbvHkSc23MKcZ3BVroa26h-ZoXlTAdveAcc",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/10zLEA_zRfbvHkSc23MKcZ3BVroa26h-ZoXlTAdveAcc/edit?usp=drivesdk",
          "cachedResultName": "Dream 100"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "9a1be387-bcfa-452d-b371-7ba63acbc9a0",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -496,
        -416
      ],
      "parameters": {
        "width": 448,
        "content": "## Directions:\n1. Make sure the Google sheet has NO NAMES in it right now\n2. Start a chat with the agent\n3. Provide any information the agent wants\n4. Let the agent research!  (~3-4 mins per 10 names, depending on Perplexity Tier)"
      },
      "typeVersion": 1
    }
  ],
  "active": true,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "63d33378-9662-4398-a3a5-b015c6a8a75b",
  "connections": {
    "AI Agent": {
      "main": [
        [
          {
            "node": "Check First Row",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Last Row Name": {
      "main": [
        [
          {
            "node": "Is there any data in the sheet?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "AI Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Check Last Row": {
      "main": [
        [
          {
            "node": "Last Row Name",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "First Row Name": {
      "main": [
        [
          {
            "node": "Check Last Row",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check First Row": {
      "main": [
        [
          {
            "node": "First Row Name",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Collect More Info": {
      "main": [
        []
      ]
    },
    "User Chat Message": {
      "main": [
        [
          {
            "node": "Send correct message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send correct message": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Insert Data Into Sheet": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Research via Perplexity": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "When chat message received": {
      "main": [
        [
          {
            "node": "User Chat Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Agent Re-trigger chat message": {
      "main": [
        [
          {
            "node": "Send correct message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is there any data in the sheet?": {
      "main": [
        [
          {
            "node": "Collect More Info",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Do we need MORE data in the sheet?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Do we need MORE data in the sheet?": {
      "main": [
        [
          {
            "node": "Agent Re-trigger chat message",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "All Done!",
            "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.

Pro

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

About this workflow

Send an AI a few details about your "Dream Customer" in normal english, then have it search the web and give you a "Dream 100" - 100 ideal prospects to connect with in your industry.

Source: https://n8n.io/workflows/8466/ — 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

Who is this workflow for? This workflow is designed for SEO analysts, content creators, marketing agencies, and developers who need to index a website and then interact with its content as if it were

Agent, OpenAI Chat, Memory Buffer Window +10
AI & RAG

This workflow creates a fully interactive AI-powered Sales CRM Chatbot inside n8n, capable of understanding user queries, searching Google Sheets for CRM data, and responding intelligently based on re

Chat Trigger, OpenAI Chat, Google Sheets Tool +4
AI & RAG

Streamline the final stage of your content production workflow by automating publishing, formatting, metadata generation, and approval routing. This AI-powered subworkflow pulls optimized drafts from

Google Sheets Tool, Memory Buffer Window, Agent +6
AI & RAG

This workflow is ideal for filmmakers, video producers, content creators, and location managers who need to quickly build a database of potential shooting locations without manual research and data en

Chat Trigger, Memory Buffer Window, HTTP Request +4
AI & RAG

This comprehensive workflow automates the complete financial document processing pipeline using AI. Upload invoices via chat, drop expense receipts into a folder, or add bank statements - the system a

Chat Trigger, HTTP Request, Google Sheets +8