AutomationFlowsAI & RAG › Create Ideal Customer Profiles From Linkedin Data with Airtop and Claude AI

Create Ideal Customer Profiles From Linkedin Data with Airtop and Claude AI

ByAirtop @cesar-at-airtop on n8n.io

This automation helps marketing and sales teams define their Ideal Customer Profile (ICP) using real LinkedIn profiles of current high-fit customers. By enriching and analyzing profile data, it generates a clear ICP definition and scoring methodology for future targeting.

Chat trigger trigger★★★☆☆ complexityAI-powered10 nodesChat TriggerAgentAnthropic ChatMemory Buffer WindowAirtop ToolGoogle Docs
AI & RAG Trigger: Chat trigger Nodes: 10 Complexity: ★★★☆☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #4204 — 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": "FRafOpo1JyVJmZQd",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Define ICP from Customers v3",
  "tags": [
    {
      "id": "gNiDOCnjqCXR7phD",
      "name": "Marketing",
      "createdAt": "2025-04-15T01:08:25.516Z",
      "updatedAt": "2025-04-15T01:08:25.516Z"
    }
  ],
  "nodes": [
    {
      "id": "6d6495da-12f7-4768-97d2-e06cf1449829",
      "name": "When chat message received",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        -440,
        120
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "7664b5a1-ca45-4e97-9eb3-745762167cc2",
      "name": "AI Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -220,
        120
      ],
      "parameters": {
        "options": {
          "systemMessage": "# AI Marketing Agent: ICP Analyst\n\nYou are an expert marketing professional specializing in Ideal Customer Profile (ICP) analysis and scoring. Your primary purpose is to help businesses identify and understand their most valuable customer segments.\n\n## Core Capabilities:\n- Process and analyze LinkedIn Profile URLs of active customers\n- Utilize data enrichment tools to gather comprehensive information about each customer\n- Generate detailed ICP definitions based on multi-dimensional data analysis\n- Create custom scoring functions to evaluate potential customer fit against the ICP\n- Provide actionable insights to optimize marketing and sales targeting\n\n## Data Processing Instructions:\n- You will receive LinkedIn Profile URLs of active customers\n- Multiple profiles may be provided in a single request, separated by spaces and/or commas\n- When multiple profiles are provided, you will use the data enrichment tool to enrich them one after another\n- You will parse the input to correctly identify and separate each individual LinkedIn URL\n- You will maintain organized records of all profile data to ensure comprehensive analysis\n- You will track patterns and anomalies across the entire dataset\n\n## Workflow:\n1. You will receive one or more LinkedIn Profile URLs of active customers\n2. You will parse the input to identify each distinct URL, regardless of whether they're separated by spaces, commas, or both\n3. For each URL provided, you will automatically use the data enrichment tool to collect detailed information\n4. You will analyze patterns across company size, industry, job titles, technologies used, growth stage, engagement history, and other relevant parameters\n5. When asked to define the ICP, you will synthesize all available customer data to create a comprehensive profile\n6. You will present your ICP analysis with clear rationale for why certain attributes are significant\n7. You will develop a customized scoring model to evaluate new prospects against the established ICP\n8. You will write a Google search engine boolean prompt that returns linkedin profiles of people that match the job titles of this ICP \n\n## Output Format:\nFor ICP definitions, structure your output to include:\n- List of the customers that this ICP definition is based on, including linkedin URLs\n- Executive Summary: Brief overview of the ICP characteristics\n- Key Attributes: Detailed breakdown of significant traits (demographics, firmographics, technographics, etc.)\n- Weighting: Importance level of each attribute in the overall ICP\n- Exclusion Criteria: Characteristics that indicate poor fit\n- Scoring Methodology: Explanation of how prospects should be scored\n- A prompt that calculates an ICP score for new prospects\n- A google boolean search query thatwill reurn linkedin profile of people with matching job titles"
        }
      },
      "typeVersion": 1.9
    },
    {
      "id": "5fbb25a3-0ebb-433a-8920-f57953689116",
      "name": "Anthropic Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "position": [
        -440,
        400
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "claude-3-7-sonnet-20250219",
          "cachedResultName": "Claude 3.7 Sonnet"
        },
        "options": {}
      },
      "credentials": {
        "anthropicApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "681e4106-98cc-44e5-bb8e-03e6a97acfa8",
      "name": "Simple Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        -260,
        400
      ],
      "parameters": {},
      "typeVersion": 1.3
    },
    {
      "id": "c52606ed-1bab-41f1-9328-efadb123ac58",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -580,
        0
      ],
      "parameters": {
        "color": 4,
        "width": 840,
        "height": 280,
        "content": "\n## Ideal Customer Profile (ICP) Airtop Agent\n### Find your perfect customers faster.\nAirtop's AI agent defines your ICP with a few examples of your current best customers\n"
      },
      "typeVersion": 1
    },
    {
      "id": "40075d6c-0082-4cd2-90c4-9589183084d8",
      "name": "Airtop Data Enrichment",
      "type": "n8n-nodes-base.airtopTool",
      "position": [
        160,
        380
      ],
      "parameters": {
        "url": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', ``, 'string') }}",
        "prompt": "This is a LinkedIn profile. Extract the following information:\n\n- Name: The full name of the person\n- Headline: The professional headline\n- Location: The location of the person\n- Current Company: The current company the person works for\n- Current Position: The current position at the company\n- About: The about section text\n- Experience: For each position (up to 10):\n  - Company Name: The name of the company\n  - Position: The position held\n  - Duration: The time period worked at the company\n  - Location: The location of the job\n  - Description: The description of the role\n- Education: For each education entry (up to 5):\n  - Institution: The name of the educational institution\n  - Degree: The degree obtained\n  - Field of Study: The field of study\n  - Duration: The time period of education\n  - Description: Any additional information about the education\n- Skills: List of skills (up to 50)\n- Certifications: For each certification (up to 10):\n  - Name: The name of the certification\n  - Issuing Organization: The organization that issued the certification\n  - Issue Date: When the certification was issued\n  - Expiration Date: When the certification expires (if applicable)\n- Languages: List of languages and proficiency levels\n- Connections: The number of connections\n- Recommendations: The number of recommendations received",
        "resource": "extraction",
        "operation": "query",
        "profileName": "AmirLinkedin",
        "sessionMode": "new",
        "descriptionType": "manual",
        "toolDescription": "Call this Data Enrichment tool to get detailed information about a person.\nYou need to provide the Linkedin Profile URL of the person.",
        "additionalFields": {
          "outputSchema": "{\n  \"type\": \"object\",\n  \"properties\": {\n    \"name\": {\n      \"type\": \"string\",\n      \"description\": \"The full name of the person\"\n    },\n    \"headline\": {\n      \"type\": \"string\",\n      \"description\": \"The professional headline\"\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"description\": \"The location of the person\"\n    },\n    \"current_company\": {\n      \"type\": \"string\",\n      \"description\": \"The current company the person works for\"\n    },\n    \"current_position\": {\n      \"type\": \"string\",\n      \"description\": \"The current position at the company\"\n    },\n    \"about\": {\n      \"type\": \"string\",\n      \"description\": \"The about section text\"\n    },\n    \"experience\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"company_name\": {\n            \"type\": \"string\",\n            \"description\": \"The name of the company\"\n          },\n          \"position\": {\n            \"type\": \"string\",\n            \"description\": \"The position held\"\n          },\n          \"duration\": {\n            \"type\": \"string\",\n            \"description\": \"The time period worked at the company\"\n          },\n          \"location\": {\n            \"type\": \"string\",\n            \"description\": \"The location of the job\"\n          },\n          \"description\": {\n            \"type\": \"string\",\n            \"description\": \"The description of the role\"\n          }\n        },\n        \"required\": [\n          \"company_name\",\n          \"position\",\n          \"duration\",\n          \"location\",\n          \"description\"\n        ],\n        \"additionalProperties\": false\n      }\n    },\n    \"education\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"institution\": {\n            \"type\": \"string\",\n            \"description\": \"The name of the educational institution\"\n          },\n          \"degree\": {\n            \"type\": \"string\",\n            \"description\": \"The degree obtained\"\n          },\n          \"field_of_study\": {\n            \"type\": \"string\",\n            \"description\": \"The field of study\"\n          },\n          \"duration\": {\n            \"type\": \"string\",\n            \"description\": \"The time period of education\"\n          },\n          \"description\": {\n            \"type\": \"string\",\n            \"description\": \"Any additional information about the education\"\n          }\n        },\n        \"required\": [\n          \"institution\",\n          \"degree\",\n          \"field_of_study\",\n          \"duration\",\n          \"description\"\n        ],\n        \"additionalProperties\": false\n      }\n    },\n    \"skills\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"description\": \"List of skills\"\n    },\n    \"certifications\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"name\": {\n            \"type\": \"string\",\n            \"description\": \"The name of the certification\"\n          },\n          \"issuing_organization\": {\n            \"type\": \"string\",\n            \"description\": \"The organization that issued the certification\"\n          },\n          \"issue_date\": {\n            \"type\": \"string\",\n            \"description\": \"When the certification was issued\"\n          },\n          \"expiration_date\": {\n            \"type\": [\n              \"string\",\n              \"null\"\n            ],\n            \"description\": \"When the certification expires (if applicable)\"\n          }\n        },\n        \"required\": [\n          \"name\",\n          \"issuing_organization\",\n          \"issue_date\",\n          \"expiration_date\"\n        ],\n        \"additionalProperties\": false\n      }\n    },\n    \"languages\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"language\": {\n            \"type\": \"string\",\n            \"description\": \"The language\"\n          },\n          \"proficiency\": {\n            \"type\": \"string\",\n            \"description\": \"The proficiency level\"\n          }\n        },\n        \"required\": [\n          \"language\",\n          \"proficiency\"\n        ],\n        \"additionalProperties\": false\n      },\n      \"description\": \"List of languages and proficiency levels\"\n    },\n    \"connections\": {\n      \"type\": \"integer\",\n      \"description\": \"The number of connections\"\n    },\n    \"recommendations\": {\n      \"type\": \"integer\",\n      \"description\": \"The number of recommendations received\"\n    }\n  },\n  \"required\": [\n    \"name\",\n    \"headline\",\n    \"location\",\n    \"current_company\",\n    \"current_position\",\n    \"about\",\n    \"experience\",\n    \"education\",\n    \"skills\",\n    \"certifications\",\n    \"languages\",\n    \"connections\",\n    \"recommendations\"\n  ],\n  \"additionalProperties\": false,\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n}"
        }
      },
      "credentials": {
        "airtopApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "6196bb76-9dfd-49d3-8314-714692894a5b",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -100,
        320
      ],
      "parameters": {
        "width": 360,
        "height": 220,
        "content": "## IMPORTANT\n\n1. Create an [Airtop Profile here](https://portal.airtop.ai/browser-profiles) \n\n2. Connect it to Linkedin\n\n3. Enter the Profile Name here"
      },
      "typeVersion": 1
    },
    {
      "id": "fb7e43a6-91fd-4c6f-86f0-62e815eb02f1",
      "name": "Google Docs",
      "type": "n8n-nodes-base.googleDocs",
      "disabled": true,
      "position": [
        320,
        120
      ],
      "parameters": {
        "title": "=ICP Profile {{ new Date().toISOString().slice(0,16).replace('T', '_').replace(/:/g, '-') }}\n",
        "folderId": "1ACMJkcnd0F8cDNrT8a1YVLfs3fDfm3oy"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "ba12cf29-b04f-4bdc-a051-e4521a3967ff",
      "name": "Google Docs1",
      "type": "n8n-nodes-base.googleDocs",
      "disabled": true,
      "position": [
        460,
        120
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "text": "={{ $('AI Agent').item.json.output }}",
              "action": "insert"
            }
          ]
        },
        "operation": "update",
        "documentURL": "={{ $json.id }}"
      },
      "credentials": {
        "googleDocsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "67326799-cb72-4d5e-b09f-5d01f776d02f",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1460,
        -240
      ],
      "parameters": {
        "width": 840,
        "height": 1080,
        "content": "README\n# Define Your ICP from Customer LinkedIn Profiles\n## Use Case\nThis automation helps marketing and sales teams define their Ideal Customer Profile (ICP) using real LinkedIn profiles of current high-fit customers. By enriching and analyzing profile data, it generates a clear ICP definition and scoring methodology for future targeting.\n\n## What This Automation Does\nThis automation analyzes LinkedIn profiles of your existing customers and produces:\n- A structured ICP definition\n- A scoring model to evaluate future prospects\n- A Google Boolean search string to find similar prospects\n\nInput:\n- LinkedIn profile URLs of existing high-fit customers (e.g., `https://www.linkedin.com/in/maxtkacz/`)\n\nOutput:\n- A Google Doc containing the ICP analysis and scoring methodology\n\n## How It Works\n1. **Trigger**: Waits for a chat message containing one or more LinkedIn profile URLs.\n2. **AI Agent**: Parses and processes the URLs.\n3. **Airtop Data Enrichment**: Uses Airtop to extract structured information from each LinkedIn profile (e.g., job title, company, experience, skills).\n4. **Memory**: Maintains state between inputs for consistent analysis.\n5. **LLM Analysis**: Uses Claude 3.7 Sonnet to synthesize enriched data into a meaningful ICP.\n6. **Google Docs**: Automatically creates a new doc with a timestamped title and appends the ICP definition.\n\n## Setup Requirements\n1. [Airtop Profile](https://portal.airtop.ai/browser-profiles) connected to LinkedIn, Insert the profile name in the Airtop Tool\n2. Airtop API credentials\n3. If you choose to activate saving the profiles in Google Docs you will need OAuth2 credentials (or just copy the ICP definition from the chat)\n\n## Next Steps\n- **Use the ICP for Scoring**: Feed new LinkedIn profiles through the same Airtop enrichment and use the scoring function to evaluate fit.\n- **Automate Target Discovery**: Plug the Boolean search output into LinkedIn, Google, or People Data Labs for ICP-matching lead generation.\n- **Refine Continuously**: Repeat the workflow as your customer base grows or segments evolve.\n\n"
      },
      "typeVersion": 1
    }
  ],
  "active": true,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "bdd762ca-1362-4f8b-b0d6-fd3b402d4dba",
  "connections": {
    "AI Agent": {
      "main": [
        [
          {
            "node": "Google Docs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Docs": {
      "main": [
        [
          {
            "node": "Google Docs1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "AI Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "Anthropic Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Airtop Data Enrichment": {
      "ai_tool": [
        [
          {
            "node": "AI Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "When chat message received": {
      "main": [
        [
          {
            "node": "AI Agent",
            "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

This automation helps marketing and sales teams define their Ideal Customer Profile (ICP) using real LinkedIn profiles of current high-fit customers. By enriching and analyzing profile data, it generates a clear ICP definition and scoring methodology for future targeting.

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

Think Tool. Uses stickyNote, agent, googleCalendarTool, memoryBufferWindow. Chat trigger; 28 nodes.

Agent, Google Calendar Tool, Memory Buffer Window +8
AI & RAG

ModelRouter. Uses chatTrigger, agent, modelSelector, httpRequest. Chat trigger; 28 nodes.

Chat Trigger, Agent, Model Selector +8
AI & RAG

Summarize YouTube Videos & Chat About Content with GPT-4o-mini via Telegram. Uses splitOut, lmChatOpenAi, chainLlm, summarize. Chat trigger; 22 nodes.

OpenAI Chat, Chain Llm, Chat Trigger +7
AI & RAG

This n8n workflow automates the process of summarizing YouTube video transcripts and enables users to interact with the content through AI-powered question answering via Telegram. It leverages the GPT

OpenAI Chat, Chain Llm, Chat Trigger +7
AI & RAG

🤖🧠 AI Agent Chatbot + LONG TERM Memory + Note Storage + Telegram. Uses chatTrigger, stickyNote, lmChatOpenAi, memoryBufferWindow. Chat trigger; 21 nodes.

Chat Trigger, OpenAI Chat, Memory Buffer Window +4