{"workflow":{"id":13514,"name":"Find and add lookalike influencers to HubSpot with influencers.club and GPT-4o-mini","views":23,"recentViews":0,"totalViews":23,"createdAt":"2026-02-19T12:42:51.153Z","description":"How it works:\n\nFind lookalikes to other creators and add to your CRM for influencer outreach and partnerships.\n\nStep by step workflow to discover similar creators to your best performers with multi social (Instagram, Tiktok, Youtube, Twitter, Onlyfans, Twitch and more) profiles, analytics and metrics using the influencers.club API, and add the contact records and data in Hubspot\n\nSet up:\n\nHubspot (can be swapped for any CRM like Salesforce or Google Sheet)\nInfluencers.club API key","workflow":{"id":"XJMLz8j7z4G2GMWI","meta":{"instanceId":"85adf2a35c28eb4259098779e620f01802fefc169e5e72d95fa3a1fcdca8b513","templateCredsSetupCompleted":true},"name":"Find and add similar creators to Hubspot based on top performers","tags":[],"nodes":[{"id":"d1c4d36e-79fb-4876-8d57-84a514b96fd3","name":"📋 OVERVIEW","type":"n8n-nodes-base.stickyNote","position":[-160,1232],"parameters":{"color":4,"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, enriches and AI-analyzes each one, then pushes qualified lookalikes back into HubSpot.\n\n**Flow:** Trigger → Fetch contact → Extract email → Enrich → Detect platform → Filter creators → Lookalike API → Loop each result → Enrich → Normalize → AI analysis → HubSpot upsert\n\n**Platform detection:** `main_platform` is auto-detected by comparing follower counts across TikTok / Instagram / YouTube / Twitter — the highest audience wins. Non-creators are silently dropped at the Filter node.\n\n**Set up required**\n- HubSpot Developer App (trigger)\n- HubSpot App Token (read + write)\n- influencers.club API key\n- OpenAI API key"},"typeVersion":1},{"id":"0647f8b5-0314-46bd-9731-c1576e276ef8","name":"Note: Trigger","type":"n8n-nodes-base.stickyNote","position":[480,1360],"parameters":{"color":3,"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."},"typeVersion":1},{"id":"101be7b1-471f-433d-8089-91f1362cfb36","name":"Note: Get Contact","type":"n8n-nodes-base.stickyNote","position":[768,1360],"parameters":{"color":3,"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."},"typeVersion":1},{"id":"8c416418-b1c9-4bcd-85f3-39bd1cb644c2","name":"Note: Extract Email","type":"n8n-nodes-base.stickyNote","position":[1040,1360],"parameters":{"color":3,"width":200,"height":442,"content":"##  Extract Email\nMaps HubSpot fields into clean `Email` and `Company Name` variables.\n"},"typeVersion":1},{"id":"0f815d99-c44b-4855-8606-2a038f44e072","name":"Note: Enrich by Email","type":"n8n-nodes-base.stickyNote","position":[1296,1248],"parameters":{"color":6,"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."},"typeVersion":1},{"id":"b3279d61-a380-4e30-8646-ee3087e83a95","name":"Note: Stop and Error","type":"n8n-nodes-base.stickyNote","position":[1296,1680],"parameters":{"color":7,"width":206,"height":348,"content":"##  Stop and Error\nTriggered when enrichment fails or returns no creator. Halts execution with a logged error message."},"typeVersion":1},{"id":"2535f18d-8add-4ae5-a961-da92f7b40170","name":"Note: Normalize Seed","type":"n8n-nodes-base.stickyNote","position":[1552,1104],"parameters":{"color":7,"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 params.\n\nOutputs a flat clean object for the filter and lookalike nodes."},"typeVersion":1},{"id":"4c97fb61-7f2b-4cad-a41a-d9f97a805131","name":"Note: Filter","type":"n8n-nodes-base.stickyNote","position":[1792,1104],"parameters":{"color":7,"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 "},"typeVersion":1},{"id":"143bc619-8c10-4b3d-b7e7-8840054a748b","name":"Note: Lookalike API","type":"n8n-nodes-base.stickyNote","position":[2016,1104],"parameters":{"color":6,"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`, `has_done_brand_deals: true`."},"typeVersion":1},{"id":"463f103b-c8b7-49c2-bdaf-077315d2308d","name":"Note: Loop","type":"n8n-nodes-base.stickyNote","position":[2448,1104],"parameters":{"color":7,"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"},"typeVersion":1},{"id":"efa995d5-d67a-4247-9b8a-74fea9430c43","name":"Note: AI Agent","type":"n8n-nodes-base.stickyNote","position":[3184,1120],"parameters":{"color":2,"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 estimated reach per post.\n\n Edit the system prompt to add campaign context or scoring bias."},"typeVersion":1},{"id":"1568debf-2a3d-465f-af1b-c0c191cd38b5","name":"Note: HubSpot Out","type":"n8n-nodes-base.stickyNote","position":[3616,1120],"parameters":{"color":3,"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 properties for outreach sequencing."},"typeVersion":1},{"id":"e9a4aab9-fe47-4ca5-8bbd-6f9bcefb7bab","name":"Stop and Error","type":"n8n-nodes-base.stopAndError","position":[1344,1840],"parameters":{"errorMessage":"API enrichment failed - contact is not a creator or API error"},"typeVersion":1},{"id":"111cf880-1d0a-4327-bffd-13c3f98d9420","name":"OpenAI Model (Lookalike)1","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[3200,1712],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4o-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"W8cxWjHLmpqoLcGC","name":"N8N open AI"}},"typeVersion":1.3},{"id":"e2f24be3-9aef-4970-b98e-b6edf1f77562","name":"Structured Output Parser (Lookalike)1","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[3456,1712],"parameters":{"schemaType":"manual","inputSchema":"{\n  \"type\": \"object\",\n  \"properties\": {\n    \"summary\": { \"type\": \"string\" },\n    \"strengths\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n    \"concerns\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n    \"audience_analysis\": { \"type\": \"object\", \"properties\": { \"authenticity_assessment\": { \"type\": \"string\" }, \"engagement_quality\": { \"type\": \"string\", \"enum\": [\"low\",\"medium\",\"high\"] }, \"engagement_notes\": { \"type\": \"string\" } }, \"required\": [\"authenticity_assessment\",\"engagement_quality\",\"engagement_notes\"] },\n    \"growth_analysis\": { \"type\": \"object\", \"properties\": { \"trajectory\": { \"type\": \"string\", \"enum\": [\"declining\",\"stagnant\",\"steady\",\"accelerating\"] }, \"notes\": { \"type\": \"string\" } }, \"required\": [\"trajectory\",\"notes\"] },\n    \"content_analysis\": { \"type\": \"object\", \"properties\": { \"content_style\": { \"type\": \"string\" }, \"niche_clarity\": { \"type\": \"string\", \"enum\": [\"weak\",\"moderate\",\"strong\"] }, \"niche_notes\": { \"type\": \"string\" } }, \"required\": [\"content_style\",\"niche_clarity\",\"niche_notes\"] },\n    \"brand_fit\": { \"type\": \"object\", \"properties\": { \"best_fit_categories\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"poor_fit_categories\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } }, \"campaign_types\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } } }, \"required\": [\"best_fit_categories\",\"poor_fit_categories\",\"campaign_types\"] },\n    \"flags\": { \"type\": \"array\", \"items\": { \"type\": \"string\" } },\n    \"recommended_action\": { \"type\": \"string\", \"enum\": [\"approve\",\"review\",\"reject\"] },\n    \"recommended_action_reason\": { \"type\": \"string\" },\n    \"estimated_reach_per_post\": { \"type\": \"object\", \"properties\": { \"low\": { \"type\": \"number\" }, \"high\": { \"type\": \"number\" }, \"basis\": { \"type\": \"string\" } }, \"required\": [\"low\",\"high\",\"basis\"] }\n  },\n  \"required\": [\"summary\",\"strengths\",\"concerns\",\"audience_analysis\",\"growth_analysis\",\"content_analysis\",\"brand_fit\",\"flags\",\"recommended_action\",\"recommended_action_reason\",\"estimated_reach_per_post\"]\n}"},"typeVersion":1.3},{"id":"7194259e-6ac6-42ba-a445-70cc7de5f6f2","name":"Note: Enrich Lookalike1","type":"n8n-nodes-base.stickyNote","position":[2704,1104],"parameters":{"color":6,"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."},"typeVersion":1},{"id":"63f881e0-5adc-4b9b-8b1d-1d77c9a1c5b8","name":"HubSpot Trigger","type":"n8n-nodes-base.hubspotTrigger","position":[528,1648],"webhookId":"883eeb6e-1df3-425b-adcd-cfaf795d1937","parameters":{"eventsUi":{"eventValues":[{}]},"additionalFields":{"maxConcurrentRequests":5}},"credentials":{"hubspotDeveloperApi":{"id":"yDRt3bHZGhZMcFva","name":"Dzole Hubspot Developer"}},"typeVersion":1},{"id":"016d7e62-a2d7-4ba9-9f9e-998eec74648a","name":"Get Contact by ID","type":"n8n-nodes-base.hubspot","position":[832,1648],"parameters":{"contactId":{"__rl":true,"mode":"id","value":"={{ $json.contactId }}"},"operation":"get","authentication":"appToken","additionalFields":{"propertiesCollection":{"propertiesValues":{"properties":["firstname","company","hs_full_name_or_email"]}}}},"credentials":{"hubspotAppToken":{"id":"69g6my3KrUsJEGYR","name":"gorgi hubspot"}},"typeVersion":2.2},{"id":"e35885d7-64d4-412b-89b3-21d460bd39e9","name":"Extract Email","type":"n8n-nodes-base.set","position":[1088,1648],"parameters":{"options":{},"assignments":{"assignments":[{"id":"8ff17193-2e32-487b-b433-14cc67ee0581","name":"Email","type":"string","value":"={{ $json.properties.email.value }}"},{"id":"first-name-extract","name":"Company Name","type":"string","value":"={{ $json[\"associated-company\"].properties.name.value }}"}]}},"typeVersion":3.4},{"id":"2235d40b-0612-4a15-a6f4-38d5022ad0ed","name":"Normalize","type":"n8n-nodes-base.code","position":[1616,1472],"parameters":{"jsCode":"const raw = $input.first().json[0] || $input.first().json;\nconst result = raw.result || raw;\n\nfunction fmtFollowers(n) {\n  if (n == null) return null;\n  if (n >= 1000000) return `${(n / 1000000).toFixed(1)}M`;\n  if (n >= 1000) return `${Math.round(n / 1000)}K`;\n  return `${n}`;\n}\n\nfunction stripUrl(url) {\n  if (!url || typeof url !== 'string') return null;\n  return url.includes('?') ? url.split('?')[0] : url;\n}\n\nfunction engagementTier(pct) {\n  if (pct == null) return 'unknown';\n  if (pct >= 5) return 'high';\n  if (pct >= 1) return 'medium';\n  return 'low';\n}\n\nfunction followerTier(n) {\n  if (n == null) return 'unknown';\n  if (n >= 500000) return 'macro';\n  if (n >= 100000) return 'mid';\n  if (n >= 10000) return 'micro';\n  return 'nano';\n}\n\nfunction growthTrend(g) {\n  if (!g || typeof g !== 'object') return null;\n  const vals = [g['12_months_ago'], g['9_months_ago'], g['6_months_ago'], g['3_months_ago']]\n    .filter(v => typeof v === 'number');\n  if (vals.length < 2) return null;\n  return vals[vals.length - 1] > vals[0] ? 'accelerating' : 'decelerating';\n}\n\nconst platforms = {\n  tiktok:    { data: result.tiktok    || null, followers: result.tiktok?.follower_count    ?? 0 },\n  instagram: { data: result.instagram || null, followers: result.instagram?.follower_count ?? 0 },\n  youtube:   { data: result.youtube   || null, followers: result.youtube?.subscriber_count ?? 0 },\n  twitter:   { data: result.twitter   || null, followers: result.twitter?.follower_count   ?? 0 }\n};\n\nconst main_platform = Object.entries(platforms)\n  .filter(([, v]) => v.data && v.followers > 0)\n  .sort((a, b) => b[1].followers - a[1].followers)[0]?.[0] || 'unknown';\n\nconst p = platforms[main_platform]?.data || {};\nconst followers = platforms[main_platform]?.followers || null;\nconst handle = (p.username || '').replace(/^@/, '').toLowerCase().trim() || null;\n\nconst profileUrls = {\n  tiktok:    handle ? `https://www.tiktok.com/@${handle}` : null,\n  instagram: handle ? `https://www.instagram.com/${handle}` : null,\n  youtube:   p.custom_url ? `https://www.youtube.com/${p.custom_url}` : null,\n  twitter:   handle ? `https://twitter.com/${handle}` : null\n};\n\nreturn [{\n  json: {\n    email:            result.email || null,\n    email_type:       result.email_type || null,\n    full_name:        p.full_name || result.first_name?.replace(/^@/, '') || null,\n    handle,\n    display_handle:   handle ? `@${handle}` : null,\n    main_platform,\n    profile_url:      profileUrls[main_platform] || null,\n    profile_picture:  stripUrl(p.profile_picture),\n    followers,\n    followers_fmt:    fmtFollowers(followers),\n    follower_tier:    followerTier(followers),\n    engagement_percent: p.engagement_percent ? parseFloat(p.engagement_percent.toFixed(3)) : null,\n    engagement_tier:  engagementTier(p.engagement_percent),\n    growth_trend:     growthTrend(p.creator_follower_growth),\n    posting_frequency: p.posting_frequency_recent_months ?? null,\n    biography:        p.biography || null,\n    is_verified:      p.is_verified || false,\n    is_creator:       result.is_creator || false,\n    has_brand_deals:  result.has_brand_deals || false,\n    has_merch:        p.has_merch || false,\n    promotes_affiliate_links: p.promotes_affiliate_links || false,\n    gender:           result.gender || null,\n    location:         result.location || null,\n    speaking_language: result.speaking_language || null,\n    links_in_bio:     result.links_in_bio || p.links_in_bio || [],\n    platforms_available: Object.entries(platforms)\n      .filter(([, v]) => v.data && v.followers > 0)\n      .map(([name, v]) => ({ platform: name, followers: v.followers, followers_fmt: fmtFollowers(v.followers) }))\n  }\n}];"},"typeVersion":2},{"id":"4564d50a-7773-4049-a032-8d1324b47bc7","name":"Filter - Is Creator?","type":"n8n-nodes-base.if","position":[1840,1472],"parameters":{"options":{},"conditions":{"options":{"version":1,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"creator-check","operator":{"type":"boolean","operation":"equals"},"leftValue":"={{ $json.is_creator }}","rightValue":true}]}},"typeVersion":2},{"id":"72e1331d-6e7a-4167-a158-4289af48e1bf","name":"Loop Over Items (Lookalike)","type":"n8n-nodes-base.splitInBatches","position":[2512,1456],"parameters":{"options":{}},"typeVersion":3},{"id":"9b7ba1b6-8a14-40db-a12c-15200566cf2b","name":"Normalize Profile (Lookalike)","type":"n8n-nodes-base.code","position":[2992,1456],"parameters":{"mode":"runOnceForEachItem","jsCode":"function stripUrl(url){if(!url)return null;return typeof url==='string'&&url.includes('?')?url.split('?')[0]:url;}\nfunction normHandle(raw){if(!raw||typeof raw!=='string')return null;return raw.replace(/^@/,'').toLowerCase().trim();}\nfunction fmtFollowers(n){if(n==null)return null;if(n>=1000000)return`${(n/1000000).toFixed(1)}M`;if(n>=1000)return`${(n/1000).toFixed(0)}K`;return`${n}`;}\nfunction growthTrend(g){if(!g||typeof g!=='object')return null;const vals=[g['12_months_ago'],g['9_months_ago'],g['6_months_ago'],g['3_months_ago']].filter(v=>typeof v==='number');if(vals.length<2)return null;return vals[vals.length-1]>vals[0]?'accelerating':'decelerating';}\nfunction buildLinks(ch,handle){const l={};if(!handle)return l;if(Array.isArray(ch)){ch.forEach(e=>{if(e&&typeof e==='object')Object.entries(e).forEach(([p,u])=>{if(u)l[p]=u;});});}else if(ch&&typeof ch==='object'){if(ch.has_instagram||ch.instagram)l.instagram=`https://www.instagram.com/${handle}`;if(ch.has_tiktok)l.tiktok=`https://www.tiktok.com/@${handle}`;if(ch.has_youtube)l.youtube=`https://www.youtube.com/@${handle}`;if(ch.has_twitter)l.twitter=`https://twitter.com/${handle}`;if(ch.has_linktree)l.linktree=`https://linktr.ee/${handle}`;}return l;}\nfunction dedupCollabs(tagged){if(!Array.isArray(tagged))return[];const c={};tagged.forEach(t=>{if(t?.username)c[t.username]=(c[t.username]||0)+1;});return Object.entries(c).sort((a,b)=>b[1]-a[1]).slice(0,8).map(([u])=>u);}\n\nfunction normalize(entry) {\n  // Detect format A: { result: { instagram: {...}, ... }, credits_cost: 1 }\n  // Detect format B: { user_id, profile: { username, followers, ... } }\n  // Detect format C: flat enriched data directly\n\n  const isFormatA = !!(entry.result && entry.result.instagram);\n  const isFormatB = !!(entry.profile && entry.profile.username);\n\n  if (isFormatB) {\n    // Lightweight lookalike format\n    const profile = entry.profile;\n    const handle = normHandle(profile.username);\n    const followers = profile.followers ?? null;\n    const engPct = profile.engagement_percent ?? null;\n    return {\n      normalized_profile: {\n        identity: {\n          user_id: entry.user_id || null,\n          full_name: profile.full_name || null,\n          handle,\n          display_handle: handle ? `@${handle}` : null,\n          platform_primary: 'instagram',\n          profile_url: handle ? `https://www.instagram.com/${handle}` : null,\n          profile_picture: stripUrl(profile.picture),\n          email: null, is_verified: false, is_private: false,\n          is_business_account: false, account_type: 'personal',\n          category: null, niche_topics: []\n        },\n        cross_platform_links: { instagram: handle ? `https://www.instagram.com/${handle}` : null },\n        contact: { email: null, email_type: null, phone: null, has_link_in_bio: false, bio_links: [] },\n        audience: { follower_count: followers, follower_count_fmt: fmtFollowers(followers), following_count: null, media_count: null, top_country: null, state: null, city: null, location_certainty: null, language: null },\n        follower_growth: null,\n        engagement: { engagement_percent: engPct, avg_likes: null, avg_comments: null, median_likes: null, median_comments: null, comment_to_like_ratio_pct: null },\n        content: { posting_frequency_per_month: null, reels_percentage: null, video_content_creator: false, most_recent_post_date: null, top_hashtags: [], biography: null },\n        monetization: { has_brand_deals: false, has_merch: false, promotes_affiliate_links: false, estimated_income: null },\n        network: { frequent_collaborators: [], primary_locations: [] },\n        flags: { low_engagement: typeof engPct==='number'&&typeof followers==='number'&&engPct<1.0&&followers>10000, tiktok_id_only: false },\n        dedup_key: handle ? `instagram:${handle}` : entry.user_id ? `instagram:${entry.user_id}` : null\n      }\n    };\n  }\n\n  // Format A or C — full enrichment data\n  const raw = isFormatA ? entry.result : entry;\n  const ig = raw.instagram || {};\n\n  const handle = normHandle(ig?.username || ig?.handle || raw?.creator_handle);\n  const userId = ig?.userid || ig?.user_id || raw?.user_id || null;\n  const email = raw?.email || raw?.contact_email || ig?.email || null;\n  const followers = ig?.follower_count ?? ig?.followers ?? null;\n  const engPct = ig?.engagement_percent ?? null;\n  const avgLikes = ig?.avg_likes ?? ig?.average_likes ?? null;\n  const avgComments = ig?.avg_comments ?? ig?.average_comments ?? null;\n  const ctlRatio = (typeof avgLikes==='number'&&avgLikes>0&&typeof avgComments==='number') ? parseFloat(((avgComments/avgLikes)*100).toFixed(2)) : null;\n  const ch = raw?.creator_has || ig?.creator_has || null;\n  const xp = buildLinks(ch, handle);\n  if(handle && !xp.instagram) xp.instagram = `https://www.instagram.com/${handle}`;\n  const lt = ig?.linktree || raw?.linktree || null;\n  if(lt && !xp.linktree) xp.linktree = `https://linktr.ee/${lt}`;\n  const gr = ig?.creator_follower_growth || null;\n  const fg = gr ? {'3_months_ago_pct':gr['3_months_ago']??null,'6_months_ago_pct':gr['6_months_ago']??null,'9_months_ago_pct':gr['9_months_ago']??null,'12_months_ago_pct':gr['12_months_ago']??null,trend:growthTrend(gr)} : null;\n  const aud = { follower_count: followers, follower_count_fmt: fmtFollowers(followers), following_count: ig?.following_count??null, media_count: ig?.media_count??null, top_country: ig?.country||raw?.location||null, state: ig?.state||null, city: ig?.city||null, location_certainty: ig?.location_certainty??null, language: Array.isArray(ig?.language_code)?ig.language_code[0]:(raw?.speaking_language||ig?.language_code||null) };\n  const collabs = dedupCollabs(ig?.tagged||[]).filter(u=>u!==handle);\n  const locs = [...new Set((ig?.locations||[]).filter(Boolean))].slice(0,5);\n  const incRaw = ig?.income || raw?.income_data?.instagram || null;\n  const inc = incRaw ? {min_usd:incRaw.min??null,max_usd:incRaw.max??null,currency:incRaw.currency??null} : null;\n  let tags = [];\n  if(Array.isArray(ig?.hashtags_count)&&ig.hashtags_count.length){ tags=ig.hashtags_count.sort((a,b)=>b.count-a.count).slice(0,10).map(h=>h.name); }\n  else if(Array.isArray(ig?.hashtags)){ const seen=new Set(); tags=ig.hashtags.filter(h=>h&&h.length>1&&!seen.has(h)&&seen.add(h)).slice(0,10); }\n  const dk = handle?`instagram:${handle}`:userId?`instagram:${userId}`:null;\n\n  return {\n    normalized_profile: {\n      identity: { user_id: userId, full_name: ig?.full_name||raw?.first_name||null, handle, display_handle: handle?`@${handle}`:null, platform_primary:'instagram', profile_url: handle?`https://www.instagram.com/${handle}`:null, profile_picture: stripUrl(ig?.profile_picture||ig?.profile_picture_hd), email, is_verified: ig?.is_verified??false, is_private: ig?.is_private??false, is_business_account: ig?.is_business_account??raw?.is_business??false, account_type: raw?.is_creator?'creator':(ig?.account_type===3?'creator':'personal'), category: ig?.category||null, niche_topics: ig?.niche_class||[] },\n      cross_platform_links: xp,\n      contact: { email, email_type: raw?.email_type||null, phone: raw?.contact_phone_number?`+${String(raw.contact_phone_number).replace(/^\\+/,'')}` :(ig?.contact_phone_number||null), has_link_in_bio: ig?.uses_link_in_bio??raw?.has_link_in_bio??false, bio_links: ig?.links_in_bio||raw?.links_in_bio||[] },\n      audience: aud,\n      follower_growth: fg,\n      engagement: { engagement_percent: engPct, avg_likes: avgLikes, avg_comments: avgComments, median_likes: ig?.likes_median??null, median_comments: ig?.comments_median??null, comment_to_like_ratio_pct: ctlRatio },\n      content: { posting_frequency_per_month: ig?.posting_frequency_recent_months??null, reels_percentage: ig?.reels_percentage_last_12_posts??null, video_content_creator: ig?.video_content_creator??false, most_recent_post_date: ig?.most_recent_post_date||null, top_hashtags: tags, biography: ig?.biography||null },\n      monetization: { has_brand_deals: raw?.has_brand_deals??ig?.has_done_brand_deals??false, has_merch: ig?.has_merch??false, promotes_affiliate_links: ig?.promotes_affiliate_links??false, estimated_income: inc },\n      network: { frequent_collaborators: collabs, primary_locations: locs },\n      flags: { low_engagement: typeof engPct==='number'&&typeof followers==='number'&&engPct<1.0&&followers>10000, tiktok_id_only: !!(xp.tiktok&&/\\/\\d{10,}/.test(xp.tiktok)) },\n      dedup_key: dk\n    }\n  };\n}\n\n// Handle array or single item\nconst input = item.json;\nif (Array.isArray(input)) {\n  return input.map(entry => ({ json: normalize(entry) }));\n} else {\n  return { json: normalize(input) };\n}"},"typeVersion":2},{"id":"946fa69c-5f24-4c02-9fa4-e14fc23756ca","name":"AI Agent (Lookalike)","type":"@n8n/n8n-nodes-langchain.agent","position":[3264,1456],"parameters":{"text":"=Analyze the following normalized creator profile and provide a structured analysis.\n\nCreator Profile:\n{{ JSON.stringify($json.normalized_profile, null, 2) }}\n\nRespond ONLY with this JSON structure, no markdown, no extra text:\n\n{\n  \"summary\": \"2-3 sentence overview of who this creator is and their positioning\",\n  \"strengths\": [\"Specific strength with data evidence\"],\n  \"concerns\": [\"Specific concern with data evidence\"],\n  \"audience_analysis\": { \"authenticity_assessment\": \"string\", \"engagement_quality\": \"low | medium | high\", \"engagement_notes\": \"string\" },\n  \"growth_analysis\": { \"trajectory\": \"declining | stagnant | steady | accelerating\", \"notes\": \"string\" },\n  \"content_analysis\": { \"content_style\": \"string\", \"niche_clarity\": \"weak | moderate | strong\", \"niche_notes\": \"string\" },\n  \"brand_fit\": { \"best_fit_categories\": [\"string\"], \"poor_fit_categories\": [\"string\"], \"campaign_types\": [\"string\"] },\n  \"flags\": [\"string\"],\n  \"recommended_action\": \"approve | review | reject\",\n  \"recommended_action_reason\": \"string\",\n  \"estimated_reach_per_post\": { \"low\": 0, \"high\": 0, \"basis\": \"string\" }\n}","options":{"systemMessage":"You are an expert influencer marketing analyst with deep knowledge of Instagram metrics, creator monetization, audience authenticity signals, and brand partnership strategy. Always respond with valid JSON only — no markdown code blocks, no preamble, no explanation outside the JSON object."},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"8e8da4f7-704a-4432-bf46-d13436963325","name":"HubSpot — Lookalike Creator","type":"n8n-nodes-base.hubspot","position":[3680,1456],"parameters":{"email":"=","options":{},"authentication":"appToken","additionalFields":{}},"credentials":{"hubspotAppToken":{"id":"69g6my3KrUsJEGYR","name":"gorgi hubspot"}},"typeVersion":2.2},{"id":"330f7dcb-4cf1-4f5f-b87f-d6ff47a29809","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[1552,688],"parameters":{"width":752,"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, Twitch and more) data using the influencer.club API and add them to Hubspot**. [https://influencers.club/creatorbook/find-similar-creators-to-top-performers/)"},"typeVersion":1},{"id":"ec6d791c-a379-41ac-af84-fc71ea2affc0","name":"Enrich by Email","type":"n8n-nodes-influencersclub.influencersClub","onError":"continueErrorOutput","position":[1360,1488],"parameters":{"email":"={{ $json.Email }}"},"credentials":{"influencersClubApi":{"id":"pfuQoV9XcYUVIeuU","name":"Influencers Club - Gjorgji"}},"typeVersion":1},{"id":"4bac64d4-7688-46b7-b87f-77d630c074a8","name":"Find Similar Creators","type":"n8n-nodes-influencersclub.influencersClub","position":[2080,1456],"parameters":{"platform":"={{ $json.main_platform }}","resource":"creator","operation":"findLookalikes","filter_key":"username","filter_value":"={{ $json.handle }}","tiktokFilters":{},"twitchFilters":{},"twitterFilters":{},"youtubeFilters":{},"advancedFilters":{},"onlyfansFilters":{},"instagramFilters":{},"additionalOptions":{}},"credentials":{"influencersClubApi":{"id":"pfuQoV9XcYUVIeuU","name":"Influencers Club - Gjorgji"}},"typeVersion":1},{"id":"8cd8d225-53e5-4e69-bd3b-d26d8e02de1c","name":"Enrich by Handle (Full)","type":"n8n-nodes-influencersclub.influencersClub","onError":"continueErrorOutput","position":[2752,1472],"parameters":{"handle":"={{ $json.profile.username }}","platform":"={{ $('Normalize').item.json.main_platform }}","resource":"creator","operation":"enrichByHandle","tiktokFilters":{},"twitchFilters":{},"twitterFilters":{},"youtubeFilters":{},"onlyfansFilters":{},"instagramFilters":{},"additionalOptions":{}},"credentials":{"influencersClubApi":{"id":"pfuQoV9XcYUVIeuU","name":"Influencers Club - Gjorgji"}},"typeVersion":1},{"id":"098c57ea-8a56-417c-85a4-5e332b7ca20b","name":"Split Out","type":"n8n-nodes-base.splitOut","position":[2288,1456],"parameters":{"options":{},"fieldToSplitOut":"accounts"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"binaryMode":"separate","availableInMCP":false,"executionOrder":"v1"},"versionId":"175fc5f4-affe-40da-ab18-e923debf7731","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}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":30,"nodeTypes":{"n8n-nodes-base.if":{"count":1},"n8n-nodes-base.set":{"count":1},"n8n-nodes-base.code":{"count":2},"n8n-nodes-base.hubspot":{"count":2},"n8n-nodes-base.splitOut":{"count":1},"n8n-nodes-base.stickyNote":{"count":14},"n8n-nodes-base.stopAndError":{"count":1},"n8n-nodes-base.hubspotTrigger":{"count":1},"n8n-nodes-base.splitInBatches":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":1},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":1},"n8n-nodes-influencersclub.influencersClub":{"count":3},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Influencers Club","username":"influencers-club","bio":"Influencers.club is an Influencer marketing platform focused on creator data APIs. \n\nWe allow companies in any industry to build automated creator workflows from discovery to enrichment to power influencer acquisition, partnership automation, and custom solutions with social data, emails, full social graph across all social platforms, analytics, demographics and 200+ insights.","verified":true,"links":["https://influencers.club/influencer-api/"],"avatar":"https://gravatar.com/avatar/22ccdb2fb1cfb00f090f22fcd5b4987516be76749721c54c6e106cc5acfdea10?r=pg&d=retro&size=200"},"nodes":[{"id":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":39,"icon":"fa:sync","name":"n8n-nodes-base.splitInBatches","codex":{"data":{"alias":["Loop","Concatenate","Batch","Split","Split In Batches"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Loop Over Items","color":"#007755"},"iconData":{"icon":"sync","type":"icon"},"displayName":"Loop Over Items (Split in Batches)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":76,"icon":"file:hubspot.svg","name":"n8n-nodes-base.hubspot","codex":{"data":{"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-sync-data-between-two-systems/","icon":"🏬","label":"How to synchronize data between two systems (one-way vs. two-way sync"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.hubspot/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/hubspot/"}]},"categories":["Sales"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"output\"]","defaults":{"name":"HubSpot"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNjIuODgzIDY5Ljg4MyI+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMi40NDIiIHk9IjIuNDQyIi8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxwYXRoIGZpbGw9IiNmODc2MWYiIGZpbGwtcnVsZT0ibm9uemVybyIgc3Ryb2tlPSJub25lIiBkPSJNNTUuNTA0IDMwLjQwMWExNi4yNiAxNi4yNiAwIDAgMC01LjkwNC01Ljg2NGMtMS44NjUtMS4wODQtMy43OTQtMS43NzMtNS45NzItMi4wN3YtNy43OThhNS43MSA1LjcxIDAgMCAwIDMuNTI1LTUuMzU3IDUuODYgNS44NiAwIDAgMC01Ljg1OS01Ljg4OSA1LjkxIDUuOTEgMCAwIDAtNS45MDggNS44ODljMCAyLjM5MyAxLjI3IDQuNDM0IDMuNDUyIDUuMzU3djcuNzU0YTE3IDE3IDAgMCAwLTUuMTk1IDEuNjMxTDEyLjc2OSA4LjI0N2MuMTQ2LS41NTIuMjczLTEuMTIzLjI3My0xLjcyNEE2LjUyIDYuNTIgMCAwIDAgNi41MTkgMCA2LjUyIDYuNTIgMCAwIDAgMCA2LjUyNGE2LjUyMyA2LjUyMyAwIDAgMCA2LjUyNCA2LjUyNCA2LjQ3IDYuNDcgMCAwIDAgMy4zNS0uOTUybDEuMzY3IDEuMDM1IDE4LjcyNiAxMy41MDFjLS45OTEuOTA4LTEuOTE0IDEuOTQzLTIuNjUxIDMuMTA1LTEuNDk0IDIuMzY4LTIuNDA3IDQuOTcxLTIuNDA3IDcuODEzdi41ODZhMTYuNCAxNi40IDAgMCAwIDEuMDI1IDUuNjQ1QzI2LjUgNDUuMzI0IDI3LjMzIDQ2LjczIDI4LjM2MSA0OGwtNi4yMjEgNi4yMzVhNS4wMSA1LjAxIDAgMCAwLTUuMjk4IDEuMTYyYy0uOTQ3Ljk0Mi0xLjQ4IDIuMjI3LTEuNDc1IDMuNTY1cy41MjcgMi42MTIgMS40NzkgMy41NjQgMi4yMjcgMS40OCAzLjU2NSAxLjQ4YTUgNSAwIDAgMCAzLjU2NS0xLjQ4IDUuMDUgNS4wNSAwIDAgMCAxLjQ3NS0zLjU2NCA1IDUgMCAwIDAtLjIzNC0xLjUxNGw2LjQyNi02LjQyNmExNiAxNiAwIDAgMCAyLjg1NiAxLjU2MyAxNi43IDE2LjcgMCAwIDAgNi42ODUgMS40MDZoLjQzOWExNS43NiAxNS43NiAwIDAgMCA3LjYyNy0xLjkyOSAxNS43NyAxNS43NyAwIDAgMCA1Ljk3Ny01LjYzYzEuNDk5LTIuMzkzIDIuMzE5LTUuMDQ0IDIuMzE5LTcuOTU5di0uMTQ2YzAtMi44NjYtLjY2NC01LjUwOC0yLjA1MS03Ljkzem0tNy44NDcgMTMuNDg3Yy0xLjc0MyAxLjkzOC0zLjc1IDMuMTM1LTYuMDE2IDMuMTM1aC0uNDNjLTEuMjk0IDAtMi41NjQtLjM1Ni0zLjc5OS0xLjAxMWE4LjggOC44IDAgMCAxLTMuMzMtMy4wMzJjLS44OTgtMS4yNy0xLjM4Ny0yLjY1Ni0xLjM4Ny00LjEyNnYtLjQzOWMwLTEuNDQ1LjI3OC0yLjgxNy45NzctNC4xMTEuNzQ3LTEuNDY1IDEuNzU4LTIuNTE1IDMuMTAxLTMuMzg5YTcuNiA3LjYgMCAwIDEgNC4yOTctMS4yOTRoLjE0N2MxLjQxNiAwIDIuNzY5LjI3OCA0LjAzOC45MjhhOC41NiA4LjU2IDAgMCAxIDMuMTc0IDIuODg2IDkuMiA5LjIgMCAwIDEgMS40MjEgNC4wNTNsLjAzNC45MTNjMCAxLjk4Ny0uNzYyIDMuODI4LTIuMjggNS40OTh6Ii8+PC9zeW1ib2w+PC9zdmc+"},"displayName":"HubSpot","typeVersion":2,"nodeCategories":[{"id":2,"name":"Sales"}]},{"id":303,"icon":"file:hubspot.svg","name":"n8n-nodes-base.hubspotTrigger","codex":{"data":{"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.hubspottrigger/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/hubspot/"}]},"categories":["Sales"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\"]","defaults":{"name":"HubSpot Trigger"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNjIuODgzIDY5Ljg4MyI+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMi40NDIiIHk9IjIuNDQyIi8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxwYXRoIGZpbGw9IiNmODc2MWYiIGZpbGwtcnVsZT0ibm9uemVybyIgc3Ryb2tlPSJub25lIiBkPSJNNTUuNTA0IDMwLjQwMWExNi4yNiAxNi4yNiAwIDAgMC01LjkwNC01Ljg2NGMtMS44NjUtMS4wODQtMy43OTQtMS43NzMtNS45NzItMi4wN3YtNy43OThhNS43MSA1LjcxIDAgMCAwIDMuNTI1LTUuMzU3IDUuODYgNS44NiAwIDAgMC01Ljg1OS01Ljg4OSA1LjkxIDUuOTEgMCAwIDAtNS45MDggNS44ODljMCAyLjM5MyAxLjI3IDQuNDM0IDMuNDUyIDUuMzU3djcuNzU0YTE3IDE3IDAgMCAwLTUuMTk1IDEuNjMxTDEyLjc2OSA4LjI0N2MuMTQ2LS41NTIuMjczLTEuMTIzLjI3My0xLjcyNEE2LjUyIDYuNTIgMCAwIDAgNi41MTkgMCA2LjUyIDYuNTIgMCAwIDAgMCA2LjUyNGE2LjUyMyA2LjUyMyAwIDAgMCA2LjUyNCA2LjUyNCA2LjQ3IDYuNDcgMCAwIDAgMy4zNS0uOTUybDEuMzY3IDEuMDM1IDE4LjcyNiAxMy41MDFjLS45OTEuOTA4LTEuOTE0IDEuOTQzLTIuNjUxIDMuMTA1LTEuNDk0IDIuMzY4LTIuNDA3IDQuOTcxLTIuNDA3IDcuODEzdi41ODZhMTYuNCAxNi40IDAgMCAwIDEuMDI1IDUuNjQ1QzI2LjUgNDUuMzI0IDI3LjMzIDQ2LjczIDI4LjM2MSA0OGwtNi4yMjEgNi4yMzVhNS4wMSA1LjAxIDAgMCAwLTUuMjk4IDEuMTYyYy0uOTQ3Ljk0Mi0xLjQ4IDIuMjI3LTEuNDc1IDMuNTY1cy41MjcgMi42MTIgMS40NzkgMy41NjQgMi4yMjcgMS40OCAzLjU2NSAxLjQ4YTUgNSAwIDAgMCAzLjU2NS0xLjQ4IDUuMDUgNS4wNSAwIDAgMCAxLjQ3NS0zLjU2NCA1IDUgMCAwIDAtLjIzNC0xLjUxNGw2LjQyNi02LjQyNmExNiAxNiAwIDAgMCAyLjg1NiAxLjU2MyAxNi43IDE2LjcgMCAwIDAgNi42ODUgMS40MDZoLjQzOWExNS43NiAxNS43NiAwIDAgMCA3LjYyNy0xLjkyOSAxNS43NyAxNS43NyAwIDAgMCA1Ljk3Ny01LjYzYzEuNDk5LTIuMzkzIDIuMzE5LTUuMDQ0IDIuMzE5LTcuOTU5di0uMTQ2YzAtMi44NjYtLjY2NC01LjUwOC0yLjA1MS03Ljkzem0tNy44NDcgMTMuNDg3Yy0xLjc0MyAxLjkzOC0zLjc1IDMuMTM1LTYuMDE2IDMuMTM1aC0uNDNjLTEuMjk0IDAtMi41NjQtLjM1Ni0zLjc5OS0xLjAxMWE4LjggOC44IDAgMCAxLTMuMzMtMy4wMzJjLS44OTgtMS4yNy0xLjM4Ny0yLjY1Ni0xLjM4Ny00LjEyNnYtLjQzOWMwLTEuNDQ1LjI3OC0yLjgxNy45NzctNC4xMTEuNzQ3LTEuNDY1IDEuNzU4LTIuNTE1IDMuMTAxLTMuMzg5YTcuNiA3LjYgMCAwIDEgNC4yOTctMS4yOTRoLjE0N2MxLjQxNiAwIDIuNzY5LjI3OCA0LjAzOC45MjhhOC41NiA4LjU2IDAgMCAxIDMuMTc0IDIuODg2IDkuMiA5LjIgMCAwIDEgMS40MjEgNC4wNTNsLjAzNC45MTNjMCAxLjk4Ny0uNzYyIDMuODI4LTIuMjggNS40OTh6Ii8+PC9zeW1ib2w+PC9zdmc+"},"displayName":"HubSpot Trigger","typeVersion":1,"nodeCategories":[{"id":2,"name":"Sales"}]},{"id":528,"icon":"fa:exclamation-triangle","name":"n8n-nodes-base.stopAndError","codex":{"data":{"alias":["Throw error","Error","Exception"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.stopanderror/"}]},"categories":["Core Nodes","Utility"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"input\"]","defaults":{"name":"Stop and Error","color":"#ff0000"},"iconData":{"icon":"exclamation-triangle","type":"icon"},"displayName":"Stop and Error","typeVersion":1,"nodeCategories":[{"id":7,"name":"Utility"},{"id":9,"name":"Core Nodes"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1153,"icon":"file:openAiLight.svg","name":"@n8n/n8n-nodes-langchain.lmChatOpenAi","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="},"displayName":"OpenAI Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1179,"icon":"fa:code","name":"@n8n/n8n-nodes-langchain.outputParserStructured","codex":{"data":{"alias":["json","zod"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Output Parsers"]}}},"group":"[\"transform\"]","defaults":{"name":"Structured Output Parser"},"iconData":{"icon":"code","type":"icon"},"displayName":"Structured Output Parser","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1239,"icon":"file:splitOut.svg","name":"n8n-nodes-base.splitOut","codex":{"data":{"alias":["Split","Nested","Transform","Array","List","Item"],"details":"","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitout/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Split Out"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIj48ZyBmaWxsPSIjOUI2REQ1IiBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQ4MCAxNDhjMC02LjYyNy01LjM3My0xMi0xMi0xMkgzMjJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjRjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxNDZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMCA5NmMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDMyMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyNGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDE0NmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0wIDk2YzAtNi42MjctNS4zNzMtMTItMTItMTJIMzIyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTQ2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBkPSJNNDM4IDc2YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzA5Ljc4M2MtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMydjU2YzAgMjYuOTc4LTEwLjI3MiA1MS41NTctMjcuMTE5IDcwLjAzOS01LjA1NSA1LjU0NS01LjA1NSAxNC4zNzcgMCAxOS45MjIgMTYuODQ3IDE4LjQ4MiAyNy4xMTkgNDMuMDYxIDI3LjExOSA3MC4wMzl2NTZjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMySDQyNmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzA5Ljc4M2MtNDQuMTgzIDAtODAtMzUuODE3LTgwLTgwdi01NmMwLTMwLjkyOC0yNS4wNzItNTYtNTYtNTZhNS43ODMgNS43ODMgMCAwIDEtNS43ODMtNS43ODN2LTM2LjQzNGE1Ljc4MyA1Ljc4MyAwIDAgMSA1Ljc4My01Ljc4M2MzMC45MjggMCA1Ni0yNS4wNzIgNTYtNTZ2LTU2YzAtNDQuMTgzIDM1LjgxNy04MCA4MC04MEg0MjZjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnoiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMzYgMjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjRjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxMTJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9ImEiPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik01MTIgMEgwdjUxMmg1MTJ6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+"},"displayName":"Split Out","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":37,"name":"Lead Generation"},{"id":49,"name":"AI Summarization"}],"image":[]}}