AutomationFlowsSocial Media › Score Person Icp (ideal Customer Profile) with Airtop

Score Person Icp (ideal Customer Profile) with Airtop

ByAirtop @cesar-at-airtop on n8n.io

This automation scores individual LinkedIn profiles against your Ideal Customer Profile (ICP) based on interest in AI, technical depth, and seniority level. It's ideal for prioritizing leads and understanding how well a person fits your ICP criteria.

Event trigger★★★☆☆ complexity8 nodesAirtopForm TriggerExecute Workflow Trigger
Social Media Trigger: Event Nodes: 8 Complexity: ★★★☆☆ Added:

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

This workflow follows the Execute Workflow Trigger → Form 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": "io8TtPZaVjpZaVrf",
  "meta": {
    "templateId": "3476"
  },
  "name": "Person ICP Scoring with Linkedin",
  "tags": [],
  "nodes": [
    {
      "id": "09f71a7c-1219-426d-8563-fa05654cab44",
      "name": "Calculate ICP PersonScoring",
      "type": "n8n-nodes-base.airtop",
      "maxTries": 2,
      "position": [
        820,
        240
      ],
      "parameters": {
        "url": "={{ $json.Linkedi_URL }}",
        "prompt": "Please extract the following information from the LinkedIn profile page:\n\n1. **Full Name**: Extract the full name of the individual.\n2. **Current or Most Recent Job Title**: Identify the job title next to the logo of the current or last employer.\n3a. **Current or Most Recent Employer**: Extract the name of the first company in the employment experience block. \n3b. Linkedin Company URL of the Current or Most Recent Employer: Extract the link of the first company in the employment experience block\n4. **Location**: Extract the location of the individual.\n5. **Number of Connections**: Extract the number of connections the individual has.\n6. **Number of Followers**: Extract the number of followers the individual has.\n7. **About Section Text**: Extract the text from the 'About' section.\n8. **Interest Level in AI**: Determine the person's interest level in AI (e.g., beginner, intermediate, advanced, expert).\n9. **Seniority Level**: Determine the seniority level of the person (e.g., junior, mid-level, senior, executive).\n10. **Technical Depth**: Determine the technical depth of the person (e.g., basic, intermediate, advanced, expert).\n11. **ICP Score**: Calculate the ICP Score based on the following criteria:\n    - AI Interest: beginner-5 pts, intermediate-10 pts, advanced-25 pts, expert-35 pts\n    - Technical Depth: basic-5 pts, intermediate-15 pts, advanced-25 pts, expert-35 pts\n    - Seniority Level: junior-5 pts, mid-level-15 pts, senior-25 pts, executive-30 pts\n    - Sum the points to get the ICP Score.\n\nEnsure that the extracted information is accurate and formatted according to the specified output schema.\n\nFor example, if the LinkedIn profile is of a senior software engineer with a strong interest in AI, return the following output:\n{\n  \"full_name\": \"Jane Doe\",\n  \"current_or_last_employer\": \"Tech Innovations Inc.\",\n  \"current_or_last_title\": \"Senior Software Engineer\",\n  \"location\": \"San Francisco, CA\",\n  \"number_of_connections\": 500,\n  \"number_of_followers\": 300,\n  \"about_section_text\": \"Experienced software engineer with a passion for developing innovative programs that expedite the efficiency and effectiveness of organizational success.\",\n  \"ai_interest_level\": \"advanced\",\n  \"seniority_level\": \"senior\",\n  \"technical_depth\": \"advanced\",\n  \"icp_score\": 85\n}\n",
        "resource": "extraction",
        "operation": "query",
        "profileName": "={{ $json.Airtop_profile }}",
        "sessionMode": "new",
        "additionalFields": {
          "outputSchema": "{\n  \"type\": \"object\",\n  \"properties\": {\n    \"full_name\": {\n      \"type\": \"string\",\n      \"description\": \"The full name of the individual.\"\n    },\n    \"current_or_last_title\": {\n      \"type\": \"string\",\n      \"description\": \"The job title next to the logo of the current or last employer.\"\n    },\n    \"current_or_last_employer\": {\n      \"type\": \"string\",\n      \"description\": \"The name of the first company in the employment experience block.\"\n    },\n    \"linkedin_company_url\": {\n      \"type\": \"string\",\n      \"description\": \"The LinkedIn URL of the first company in the employment experience block.\"\n    },\n    \"location\": {\n      \"type\": \"string\",\n      \"description\": \"The location of the individual.\"\n    },\n    \"number_of_connections\": {\n      \"type\": \"integer\",\n      \"description\": \"The number of connections the individual has.\"\n    },\n    \"number_of_followers\": {\n      \"type\": \"integer\",\n      \"description\": \"The number of followers the individual has.\"\n    },\n    \"about_section_text\": {\n      \"type\": \"string\",\n      \"description\": \"The text from the 'About' section.\"\n    },\n    \"ai_interest_level\": {\n      \"type\": \"string\",\n      \"description\": \"The person's interest level in AI.\"\n    },\n    \"seniority_level\": {\n      \"type\": \"string\",\n      \"description\": \"The seniority level of the person.\"\n    },\n    \"technical_depth\": {\n      \"type\": \"string\",\n      \"description\": \"The technical depth of the person.\"\n    },\n    \"icp_score\": {\n      \"type\": \"integer\",\n      \"description\": \"The ICP Score calculated based on AI interest, technical depth, and seniority level.\"\n    }\n  },\n  \"required\": [\n    \"full_name\",\n    \"current_or_last_title\",\n    \"current_or_last_employer\",\n    \"linkedin_company_url\",\n    \"location\",\n    \"number_of_connections\",\n    \"number_of_followers\",\n    \"about_section_text\",\n    \"ai_interest_level\",\n    \"seniority_level\",\n    \"technical_depth\",\n    \"icp_score\"\n  ],\n  \"additionalProperties\": false,\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\"\n}\n"
        }
      },
      "credentials": {
        "airtopApi": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 1
    },
    {
      "id": "20c325b8-3376-429f-9330-e1c817347be6",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        360,
        140
      ],
      "parameters": {
        "options": {},
        "formTitle": "ICP Scoring",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Linkedin Person Profile URL",
              "requiredField": true
            },
            {
              "fieldLabel": "Airtop Profile (connected to Linkedin)",
              "requiredField": true
            }
          ]
        },
        "formDescription": "This automation takes person's Linkedin Profile URL and Airtop Profile (authenticated for Linkedin) and returns the person's ICP score\n"
      },
      "typeVersion": 2.2
    },
    {
      "id": "d5fb3515-eea6-490d-ac7c-293353522eed",
      "name": "When Executed by Another Workflow",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        360,
        340
      ],
      "parameters": {
        "workflowInputs": {
          "values": [
            {
              "name": "Linkedin_URL"
            },
            {
              "name": "Airtop_profile"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "4b25a869-d634-4039-9ae8-945c34627c99",
      "name": "Parameters",
      "type": "n8n-nodes-base.set",
      "position": [
        580,
        240
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "e612bf63-72bd-4b61-82c9-786a90b58b7b",
              "name": "Linkedi_URL",
              "type": "string",
              "value": "={{ $json[\"Linkedin Person Profile URL\"] || $json.Linkedin_URL }}"
            },
            {
              "id": "567e5e7d-4efd-4d0a-a93c-6c7aed02c305",
              "name": "Airtop_profile",
              "type": "string",
              "value": "={{ $json[\"Airtop Profile (connected to Linkedin)\"] || $json.Airtop_profile }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "e7d51b90-6f5c-4b7b-aabd-c58a99e2f36b",
      "name": "Edit Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        1040,
        240
      ],
      "parameters": {
        "mode": "raw",
        "options": {},
        "jsonOutput": "={{ $json.data.modelResponse }}"
      },
      "typeVersion": 3.4
    },
    {
      "id": "c6812743-0426-40f9-a6b6-3d3c1c47165b",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        320,
        0
      ],
      "parameters": {
        "width": 440,
        "height": 540,
        "content": "## Input parameters\n* Linkedin Person Profile URL\n* Airtop profile "
      },
      "typeVersion": 1
    },
    {
      "id": "1c30b319-33ed-4ad9-9df9-80066ecb8403",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        780,
        0
      ],
      "parameters": {
        "color": 5,
        "width": 440,
        "height": 540,
        "content": "## Calculate ICP"
      },
      "typeVersion": 1
    },
    {
      "id": "6f57f945-5530-4cca-8bad-b9714825365b",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -640,
        -280
      ],
      "parameters": {
        "width": 860,
        "height": 1140,
        "content": "README\n# Scoring LinkedIn Profiles Against Your ICP\n## Use Case\nThis automation scores individual LinkedIn profiles against your Ideal Customer Profile (ICP) based on interest in AI, technical depth, and seniority level. It's ideal for prioritizing leads and understanding how well a person fits your ICP criteria.\n\n## What This Automation Does\nGiven a LinkedIn profile and an Airtop profile, it:\n- Extracts relevant data from the person's profile\n- Determines levels of AI interest, seniority, and technical depth\n- Calculates an ICP score based on weighted criteria\n- Returns the full enriched profile with the score\n\n## Input parameters:\n- **LinkedIn Profile URL** (e.g., `https://linkedin.com/in/janedoe`)\n- **Airtop Profile** connected to LinkedIn\n- **ICP scoring method** in the Airtop node prompt\n\n## Output fields in JSON format:\n- Full name, job title, employer, company LinkedIn URL, location, number of connections and followers, about section content and more\n- Calculated ICP Score (out of 95)\n\n## How It Works\n1. **Form Trigger or Workflow Trigger**: Accepts input from either a form or another workflow.\n2. **Parameter Assignment**: Ensures proper variable names for downstream nodes.\n3. **Airtop Enrichment Tool**: Extracts and scores the person based on a detailed prompt.\n4. **Scoring**: Uses this point system:\n   - AI Interest: beginner (5), intermediate (10), advanced (25), expert (35)\n   - Technical Depth: basic (5), intermediate (15), advanced (25), expert (35)\n   - Seniority Level: junior (5), mid-level (15), senior (25), executive (30)\n5. **Output Formatting**: Cleans and returns the result as JSON.\n\n## Setup Requirements\n1. IMPORTANT: Enter your ICP scoring method in the prompt field of the Airtop node \n2. [Airtop Profile](https://portal.airtop.ai/browser-profiles) connected to LinkedIn.\n3. Airtop API credentials configured in n8n.\n4. Optional: a front-end form to collect profile URLs and trigger the automation.\n\n## Next Steps\n- **Embed in CRM**: Trigger this automation on new leads to auto-score them.\n- **Batch Process Leads**: Run it over a list of profile URLs for segmentation.\n- **Customize Scoring**: Adjust point weights based on your sales priorities.\n"
      },
      "typeVersion": 1
    }
  ],
  "active": true,
  "settings": {},
  "versionId": "ce7b4df3-b1c6-4041-ad33-357c0efa9b38",
  "connections": {
    "Parameters": {
      "main": [
        [
          {
            "node": "Calculate ICP PersonScoring",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        [
          {
            "node": "Parameters",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Calculate ICP PersonScoring": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When Executed by Another Workflow": {
      "main": [
        [
          {
            "node": "Parameters",
            "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 scores individual LinkedIn profiles against your Ideal Customer Profile (ICP) based on interest in AI, technical depth, and seniority level. It's ideal for prioritizing leads and understanding how well a person fits your ICP criteria.

Source: https://n8n.io/workflows/4258/ — original creator credit. Request a take-down →

More Social Media workflows → · Browse all categories →

Related workflows

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

Social Media

Automatically sending LinkedIn connection requests to prospects can significantly streamline your outreach process. This automation ensures you only send requests to users you're not already connected

Form Trigger, Execute Workflow Trigger, Airtop
Social Media

Finding the official LinkedIn page of a company is crucial for tasks like outreach, research, or enrichment. This automation streamlines the process by intelligently searching the company’s website an

Form Trigger, Execute Workflow Trigger, Airtop
Social Media

Accurately identifying and verifying a person’s LinkedIn profile is essential for prospecting, recruiting, or contact enrichment. This automation ensures high accuracy by combining search logic with o

Form Trigger, Execute Workflow Trigger, Airtop
Social Media

This automation verifies that a given LinkedIn URL actually belongs to a company by comparing the website listed on their LinkedIn page against the expected company domain. It is essential for ensurin

Form Trigger, Execute Workflow Trigger, Airtop
Social Media

This automation is designed to extract key engagement metrics and audience data from a LinkedIn post. It's useful for analyzing the impact of content and identifying engaged users for lead generation,

Airtop, Execute Workflow Trigger, Form Trigger