{
  "id": "PVXqzQSEj2gjd7W4",
  "name": "LinkedIn Profile Evaluator",
  "tags": [],
  "nodes": [
    {
      "id": "05c43f9b-1682-4360-a2a9-309d49e9784d",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        32
      ],
      "parameters": {
        "width": 480,
        "height": 912,
        "content": "## LinkedIn Profile Evaluator\n\n### How it works\n\nThis workflow evaluates a LinkedIn profile submitted through a form. It prepares the required API keys and profile URL, sends the URL to Apify to retrieve profile data, then uses a Groq-powered AI chain to analyze the profile. The final evaluation is displayed back to the user.\n\n### Setup steps\n\n- Configure the form trigger to collect the LinkedIn profile URL from the user.\n- Add valid Apify and Groq API keys in the Prepare API Keys node or replace them with secure n8n credentials/environment variables.\n- Verify the Apify HTTP request URL, actor, request method, and payload match the LinkedIn scraping actor you intend to use.\n- Configure the Groq chat model credentials and model settings for the AI analysis node.\n\n### Customization\n\nYou can adjust the AI prompt or Groq model to change the evaluation criteria, such as focusing on recruiting appeal, sales prospecting quality, personal branding, or profile completeness."
      },
      "typeVersion": 1
    },
    {
      "id": "592ae68b-fcf1-4983-953c-3738d74b419f",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        560,
        32
      ],
      "parameters": {
        "color": 7,
        "width": 416,
        "height": 336,
        "content": "## Collect profile input\n\nStarts the workflow when the user submits the form, then prepares the Apify API key, Groq API key, and submitted LinkedIn profile URL for downstream steps."
      },
      "typeVersion": 1
    },
    {
      "id": "a462f612-531a-40e8-ade9-b4d51610f982",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1008,
        32
      ],
      "parameters": {
        "color": 7,
        "height": 336,
        "content": "## Fetch LinkedIn data\n\nSends the prepared LinkedIn profile URL to the Apify API to retrieve profile data for evaluation."
      },
      "typeVersion": 1
    },
    {
      "id": "069bf3ac-3b06-4056-8809-73a874998beb",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1280,
        32
      ],
      "parameters": {
        "color": 7,
        "width": 352,
        "height": 544,
        "content": "## Analyze profile with AI\n\nUses an LLM chain backed by the Groq chat model to analyze the fetched LinkedIn profile data and generate an evaluation."
      },
      "typeVersion": 1
    },
    {
      "id": "2aa568e4-3f07-4e5c-afd4-4af2407562a8",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1664,
        0
      ],
      "parameters": {
        "color": 7,
        "height": 384,
        "content": "## Display evaluation result\n\nShows the generated LinkedIn profile evaluation back to the user in a form-style output step."
      },
      "typeVersion": 1
    },
    {
      "id": "32ee03c0-fd59-406b-94d4-85031300fa63",
      "name": "When Profile Form Submitted",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        608,
        208
      ],
      "parameters": {
        "options": {
          "buttonLabel": "Evaluate Profile"
        },
        "formTitle": "LinkedIn Profile Evaluator",
        "formFields": {
          "values": [
            {
              "fieldLabel": "LinkedIn Profile URL",
              "placeholder": "https://www.linkedin.com/in/example",
              "requiredField": true
            }
          ]
        },
        "formDescription": "Paste a public LinkedIn profile URL to get an AI-generated evaluation."
      },
      "typeVersion": 2.2
    },
    {
      "id": "0af9c56a-fda0-42e5-830a-a976bfe3a031",
      "name": "Set API Keys and Profile URL",
      "type": "n8n-nodes-base.set",
      "position": [
        832,
        208
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "22222222-2222-4222-8222-222222222222",
              "name": "apifyApiKey",
              "type": "string",
              "value": "YOUR_APIFY_API_KEY_HERE"
            },
            {
              "id": "33333333-3333-4333-8333-333333333333",
              "name": "groqApiKey",
              "type": "string",
              "value": "YOUR_GROQ_API_KEY_HERE"
            },
            {
              "id": "44444444-4444-4444-8444-444444444444",
              "name": "profileUrl",
              "type": "string",
              "value": "={{ $json['LinkedIn Profile URL'] }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "37f88f2c-03d9-4ca5-9331-e6f011b4a0d3",
      "name": "Submit Profile to Apify",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1056,
        208
      ],
      "parameters": {
        "url": "=https://api.apify.com/v2/acts/harvestapi~linkedin-profile-scraper/run-sync-get-dataset-items?token={{ $json.apifyApiKey }}",
        "method": "POST",
        "options": {
          "timeout": 60000
        },
        "jsonBody": "={{ JSON.stringify({ urls: [$json.profileUrl] }) }}",
        "sendBody": true,
        "specifyBody": "json"
      },
      "typeVersion": 4.2
    },
    {
      "id": "6e71fcd2-cb6d-4342-90bd-a14842d31290",
      "name": "AI Profile Analysis",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        1328,
        208
      ],
      "parameters": {
        "text": "=You are an expert LinkedIn profile reviewer (recruiter + personal branding consultant). Evaluate the following LinkedIn profile data and return your evaluation as clean HTML using <h2> for section titles and <p>/<ul><li> for content. Do not include <html>, <head>, or <body> tags \u2014 just the inner content fragment.\n\nStructure your evaluation into these sections, in this order:\n<h2>Overall Summary</h2> \u2014 2-3 sentence high-level impression.\n<h2>Headline & About Section</h2> \u2014 quality and clarity assessment.\n<h2>Experience</h2> \u2014 strength and relevance of work history.\n<h2>Education</h2> \u2014 relevance and presentation.\n<h2>Skills</h2> \u2014 strengths and notable gaps.\n<h2>Overall Score</h2> \u2014 give a score out of 10 with one sentence justification.\n<h2>Top 3 Recommendations</h2> \u2014 actionable improvements, as a bullet list.\n\nIf the profile data is empty or scraping failed, say clearly that the profile could not be found or is private, and suggest checking the URL.\n\nProfile data (raw JSON):\n{{ JSON.stringify($json, null, 2) }}",
        "promptType": "define"
      },
      "typeVersion": 1.5
    },
    {
      "id": "3584f523-9b57-43c9-bdf1-15f717a884c6",
      "name": "Initialize Groq Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGroq",
      "position": [
        1376,
        432
      ],
      "parameters": {
        "model": "meta-llama/llama-4-scout-17b-16e-instruct",
        "options": {}
      },
      "credentials": {
        "groqApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "368826e1-aa1d-4fdc-b824-e5d6a45237a3",
      "name": "Show Profile Evaluation Results",
      "type": "n8n-nodes-base.form",
      "position": [
        1712,
        208
      ],
      "parameters": {
        "options": {
          "customCss": ":root {\n\t--font-family: 'Open Sans', sans-serif;\n\t--font-weight-normal: 400;\n\t--font-weight-bold: 600;\n\t--font-size-body: 12px;\n\t--font-size-label: 14px;\n\t--font-size-test-notice: 12px;\n\t--font-size-input: 14px;\n\t--font-size-header: 20px;\n\t--font-size-paragraph: 14px;\n\t--font-size-link: 12px;\n\t--font-size-error: 12px;\n\t--font-size-html-h1: 28px;\n\t--font-size-html-h2: 20px;\n\t--font-size-html-h3: 16px;\n\t--font-size-html-h4: 14px;\n\t--font-size-html-h5: 12px;\n\t--font-size-html-h6: 10px;\n\t--font-size-subheader: 14px;\n\n\t/* Colors */\n\t--color-background: #fbfcfe;\n\t--color-test-notice-text: #e6a23d;\n\t--color-test-notice-bg: #fefaf6;\n\t--color-test-notice-border: #f6dcb7;\n\t--color-card-bg: #ffffff;\n\t--color-card-border: #dbdfe7;\n\t--color-card-shadow: rgba(99, 77, 255, 0.06);\n\t--color-link: #7e8186;\n\t--color-header: #525356;\n\t--color-label: #555555;\n\t--color-input-border: #dbdfe7;\n\t--color-input-text: #71747A;\n\t--color-focus-border: rgb(90, 76, 194);\n\t--color-submit-btn-bg: #ff6d5a;\n\t--color-submit-btn-text: #ffffff;\n\t--color-error: #ea1f30;\n\t--color-required: #ff6d5a;\n\t--color-clear-button-bg: #7e8186;\n\t--color-html-text: #555;\n\t--color-html-link: #ff6d5a;\n\t--color-header-subtext: #7e8186;\n\n\t/* Border Radii */\n\t--border-radius-card: 8px;\n\t--border-radius-input: 6px;\n\t--border-radius-clear-btn: 50%;\n\t--card-border-radius: 8px;\n\n\t/* Spacing */\n\t--padding-container-top: 24px;\n\t--padding-card: 24px;\n\t--padding-test-notice-vertical: 12px;\n\t--padding-test-notice-horizontal: 24px;\n\t--margin-bottom-card: 16px;\n\t--padding-form-input: 12px;\n\t--card-padding: 24px;\n\t--card-margin-bottom: 16px;\n\n\t/* Dimensions */\n\t--container-width: 448px;\n\t--submit-btn-height: 48px;\n\t--checkbox-size: 18px;\n\n\t/* Others */\n\t--box-shadow-card: 0px 4px 16px 0px var(--color-card-shadow);\n\t--opacity-placeholder: 0.5;\n}",
          "formTitle": "Profile Evaluation Results"
        },
        "operation": "completion",
        "completionTitle": "Profile Evaluation Results",
        "completionMessage": "={{ $json.text }}"
      },
      "typeVersion": 1
    },
    {
      "id": "7d5f1fe0-7461-4c9a-b3b2-74cc31277bd7",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        576,
        416
      ],
      "parameters": {
        "width": 672,
        "height": 512,
        "content": "# This is a demo showing how to use the workflow in development mode, from entering a LinkedIn profile link to viewing a detailed evaluation broken down into sections, along with an attached score\n\n@[youtube](fboaQrR2o8w)\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "executionOrder": "v1"
  },
  "versionId": "29a4cf7f-1081-433a-a770-46475b26ede5",
  "nodeGroups": [],
  "connections": {
    "AI Profile Analysis": {
      "main": [
        [
          {
            "node": "Show Profile Evaluation Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Submit Profile to Apify": {
      "main": [
        [
          {
            "node": "AI Profile Analysis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Initialize Groq Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Profile Analysis",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "When Profile Form Submitted": {
      "main": [
        [
          {
            "node": "Set API Keys and Profile URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set API Keys and Profile URL": {
      "main": [
        [
          {
            "node": "Submit Profile to Apify",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}