{
  "name": "Find and add lookalike influencers to HubSpot with influencers.club and GPT-4o-mini",
  "nodes": [
    {
      "id": "d1c4d36e-79fb-4876-8d57-84a514b96fd3",
      "name": "📋 OVERVIEW",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -160,
        1232
      ],
      "parameters": {
        "width": 600,
        "height": 568,
        "content": "#  HubSpot → Lookalike Creator Discovery\n\n**How it works** When a contact is created in HubSpot, this pipeline checks if they're a creator, finds similar creators via the influencers.club API, enriche"
      }
    },
    {
      "id": "0647f8b5-0314-46bd-9731-c1576e276ef8",
      "name": "Note: Trigger",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        480,
        1360
      ],
      "parameters": {
        "width": 200,
        "height": 442,
        "content": "##  HubSpot Trigger\nFires on `contact.creation`. Outputs `contactId` for the next node.\n\nAdd `contact.propertyChange` in HubSpot app settings to also catch updates."
      }
    },
    {
      "id": "101be7b1-471f-433d-8089-91f1362cfb36",
      "name": "Note: Get Contact",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        768,
        1360
      ],
      "parameters": {
        "width": 216,
        "height": 442,
        "content": "##  Get Contact by ID\nFetches `firstname`, `company`, `hs_full_name_or_email` from HubSpot using `contactId`.\n\n Add more properties to `propertiesCollection` if your CRM has custom creator fields."
      }
    },
    {
      "id": "8c416418-b1c9-4bcd-85f3-39bd1cb644c2",
      "name": "Note: Extract Email",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1040,
        1360
      ],
      "parameters": {
        "width": 200,
        "height": 442,
        "content": "##  Extract Email\nMaps HubSpot fields into clean `Email` and `Company Name` variables.\n"
      }
    },
    {
      "id": "0f815d99-c44b-4855-8606-2a038f44e072",
      "name": "Note: Enrich by Email",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1296,
        1248
      ],
      "parameters": {
        "width": 216,
        "height": 414,
        "content": "##  Enrich by Email\nPOSTs email to influencers.club and returns a full main profile info.\n\n Error → Stop and Error node."
      }
    },
    {
      "id": "b3279d61-a380-4e30-8646-ee3087e83a95",
      "name": "Note: Stop and Error",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1296,
        1680
      ],
      "parameters": {
        "width": 206,
        "height": 348,
        "content": "##  Stop and Error\nTriggered when enrichment fails or returns no creator. Halts execution with a logged error message."
      }
    },
    {
      "id": "2535f18d-8add-4ae5-a961-da92f7b40170",
      "name": "Note: Normalize Seed",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1552,
        1104
      ],
      "parameters": {
        "width": 210,
        "height": 552,
        "content": "##  Normalize (Code in JS)\nDetects `main_platform` by comparing follower counts across all platform blocks. Computes `follower_tier`, `engagement_tier`, `growth_trend`. Strips CloudFront URL signing p"
      }
    },
    {
      "id": "4c97fb61-7f2b-4cad-a41a-d9f97a805131",
      "name": "Note: Filter",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1792,
        1104
      ],
      "parameters": {
        "width": 190,
        "height": 544,
        "content": "##  Filter — Is Creator?\nChecks `is_creator === true`. Only real creators proceed.\n\n**Port 0** → Lookalike API \n**Port 1** → dead end, dropped silently "
      }
    },
    {
      "id": "143bc619-8c10-4b3d-b7e7-8840054a748b",
      "name": "Note: Lookalike API",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2016,
        1104
      ],
      "parameters": {
        "width": 392,
        "height": 542,
        "content": "##  Lookalike API\nFinds similar creators using `main_platform` + `handle`. Returns up to 5 accounts.\n\n Adjust `paging.limit` (max ~50) or add filters: `engagement_percent.min`, `number_of_followers`, "
      }
    },
    {
      "id": "463f103b-c8b7-49c2-bdaf-077315d2308d",
      "name": "Note: Loop",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2448,
        1104
      ],
      "parameters": {
        "width": 190,
        "height": 544,
        "content": "##  Loop Over Items\nProcesses one lookalike at a time to avoid API rate limits.\n\n**Port 0** → all done, exits loop\n**Port 1** → next item → Enrichment API"
      }
    },
    {
      "id": "efa995d5-d67a-4247-9b8a-74fea9430c43",
      "name": "Note: AI Agent",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3184,
        1120
      ],
      "parameters": {
        "width": 370,
        "height": 690,
        "content": "##  AI Agent\nGPT-4o-mini analyzes the profile and returns structured JSON: summary, strengths, concerns, audience authenticity, growth trajectory, niche clarity, brand fit, recommended action, and est"
      }
    },
    {
      "id": "1568debf-2a3d-465f-af1b-c0c191cd38b5",
      "name": "Note: HubSpot Out",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3616,
        1120
      ],
      "parameters": {
        "width": 210,
        "height": 692,
        "content": "##  HubSpot Upsert\nCreates or updates the lookalike as a HubSpot contact using their enriched email.\n\n Map `recommended_action`, `brand_fit`, and `estimated_reach_per_post` to custom HubSpot propertie"
      }
    },
    {
      "id": "e9a4aab9-fe47-4ca5-8bbd-6f9bcefb7bab",
      "name": "Stop and Error",
      "type": "n8n-nodes-base.stopAndError",
      "position": [
        1344,
        1840
      ]
    },
    {
      "id": "111cf880-1d0a-4327-bffd-13c3f98d9420",
      "name": "OpenAI Model (Lookalike)1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        3200,
        1712
      ]
    },
    {
      "id": "e2f24be3-9aef-4970-b98e-b6edf1f77562",
      "name": "Structured Output Parser (Lookalike)1",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        3456,
        1712
      ]
    },
    {
      "id": "7194259e-6ac6-42ba-a445-70cc7de5f6f2",
      "name": "Note: Enrich Lookalike1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2704,
        1104
      ],
      "parameters": {
        "width": 424,
        "height": 538,
        "content": "##  Enrich Lookalike\nFetches full profile per lookalike: post data, audience, income, connected platforms.\n\n Error output suppressed — failed enrichments skip silently so the loop continues."
      }
    },
    {
      "id": "63f881e0-5adc-4b9b-8b1d-1d77c9a1c5b8",
      "name": "HubSpot Trigger",
      "type": "n8n-nodes-base.hubspotTrigger",
      "position": [
        528,
        1648
      ]
    },
    {
      "id": "016d7e62-a2d7-4ba9-9f9e-998eec74648a",
      "name": "Get Contact by ID",
      "type": "n8n-nodes-base.hubspot",
      "position": [
        832,
        1648
      ]
    },
    {
      "id": "e35885d7-64d4-412b-89b3-21d460bd39e9",
      "name": "Extract Email",
      "type": "n8n-nodes-base.set",
      "position": [
        1088,
        1648
      ]
    },
    {
      "id": "2235d40b-0612-4a15-a6f4-38d5022ad0ed",
      "name": "Normalize",
      "type": "n8n-nodes-base.code",
      "position": [
        1616,
        1472
      ]
    },
    {
      "id": "4564d50a-7773-4049-a032-8d1324b47bc7",
      "name": "Filter - Is Creator?",
      "type": "n8n-nodes-base.if",
      "position": [
        1840,
        1472
      ]
    },
    {
      "id": "72e1331d-6e7a-4167-a158-4289af48e1bf",
      "name": "Loop Over Items (Lookalike)",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        2512,
        1456
      ]
    },
    {
      "id": "9b7ba1b6-8a14-40db-a12c-15200566cf2b",
      "name": "Normalize Profile (Lookalike)",
      "type": "n8n-nodes-base.code",
      "position": [
        2992,
        1456
      ]
    },
    {
      "id": "946fa69c-5f24-4c02-9fa4-e14fc23756ca",
      "name": "AI Agent (Lookalike)",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        3264,
        1456
      ]
    },
    {
      "id": "8e8da4f7-704a-4432-bf46-d13436963325",
      "name": "HubSpot — Lookalike Creator",
      "type": "n8n-nodes-base.hubspot",
      "position": [
        3680,
        1456
      ]
    },
    {
      "id": "330f7dcb-4cf1-4f5f-b87f-d6ff47a29809",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1552,
        688
      ],
      "parameters": {
        "width": 752,
        "height": null,
        "content": "## Find similar creators to your top performers and boost your brand visibility\n**Step by step workflow to discover lookalike creators with multi social (Instagram, Tiktok, Youtube, Twitter, Onlyfans,"
      }
    },
    {
      "id": "ec6d791c-a379-41ac-af84-fc71ea2affc0",
      "name": "Enrich by Email",
      "type": "n8n-nodes-influencersclub.influencersClub",
      "position": [
        1360,
        1488
      ]
    },
    {
      "id": "4bac64d4-7688-46b7-b87f-77d630c074a8",
      "name": "Find Similar Creators",
      "type": "n8n-nodes-influencersclub.influencersClub",
      "position": [
        2080,
        1456
      ]
    },
    {
      "id": "8cd8d225-53e5-4e69-bd3b-d26d8e02de1c",
      "name": "Enrich by Handle (Full)",
      "type": "n8n-nodes-influencersclub.influencersClub",
      "position": [
        2752,
        1472
      ]
    },
    {
      "id": "098c57ea-8a56-417c-85a4-5e332b7ca20b",
      "name": "Split Out",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        2288,
        1456
      ]
    }
  ],
  "connections": {
    "Normalize": {
      "main": [
        [
          {
            "node": "Filter - Is Creator?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Loop Over Items (Lookalike)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Email": {
      "main": [
        [
          {
            "node": "Enrich by Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Enrich by Email": {
      "main": [
        [
          {
            "node": "Normalize",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Stop and Error",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HubSpot Trigger": {
      "main": [
        [
          {
            "node": "Get Contact by ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Contact by ID": {
      "main": [
        [
          {
            "node": "Extract Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent (Lookalike)": {
      "main": [
        [
          {
            "node": "HubSpot — Lookalike Creator",
            "type": "main",
            "index": 0
          },
          {
            "node": "Loop Over Items (Lookalike)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter - Is Creator?": {
      "main": [
        [
          {
            "node": "Find Similar Creators",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Find Similar Creators": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Enrich by Handle (Full)": {
      "main": [
        [
          {
            "node": "Normalize Profile (Lookalike)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Model (Lookalike)1": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent (Lookalike)",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items (Lookalike)": {
      "main": [
        [],
        [
          {
            "node": "Enrich by Handle (Full)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Normalize Profile (Lookalike)": {
      "main": [
        [
          {
            "node": "AI Agent (Lookalike)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser (Lookalike)1": {
      "ai_outputParser": [
        [
          {
            "node": "AI Agent (Lookalike)",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    }
  }
}