{"workflow":{"id":14217,"name":"Re-engage old clients with Claude 3.7 Sonnet, Gmail and Google Sheets","views":24,"recentViews":1,"totalViews":24,"createdAt":"2026-03-21T13:31:38.862Z","description":"### Description\n\nAutomatically re-engage old or inactive clients by sending AI-personalized follow-up emails using Claude 3.7 Sonnet, Gmail, and Google Sheets — with smart reply detection to avoid messaging clients who are already in active conversation.\n\n---\n\n### What this workflow does\n\nThis workflow runs every day on a schedule and processes your entire old client database automatically. For each client, it checks whether they've replied to any of your emails in the last 30 days. If they have, it pauses automation and flags that client for manual reply. If they haven't, it fetches their last 10 email conversations, pulls scenario-based AI prompts and follow-up message direction templates from your Google Sheet, feeds everything into Claude 3.7 Sonnet to draft a highly personalized re-engagement email, sends it via Gmail, and updates your tracking sheet — all without any manual intervention.\n\nPerfect for agencies and freelancers who have past clients sitting idle in their database and want a fully automated, intelligent outreach system that feels human, not spammy.\n\n---\n\n### Key Features\n\n**Smart 30-day reply detection:** Before sending any email, the workflow checks the client's most recent email timestamp. If they replied within the last 30 days, automation is skipped and the sheet is flagged as \"Reply Manually\" so your team knows to handle it personally.\n\n**Scenario-based AI prompting:** Each client in your sheet is tagged with a Scenario. The workflow pulls the exact AI prompt and follow-up message direction that matches that scenario from your Google Sheet, so Claude always writes from the right context and angle.\n\n**Full conversation context for Claude:** Instead of drafting blindly, Claude receives the last 10 email conversations with the client, their original goal when hiring your agency, the detailed reason their contract ended, their industry, industry vertical, and the specific services they used — resulting in emails that feel genuinely personalized.\n\n**Structured email output:** Claude outputs a properly structured JSON with subject line, greeting, body content, and closing — ensuring the email is always cleanly formatted before sending.\n\n**Live Google Sheets tracking:** After every email sent, the workflow increments the email count in your sheet and updates the workflow status, giving you a live dashboard of where each client stands in the re-engagement sequence.\n\n**Rate limiting built-in:** A 1-minute wait between each client prevents Gmail API rate limit errors and ensures smooth processing even for large client lists.\n\n**Loop-based batch processing:** Every client in your database is processed one by one in a controlled loop — no skipped records, no duplicates.\n\n---\n\n### How it works\n\n**Step 1 — Daily trigger fires:** The workflow runs automatically every day using a Schedule Trigger. No manual action needed.\n\n**Step 2 — Loads client database:** Reads all rows from the \"Database\" sheet in your Google Sheet where the \"Manually Stop Workflow\" column is not flagged, so already-stopped clients are excluded automatically.\n\n**Step 3 — Loops through each client:** Passes each client record one by one into the processing loop using the Split In Batches node.\n\n**Step 4 — Checks latest email from client:** Fetches the single most recent email from the client's address using Gmail's filter by sender.\n\n**Step 5 — 30-day window check:** A JavaScript code node calculates how many days ago that email was sent, checks if it falls within the last 30 days, and formats the date cleanly (e.g., 21-Mar-2026).\n\n**Step 6 — Routes based on reply status:** A Switch node branches the flow:\n- If replied within 30 days → Updates sheet with \"Reply Manually\" status and the latest email content, then loops back to next client.\n- If no recent reply → Continues to AI email generation path.\n\n**Step 7 — Parallel data fetching:** Three nodes run in parallel — fetching the scenario-specific follow-up message template, the situation-based AI prompt, and the last 10 email conversations with the client from Gmail.\n\n**Step 8 — Bundles email history:** All 10 fetched emails are aggregated into a single text bundle to be passed into Claude as conversation context.\n\n**Step 9 — Merges all inputs:** A Merge node combines the follow-up template, situation prompt, and email conversation bundle into one unified data object.\n\n**Step 10 — AI drafts the email:** Claude 3.7 Sonnet receives the full context — prompt, follow-up direction, conversation history, client's goal, reason for contract ending, industry details, and services used — and drafts a re-engagement email tailored specifically to that client.\n\n**Step 11 — Structured output parsing:** The output is parsed into a clean JSON structure with subject, greeting, content, and closing fields using a Structured Output Parser.\n\n**Step 12 — Sends email via Gmail:** The formatted email is sent directly from your Gmail account to the client.\n\n**Step 13 — Updates sheet and loops:** The \"Number of Emails Sent\" counter is incremented in your sheet, the workflow waits 1 minute for rate limiting, then loops back to process the next client.\n\n---\n\n### Setup Requirements\n\n**Tools you'll need:**\n\n- Active n8n instance (self-hosted or n8n Cloud)\n- Google Sheets with OAuth access for client database management\n- Gmail account with OAuth credentials\n- Anthropic API key (for Claude 3.7 Sonnet)\n\n**Estimated setup time:** 20–30 minutes\n\n---\n\n### Configuration Steps\n\n**Add credentials in n8n:**\n- Google Sheets OAuth API\n- Gmail OAuth2 API\n- Anthropic API (for Claude 3.7 Sonnet)\n\n**Set up your Google Sheet with these tabs:**\n\nTab 1 — **Database** (main client list)\n- Client Name\n- Email Address\n- Scenario\n- Number of Emails Sent\n- Followup Workflow (Running / Reply Manually)\n- Latest Email from Client\n- Date of Latest Email from Client\n- The goal which client wanted to achieve by hiring an agency\n- Detailed Reason Why Contract Got Ended\n- Client is from Industry of\n- Client's Industry Vertical\n- Specific services they used\n- Manually Stop Workflow (STOP)\n\nTab 2 — **Follow-up Messages** (message templates)\n- Scenario\n- Number of Emails Sent\n- Followup Message Direction\n\nTab 3 — **Situation** (AI prompts per scenario)\n- Scenario\n- Prompt\n\n**Update the Google Sheet ID:** Replace all instances of `YOUR_GOOGLE_SHEET_ID` in the workflow nodes with your actual Google Sheet ID.\n\n**Update the send email address:** In the \"Send Re-engagement Email\" node, replace `YOUR_EMAIL@yourdomain.com` with the Gmail address you want to send from.\n\n**Fill your client database:** Add all old/inactive clients with their details, scenario tags, and goals into the Database tab.\n\n**Create your scenarios and templates:** Fill the Follow-up Messages and Situation tabs with the re-engagement angles and AI prompt instructions relevant to your business.\n\n**Activate the workflow:** Turn it on and let it run daily automatically.\n\n---\n\n### Use Cases\n\n**Marketing & digital agencies:** Re-engage a full database of past clients who stopped using your services — automatically, every single day, with zero manual effort.\n\n**Freelancers:** Keep past clients warm by sending intelligent, personalized check-in emails based on what they originally hired you for and why they left.\n\n**SaaS companies:** Run structured win-back campaigns for churned users by mapping scenarios to different churn reasons and tailoring AI messages accordingly.\n\n**Consultants:** Maintain long-term relationships with former clients by sending contextually relevant follow-ups that reference their original goals and show how you've improved.\n\n**Sales teams:** Use the 30-day reply detection to automatically filter out recently responsive leads and focus AI outreach only on truly cold contacts in your pipeline.\n\n---\n\n### Customization Options\n\n**Change the AI model:** Swap Claude 3.7 Sonnet for any other Anthropic model or replace with OpenAI GPT-4 in the LLM node — the agent and parser work with any LangChain-compatible model.\n\n**Adjust the reply detection window:** Change the `30` in the Date Checker code node to any number of days that fits your follow-up cadence (e.g., 14 days for more aggressive outreach).\n\n**Add more scenario types:** Simply add new rows to your Follow-up Messages and Situation sheets — the workflow dynamically fetches matching templates so no node changes are needed.\n\n**Modify email structure:** Edit the Structured Output Parser schema to add or remove fields like a PS section, CTA button text, or custom signature block.\n\n**Add notifications:** Connect a Slack, Discord, or webhook node after the Send Email node to notify your team every time a re-engagement email goes out.\n\n**Expand tracking:** Add more columns to your Google Sheet update nodes (e.g., last sent date, email subject used) to build a richer outreach history.\n\n---\n\n### Troubleshooting\n\n**Gmail not fetching emails:** Confirm your Gmail OAuth credentials are correctly connected and the sender filter is using the exact email address format from your sheet. Make sure Gmail API access is enabled in your Google Cloud Console.\n\n**Claude not generating emails:** Verify your Anthropic API key is active and has sufficient credits. Check that the Merge node is receiving all 3 inputs before passing data to the AI agent.\n\n**Sheet not updating:** Ensure the Google Sheets OAuth token has edit permissions on your spreadsheet. Confirm the \"Email Address\" column is set as the matching key in all update nodes.\n\n**Emails sending to wrong address:** Double-check that the `sendTo` field in the Send Email node is pointing to `YOUR_EMAIL@yourdomain.com` or the correct dynamic field reference.\n\n**Loop not processing all clients:** If some clients are being skipped, check the filter in the Old Client Database node — make sure the \"Manually Stop Workflow (STOP)\" column filter is only excluding rows where the value is explicitly set.\n\n**Rate limit errors on Gmail:** Increase the wait time in the Rate Limit Wait node from 1 minute to 2–3 minutes if you have a large client list or are hitting Gmail's sending limits.\n\n---\n\n### Resources\n\n- [n8n Documentation](https://docs.n8n.io)\n- [Anthropic Claude API](https://docs.anthropic.com)\n- [Gmail API Reference](https://developers.google.com/gmail/api)\n- [Google Sheets API](https://developers.google.com/sheets/api)\n- [n8n LangChain Agent Node](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/)\n\n---\n\n### Important Notes\n\nThis workflow is designed specifically for re-engagement outreach to past or inactive clients. It does not handle inbound replies — once a client responds, the workflow flags them for manual handling and stops automation for that contact. Make sure your Google Sheet is properly structured with all required columns before activating, as missing fields will cause the AI prompt to be incomplete and affect email quality. Always test with a small batch of 2–3 clients first before activating at full scale.\n\n---\n\n### Support\n\nNeed help setting this up or want a custom version built for your specific use case?\n\n📧 Email: [info@isawow.com](info@isawow.com)\n🌐 Website: [https://isawow.com/](https://isawow.com/)","workflow":{"meta":{"instanceId":"bc8ca75c203589705ae2e446cad7181d6f2a7cc1766f958ef9f34810e53b8cb2"},"nodes":[{"id":"89e9df44-87b0-4135-9dad-4c6b495b4327","name":"⏰ Daily Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[144,688],"parameters":{"rule":{"interval":[{}]}},"typeVersion":1.2},{"id":"9bdc7268-9feb-4145-93d6-ae4ddb14568e","name":"📋 Old Client Database","type":"n8n-nodes-base.googleSheets","position":[544,688],"parameters":{"options":{},"filtersUI":{"values":[{"lookupColumn":"Manually Stop Workflow (STOP)"}]},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit#gid=0","cachedResultName":"Database"},"documentId":{"__rl":true,"mode":"list","value":"YOUR_GOOGLE_SHEET_ID","cachedResultUrl":"https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit","cachedResultName":"Old Client Outreach - AI"}},"typeVersion":4.5},{"id":"27d10a5f-0e9b-40b0-b631-0166801ac70b","name":"🔄 Loop: Process Each Client","type":"n8n-nodes-base.splitInBatches","position":[800,688],"parameters":{"options":{}},"typeVersion":3},{"id":"29a33a56-34fc-416b-b660-2f9c02d596fe","name":"📧 Fetch Client's Latest Email","type":"n8n-nodes-base.gmail","position":[1200,704],"webhookId":"0dcdfa90-a62a-4176-8462-949cbfaceb59","parameters":{"limit":1,"simple":false,"filters":{"sender":"={{ $json['Email Address'] }}"},"options":{},"operation":"getAll"},"typeVersion":2.1},{"id":"aa569f3c-6841-468f-860c-40c7d0003cbc","name":"📅 Date Checker (30-Day Window)","type":"n8n-nodes-base.code","position":[1520,704],"parameters":{"jsCode":"// Loop over input items and add date check fields\nfor (const item of $input.all()) {\n  const inputDate = new Date(item.json.date || '2024-09-24T02:52:24.000Z');\n  const currentDate = new Date();\n  const thirtyDaysAgo = new Date(Date.now() - 30 * 24 * 60 * 60 * 1000);\n  \n  // Check if date is within last 30 days\n  const isWithinLast30Days = inputDate >= thirtyDaysAgo;\n  \n  // Calculate days difference\n  const daysDifference = Math.floor((currentDate - inputDate) / (1000 * 60 * 60 * 24));\n  \n  // Format date as 1-Jan-2025\n  const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', \n                  'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n  const formattedDate = `${inputDate.getDate()}-${months[inputDate.getMonth()]}-${inputDate.getFullYear()}`;\n  \n  item.json.isWithinLast30Days = isWithinLast30Days;\n  item.json.daysDifference = daysDifference;\n  item.json.thirtyDaysAgo = thirtyDaysAgo.toISOString();\n  item.json.formattedDate = formattedDate;\n}\n\nreturn $input.all();"},"typeVersion":2},{"id":"610063e5-bae7-458b-a18f-97f47a477ce8","name":"🔀 Route: Client Replied Recently?","type":"n8n-nodes-base.switch","position":[1808,704],"parameters":{"rules":{"values":[{"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"8c6b4da5-b35b-40de-a12f-04320bf4dad2","operator":{"type":"boolean","operation":"true","singleValue":true},"leftValue":"={{ $json.isWithinLast30Days }}","rightValue":""}]}},{"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"34086b43-439f-4aa3-80fd-ef5bf712130f","operator":{"type":"boolean","operation":"false","singleValue":true},"leftValue":"={{ $json.isWithinLast30Days }}","rightValue":""}]}}]},"options":{"allMatchingOutputs":true}},"typeVersion":3.2},{"id":"51c154d2-5e86-4a10-9e70-2f8e24e21079","name":"📝 Update: Mark Reply Manually","type":"n8n-nodes-base.googleSheets","position":[1696,0],"parameters":{"columns":{"value":{"Email Address":"={{ $('📋 Old Client Database').item.json['Email Address'] }}","Lastest Email from Client":"={{ $('📧 Fetch Client\\'s Latest Email').item.json.text }}","Date of Lastest Email from Client":"={{ $('📅 Date Checker (30-Day Window)').item.json.formattedDate }}","Followup Workflow (Running,Reply Manually)":"Reply Manually"},"schema":[{"id":"Client Name","type":"string","display":true,"required":false,"displayName":"Client Name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Email Address","type":"string","display":true,"removed":false,"required":false,"displayName":"Email Address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Followup Workflow (Running,Reply Manually)","type":"string","display":true,"removed":false,"required":false,"displayName":"Followup Workflow (Running,Reply Manually)","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Lastest Email from Client","type":"string","display":true,"removed":false,"required":false,"displayName":"Lastest Email from Client","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Date of Lastest Email from Client","type":"string","display":true,"removed":false,"required":false,"displayName":"Date of Lastest Email from Client","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["Email Address"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit#gid=0","cachedResultName":"Database"},"documentId":{"__rl":true,"mode":"list","value":"YOUR_GOOGLE_SHEET_ID","cachedResultUrl":"https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit","cachedResultName":"Old Client Outreach - AI"}},"typeVersion":4.6},{"id":"8f58f7d8-31fc-4cf8-8a44-318dbc5cba6c","name":"✅ Update: Mark Running Status","type":"n8n-nodes-base.googleSheets","position":[2912,688],"parameters":{"columns":{"value":{"Email Address":"={{ $('📋 Old Client Database').item.json['Email Address'] }}","Lastest Email from Client":"=","Date of Lastest Email from Client":"=","Followup Workflow (Running,Reply Manually)":"Running"},"schema":[{"id":"Client Name","type":"string","display":true,"required":false,"displayName":"Client Name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Email Address","type":"string","display":true,"removed":false,"required":false,"displayName":"Email Address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Followup Workflow (Running,Reply Manually)","type":"string","display":true,"removed":false,"required":false,"displayName":"Followup Workflow (Running,Reply Manually)","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Lastest Email from Client","type":"string","display":true,"removed":false,"required":false,"displayName":"Lastest Email from Client","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Date of Lastest Email from Client","type":"string","display":true,"removed":false,"required":false,"displayName":"Date of Lastest Email from Client","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["Email Address"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit#gid=0","cachedResultName":"Database"},"documentId":{"__rl":true,"mode":"list","value":"YOUR_GOOGLE_SHEET_ID","cachedResultUrl":"https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit","cachedResultName":"Old Client Outreach - AI"}},"typeVersion":4.6},{"id":"0a2c7486-ce86-4fc6-981c-2b56a870584d","name":"📩 Fetch Followup Message Template","type":"n8n-nodes-base.googleSheets","onError":"continueErrorOutput","position":[2912,208],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"={{ $('📋 Old Client Database').item.json.Scenario }}","lookupColumn":"Scenario"},{"lookupValue":"={{ $('📋 Old Client Database').item.json['Number of Emails Sent'] }}","lookupColumn":"Number of Emails Sent"}]},"sheetName":{"__rl":true,"mode":"list","value":1592686330,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit#gid=1592686330","cachedResultName":"Follow-up Messages"},"documentId":{"__rl":true,"mode":"list","value":"YOUR_GOOGLE_SHEET_ID","cachedResultUrl":"https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit","cachedResultName":"Old Client Outreach - AI"}},"typeVersion":4.5},{"id":"ca5c0663-144d-4593-9ee2-e8a11c471021","name":"📂 Fetch Situation-Based Prompt","type":"n8n-nodes-base.googleSheets","onError":"continueErrorOutput","position":[2912,432],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"={{ $('📋 Old Client Database').item.json.Scenario }}","lookupColumn":"Scenario"}]},"sheetName":{"__rl":true,"mode":"list","value":666858875,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit#gid=666858875","cachedResultName":"Situation"},"documentId":{"__rl":true,"mode":"list","value":"YOUR_GOOGLE_SHEET_ID","cachedResultUrl":"https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit","cachedResultName":"Old Client Outreach - AI"}},"typeVersion":4.5},{"id":"9e7a4705-a5fe-4234-adae-0a820c0f1bd9","name":"📬 Fetch 10 Email Conversations","type":"n8n-nodes-base.gmail","position":[3216,688],"webhookId":"32925029-dac8-447a-a175-a4f8639eb724","parameters":{"limit":10,"simple":false,"filters":{"sender":"={{ $json['Email Address'] }}"},"options":{},"operation":"getAll"},"typeVersion":2.1},{"id":"dd5a2d99-6a69-430d-abf4-ead01e1b2895","name":"📦 Bundle Email Conversations","type":"n8n-nodes-base.aggregate","position":[3504,688],"parameters":{"options":{},"fieldsToAggregate":{"fieldToAggregate":[{"fieldToAggregate":"text"}]}},"typeVersion":1},{"id":"3c31b9f3-c5a9-4aa5-bfe4-e3c43e1ac082","name":"🔀 Merge: Templates + Conversations","type":"n8n-nodes-base.merge","position":[3792,416],"parameters":{"numberInputs":3},"typeVersion":3.1},{"id":"9acf05f9-3b31-4e3c-9e64-a7cba15af2ce","name":"📦 Prepare AI Input Bundle","type":"n8n-nodes-base.aggregate","position":[4112,432],"parameters":{"options":{},"fieldsToAggregate":{"fieldToAggregate":[{"fieldToAggregate":"Prompt"},{"fieldToAggregate":"text"},{"fieldToAggregate":"Followup Message Direction"}]}},"typeVersion":1},{"id":"96e3fc4f-4547-4f22-b876-3828bec4c472","name":"🤖 Re-engagement Email Drafter","type":"@n8n/n8n-nodes-langchain.agent","position":[4640,688],"parameters":{"text":"=Prompt {{ $json.Prompt }}\n\nDirection of Message: {{ $('📩 Fetch Followup Message Template').item.json['Followup Message Direction'] }}\n\nLast email conversations: {{ $json.text }}\n\nBased upon the conversation with the email \n{{ $('📋 Old Client Database').item.json[\"Email Address\"] }}\n, draft next email.\n\nInitial goal which client wanted to achieve:\n{{ $('📋 Old Client Database').item.json['The goal which client wanted to achieve by hiring an agency'] }}\n\nReason for ending: \n{{ $('📋 Old Client Database').item.json['Detailed Reason Why Contract Got Ended'] }}\n\nClient's industry: {{ $('📋 Old Client Database').item.json['Client is from Industry of'] }}\n\nIndustry Vertical: {{ $('📋 Old Client Database').item.json['Client\\'s Industry Vertical'] }}\n\nServices They Used: {{ $('📋 Old Client Database').item.json['Specific services they used'] }}","options":{"systemMessage":"Draft an email based on the recent conversation done with the client convincing him that, we have now improved and help him achieve his goals."},"promptType":"define","hasOutputParser":true},"typeVersion":1.9},{"id":"6a754e84-34b7-4e36-9eb0-cbac2c1cffca","name":"🤖 Claude 3.7 Sonnet LLM","type":"@n8n/n8n-nodes-langchain.lmChatAnthropic","position":[4544,976],"parameters":{"model":{"__rl":true,"mode":"list","value":"claude-3-7-sonnet-20250219","cachedResultName":"Claude 3.7 Sonnet"},"options":{}},"typeVersion":1.3},{"id":"0176734f-6361-4e74-875b-b702d5f7d833","name":"📋 Email Structure Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[4704,976],"parameters":{"schemaType":"manual","inputSchema":"{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"subject\": {\n\t\t\t\"type\": \"string\",\n\t\t\t\"description\": \"The email subject line\"\n\t\t},\n\t\t\"body\": {\n\t\t\t\"type\": \"object\",\n\t\t\t\"properties\": {\n\t\t\t\t\"greeting\": {\n\t\t\t\t\t\"type\": \"string\",\n\t\t\t\t\t\"description\": \"Email opening/greeting\"\n\t\t\t\t},\n\t\t\t\t\"content\": {\n\t\t\t\t\t\"type\": \"string\",\n\t\t\t\t\t\"description\": \"Main email message content\"\n\t\t\t\t},\n\t\t\t\t\"closing\": {\n\t\t\t\t\t\"type\": \"string\",\n\t\t\t\t\t\"description\": \"Email closing/signature\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"required\": [\"content\"]\n\t\t}\n\t},\n\t\"required\": [\"subject\", \"body\"]\n}"},"typeVersion":1.2},{"id":"159a92f3-08a2-4403-9ff6-2f0d8841883e","name":"📤 Send Re-engagement Email","type":"n8n-nodes-base.gmail","position":[4976,688],"webhookId":"9b147f81-1674-4a3a-9ece-e042bb35d9d5","parameters":{"sendTo":"user@example.com","message":"={{ $json.output.body.greeting }}\n\n{{ $json.output.body.content }}","options":{"appendAttribution":false},"subject":"={{ $json.output.subject }}","emailType":"text"},"typeVersion":2.1},{"id":"622c4b53-1c73-480f-b646-eb402aadd9ca","name":"📊 Update Email Count in Sheet","type":"n8n-nodes-base.googleSheets","position":[5568,1072],"parameters":{"columns":{"value":{"Email Address":"={{ $('📋 Old Client Database').item.json['Email Address'] }}","Number of Emails Sent":"={{ (parseInt($('📋 Old Client Database').item.json['Number of Emails Sent']) || 0) + 1 }}"},"schema":[{"id":"Client Name","type":"string","display":true,"required":false,"displayName":"Client Name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Email Address","type":"string","display":true,"removed":false,"required":false,"displayName":"Email Address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Number of Emails Sent","type":"string","display":true,"required":false,"displayName":"Number of Emails Sent","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["Email Address"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit#gid=0","cachedResultName":"Database"},"documentId":{"__rl":true,"mode":"list","value":"YOUR_GOOGLE_SHEET_ID","cachedResultUrl":"https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID/edit","cachedResultName":"Old Client Outreach - AI"}},"typeVersion":4.5},{"id":"a18e1f37-35ca-47cc-b921-cbf0fba31436","name":"⏱️ Rate Limit Wait (1 Min)","type":"n8n-nodes-base.wait","position":[5888,1072],"webhookId":"b9b7e53a-bf01-49bd-b888-99c6e6112185","parameters":{"unit":"minutes"},"typeVersion":1.1},{"id":"6dd7b1b5-f7be-4f4a-99a1-b9cdfaa07e10","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-416,384],"parameters":{"width":512,"height":816,"content":"## AI-Powered Old Client Re-engagement\n\n\nThis workflow automatically re-engages old clients by sending\npersonalized AI-written follow-up emails daily — based on past\nconversations, client industry, and situation-specific templates.\nIt skips clients who have already replied, avoiding spam and\nkeeping outreach professional.\n\n\n## ⚙️ How it works\n\n1. Schedule trigger runs the workflow daily\n2. Loads all old clients from Google Sheets database\n3. Loops through each client one by one\n4. Fetches the client's latest email from Gmail\n5. Checks if client replied in the last 30 days\n6. If replied → marks \"Reply Manually\" in sheet → skips to next client\n7. If no reply → marks \"Running\" and fetches templates + past conversations\n8. Merges follow-up template, situation prompt, and email history\n9. Claude 3.7 Sonnet drafts a personalized re-engagement email\n10. Email is sent via Gmail automatically\n11. Sheet updates email count, waits 1 min, then moves to next client\n\n## 🛠️ Setup steps\n\n☐ Connect Google Sheets OAuth credentials\n☐ Connect Gmail OAuth credentials\n☐ Replace YOUR_GOOGLE_SHEET_ID with your actual Sheet ID\n☐ Replace YOUR_EMAIL@yourdomain.com in Send Email node\n☐ Add Anthropic API key for Claude 3.7 Sonnet model\n☐ Fill client data in \"Database\" sheet\n☐ Add follow-up templates in \"Follow-up Messages\" sheet\n☐ Add situation prompts in \"Situation\" sheet\n☐ Activate workflow\n"},"typeVersion":1},{"id":"49884918-4cbd-4281-a96c-457f3a9ab533","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[144,496],"parameters":{"color":7,"width":496,"height":240,"content":"## 1. Trigger & Load Clients\n\nSchedule trigger fires daily and loads all client\nrecords from the \"Database\" sheet in Google Sheets.\n\nOnly rows where \"Manually Stop Workflow (STOP)\"\nis not triggered are fetched — giving you manual\noverride control directly from the sheet."},"typeVersion":1},{"id":"625f29fd-68b8-42f6-9a65-364a8248b569","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[752,480],"parameters":{"color":7,"width":384,"height":256,"content":"## 2. Loop: Process Each Client\n\nSplits all loaded clients into individual items\nand processes them one by one in a loop.\n\n- Loop start: picks next client from the list\n- Loop end: returns here after each client is done\n- Stops automatically when all clients are processed"},"typeVersion":1},{"id":"ff354ada-4d2e-4bed-ba8e-366d4714fcf0","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[1200,480],"parameters":{"color":7,"width":416,"height":272,"content":"## 3. Check Latest Email from Client\n\nFetches the most recent email received from\nthe client's email address via Gmail.\n\nDate Checker then calculates:\n- Was the email received in the last 30 days?\n- How many days ago was it?\n- Formats the date as: DD-Mon-YYYY"},"typeVersion":1},{"id":"4afd2a35-da26-4f23-8c8f-0f16394d97ee","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[1712,480],"parameters":{"color":7,"width":336,"height":272,"content":"## 4. Route by Reply Status\n\nChecks the result from Date Checker:\n\n✅ Replied within 30 days\n→ Route 0: Mark as \"Reply Manually\"\n\n🔁 No reply in last 30 days\n→ Route 1: Continue with AI follow-up sequence"},"typeVersion":1},{"id":"81db3afb-63cb-4dd1-bf93-cddb0689fbff","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[1600,-112],"parameters":{"color":7,"width":304,"content":"## 5. Client Replied — Skip\n\nSaves latest email and date in sheet.\nMarks status as \"Reply Manually\" and skips."},"typeVersion":1},{"id":"7dbd2db3-69d2-4ae6-a0e8-e08496697608","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[2784,80],"parameters":{"color":7,"width":848,"height":656,"content":"## 6. Fetch Templates & Conversations\n\nMarks client as \"Running\" in sheet.\nFetches follow-up template, situation prompt,\nand last 10 emails for AI context."},"typeVersion":1},{"id":"6b4a4b93-f446-49ff-8198-b046436a668f","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[3792,272],"parameters":{"color":7,"width":416,"height":208,"content":"## 7. Merge & Prepare AI Input\n\nCombines template, prompt, and email history\ninto one clean input for the AI agent."},"typeVersion":1},{"id":"9465878c-7ac3-42db-bc39-06abf666b4ec","name":"Sticky Note8","type":"n8n-nodes-base.stickyNote","position":[4640,528],"parameters":{"color":7,"width":432,"height":208,"content":"## 8. AI Drafts & Sends Email\n\nClaude 3.7 writes a personalized re-engagement\nemail using past conversations and client context.\nValidates structure and sends via Gmail."},"typeVersion":1},{"id":"9b9fdc90-4062-4409-90f3-1c084451f45c","name":"Sticky Note9","type":"n8n-nodes-base.stickyNote","position":[5568,944],"parameters":{"color":7,"width":416,"height":176,"content":"## 9. Update Count & Loop Back\n\nIncrements email count in sheet.\nWaits 1 min then loops to next client."},"typeVersion":1}],"pinData":{},"connections":{"📋 Old Client Database":{"main":[[{"node":"🔄 Loop: Process Each Client","type":"main","index":0}]]},"⏰ Daily Schedule Trigger":{"main":[[{"node":"📋 Old Client Database","type":"main","index":0}]]},"🤖 Claude 3.7 Sonnet LLM":{"ai_languageModel":[[{"node":"🤖 Re-engagement Email Drafter","type":"ai_languageModel","index":0}]]},"📋 Email Structure Parser":{"ai_outputParser":[[{"node":"🤖 Re-engagement Email Drafter","type":"ai_outputParser","index":0}]]},"📦 Prepare AI Input Bundle":{"main":[[{"node":"🤖 Re-engagement Email Drafter","type":"main","index":0}]]},"📤 Send Re-engagement Email":{"main":[[{"node":"📊 Update Email Count in Sheet","type":"main","index":0}]]},"⏱️ Rate Limit Wait (1 Min)":{"main":[[{"node":"🔄 Loop: Process Each Client","type":"main","index":0}]]},"🔄 Loop: Process Each Client":{"main":[[],[{"node":"📧 Fetch Client's Latest Email","type":"main","index":0}]]},"✅ Update: Mark Running Status":{"main":[[{"node":"📬 Fetch 10 Email Conversations","type":"main","index":0}]]},"📦 Bundle Email Conversations":{"main":[[{"node":"🔀 Merge: Templates + Conversations","type":"main","index":2}]]},"📊 Update Email Count in Sheet":{"main":[[{"node":"⏱️ Rate Limit Wait (1 Min)","type":"main","index":0}]]},"📝 Update: Mark Reply Manually":{"main":[[{"node":"🔄 Loop: Process Each Client","type":"main","index":0}]]},"📧 Fetch Client's Latest Email":{"main":[[{"node":"📅 Date Checker (30-Day Window)","type":"main","index":0}]]},"🤖 Re-engagement Email Drafter":{"main":[[{"node":"📤 Send Re-engagement Email","type":"main","index":0}]]},"📂 Fetch Situation-Based Prompt":{"main":[[{"node":"🔀 Merge: Templates + Conversations","type":"main","index":1}]]},"📅 Date Checker (30-Day Window)":{"main":[[{"node":"🔀 Route: Client Replied Recently?","type":"main","index":0}]]},"📬 Fetch 10 Email Conversations":{"main":[[{"node":"📦 Bundle Email Conversations","type":"main","index":0}]]},"📩 Fetch Followup Message Template":{"main":[[{"node":"🔀 Merge: Templates + Conversations","type":"main","index":0}]]},"🔀 Route: Client Replied Recently?":{"main":[[{"node":"📝 Update: Mark Reply Manually","type":"main","index":0}],[{"node":"📂 Fetch Situation-Based Prompt","type":"main","index":0},{"node":"📩 Fetch Followup Message Template","type":"main","index":0},{"node":"✅ Update: Mark Running Status","type":"main","index":0}]]},"🔀 Merge: Templates + Conversations":{"main":[[{"node":"📦 Prepare AI Input Bundle","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":30,"nodeTypes":{"n8n-nodes-base.code":{"count":1},"n8n-nodes-base.wait":{"count":1},"n8n-nodes-base.gmail":{"count":3},"n8n-nodes-base.merge":{"count":1},"n8n-nodes-base.switch":{"count":1},"n8n-nodes-base.aggregate":{"count":2},"n8n-nodes-base.stickyNote":{"count":10},"n8n-nodes-base.googleSheets":{"count":6},"n8n-nodes-base.splitInBatches":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":1},"n8n-nodes-base.scheduleTrigger":{"count":1},"@n8n/n8n-nodes-langchain.lmChatAnthropic":{"count":1},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"isaWOW","username":"isawow","bio":"","verified":true,"links":[""],"avatar":"https://gravatar.com/avatar/8e8c1f17a2be80c0d1b0248585660dff3062cefeda523bbafeafcdb813f52ffa?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":24,"icon":"file:merge.svg","name":"n8n-nodes-base.merge","codex":{"data":{"alias":["Join","Concatenate","Wait"],"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/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"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/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/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/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.merge/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Merge"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTc3XzUxOCkiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNDhDMCAyMS40OTAzIDIxLjQ5MDMgMCA0OCAwSDExMkMxMzguNTEgMCAxNjAgMjEuNDkwMyAxNjAgNDhWNTZIMTk2LjI1MkMyNDAuNDM1IDU2IDI3Ni4yNTIgOTEuODE3MiAyNzYuMjUyIDEzNlYxOTJDMjc2LjI1MiAyMTQuMDkxIDI5NC4xNjEgMjMyIDMxNi4yNTIgMjMySDM1MlYyMjRDMzUyIDE5Ny40OSAzNzMuNDkgMTc2IDQwMCAxNzZINDY0QzQ5MC41MSAxNzYgNTEyIDE5Ny40OSA1MTIgMjI0VjI4OEM1MTIgMzE0LjUxIDQ5MC41MSAzMzYgNDY0IDMzNkg0MDBDMzczLjQ5IDMzNiAzNTIgMzE0LjUxIDM1MiAyODhWMjgwSDMxNi4yNTJDMjk0LjE2MSAyODAgMjc2LjI1MiAyOTcuOTA5IDI3Ni4yNTIgMzIwVjM3NkMyNzYuMjUyIDQyMC4xODMgMjQwLjQzNSA0NTYgMTk2LjI1MiA0NTZIMTYwVjQ2NEMxNjAgNDkwLjUxIDEzOC41MSA1MTIgMTEyIDUxMkg0OEMyMS40OTAzIDUxMiAwIDQ5MC41MSAwIDQ2NFY0MDBDMCAzNzMuNDkgMjEuNDkwMyAzNTIgNDggMzUySDExMkMxMzguNTEgMzUyIDE2MCAzNzMuNDkgMTYwIDQwMFY0MDhIMTk2LjI1MkMyMTMuOTI1IDQwOCAyMjguMjUyIDM5My42NzMgMjI4LjI1MiAzNzZWMzIwQzIyOC4yNTIgMjk0Ljc4NCAyMzguODU5IDI3Mi4wNDQgMjU1Ljg1MyAyNTZDMjM4Ljg1OSAyMzkuOTU2IDIyOC4yNTIgMjE3LjIxNiAyMjguMjUyIDE5MlYxMzZDMjI4LjI1MiAxMTguMzI3IDIxMy45MjUgMTA0IDE5Ni4yNTIgMTA0SDE2MFYxMTJDMTYwIDEzOC41MSAxMzguNTEgMTYwIDExMiAxNjBINDhDMjEuNDkwMyAxNjAgMCAxMzguNTEgMCAxMTJWNDhaTTEwNCA0OEMxMDguNDE4IDQ4IDExMiA1MS41ODE3IDExMiA1NlYxMDRDMTEyIDEwOC40MTggMTA4LjQxOCAxMTIgMTA0IDExMkg1NkM1MS41ODE3IDExMiA0OCAxMDguNDE4IDQ4IDEwNFY1NkM0OCA1MS41ODE3IDUxLjU4MTcgNDggNTYgNDhIMTA0Wk00NTYgMjI0QzQ2MC40MTggMjI0IDQ2NCAyMjcuNTgyIDQ2NCAyMzJWMjgwQzQ2NCAyODQuNDE4IDQ2MC40MTggMjg4IDQ1NiAyODhINDA4QzQwMy41ODIgMjg4IDQwMCAyODQuNDE4IDQwMCAyODBWMjMyQzQwMCAyMjcuNTgyIDQwMy41ODIgMjI0IDQwOCAyMjRINDU2Wk0xMTIgNDA4QzExMiA0MDMuNTgyIDEwOC40MTggNDAwIDEwNCA0MDBINTZDNTEuNTgxNyA0MDAgNDggNDAzLjU4MiA0OCA0MDhWNDU2QzQ4IDQ2MC40MTggNTEuNTgxNyA0NjQgNTYgNDY0SDEwNEMxMDguNDE4IDQ2NCAxMTIgNDYwLjQxOCAxMTIgNDU2VjQwOFoiIGZpbGw9IiM1NEI4QzkiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTc3XzUxOCI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Merge","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":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":356,"icon":"file:gmail.svg","name":"n8n-nodes-base.gmail","codex":{"data":{"alias":["email","human","form","wait","hitl","approval"],"resources":{"generic":[{"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/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with 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-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/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/using-automation-to-boost-productivity-in-the-workplace/","icon":"💪","label":"Using Automation to Boost Productivity in the Workplace"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gmail/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"transform\"]","defaults":{"name":"Gmail"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMTkzIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZmlsbD0iIzQyODVGNCIgZD0iTTU4LjE4MiAxOTIuMDVWOTMuMTRMMjcuNTA3IDY1LjA3NyAwIDQ5LjUwNHYxMjUuMDkxYzAgOS42NTggNy44MjUgMTcuNDU1IDE3LjQ1NSAxNy40NTV6Ii8+PHBhdGggZmlsbD0iIzM0QTg1MyIgZD0iTTE5Ny44MTggMTkyLjA1aDQwLjcyN2M5LjY1OSAwIDE3LjQ1NS03LjgyNiAxNy40NTUtMTcuNDU1VjQ5LjUwNWwtMzEuMTU2IDE3LjgzNy0yNy4wMjYgMjUuNzk4eiIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im01OC4xODIgOTMuMTQtNC4xNzQtMzguNjQ3IDQuMTc0LTM2Ljk4OUwxMjggNjkuODY4bDY5LjgxOC01Mi4zNjQgNC42NyAzNC45OTItNC42NyA0MC42NDRMMTI4IDE0NS41MDR6Ii8+PHBhdGggZmlsbD0iI0ZCQkMwNCIgZD0iTTE5Ny44MTggMTcuNTA0VjkzLjE0TDI1NiA0OS41MDRWMjYuMjMxYzAtMjEuNTg1LTI0LjY0LTMzLjg5LTQxLjg5LTIwLjk0NXoiLz48cGF0aCBmaWxsPSIjQzUyMjFGIiBkPSJtMCA0OS41MDQgMjYuNzU5IDIwLjA3TDU4LjE4MiA5My4xNFYxNy41MDRMNDEuODkgNS4yODZDMjQuNjEtNy42NiAwIDQuNjQ2IDAgMjYuMjN6Ii8+PC9zdmc+"},"displayName":"Gmail","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"id":514,"icon":"fa:pause-circle","name":"n8n-nodes-base.wait","codex":{"data":{"alias":["pause","sleep","delay","timeout"],"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/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.wait/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Wait","color":"#804050"},"iconData":{"icon":"pause-circle","type":"icon"},"displayName":"Wait","typeVersion":1,"nodeCategories":[{"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":839,"icon":"fa:clock","name":"n8n-nodes-base.scheduleTrigger","codex":{"data":{"alias":["Time","Scheduler","Polling","Cron","Interval"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\",\"schedule\"]","defaults":{"name":"Schedule Trigger","color":"#31C49F"},"iconData":{"icon":"clock","type":"icon"},"displayName":"Schedule Trigger","typeVersion":1,"nodeCategories":[{"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":1145,"icon":"file:anthropic.svg","name":"@n8n/n8n-nodes-langchain.lmChatAnthropic","codex":{"data":{"alias":["claude","sonnet","opus"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatanthropic/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"Anthropic Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NiIgaGVpZ2h0PSIzMiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzdEN0Q4NyIgZD0iTTMyLjczIDBoLTYuOTQ1TDM4LjQ1IDMyaDYuOTQ1ek0xMi42NjUgMCAwIDMyaDcuMDgybDIuNTktNi43MmgxMy4yNWwyLjU5IDYuNzJoNy4wODJMMTkuOTI5IDB6bS0uNzAyIDE5LjMzNyA0LjMzNC0xMS4yNDYgNC4zMzQgMTEuMjQ2eiIvPjwvc3ZnPg=="},"displayName":"Anthropic 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":1236,"icon":"file:aggregate.svg","name":"n8n-nodes-base.aggregate","codex":{"data":{"alias":["Aggregate","Combine","Flatten","Transform","Array","List","Item"],"details":"","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.aggregate/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Aggregate"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIj48ZyBmaWxsPSIjRkY2RDVBIiBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTMyIDE0OGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE0NmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJINDRjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6bTAgOTZjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNDZjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDQ0Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEyem0wIDk2YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTQ2YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkg0NGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGQ9Ik03NCA3NmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDExNi4yMTdjMTcuNjczIDAgMzIgMTQuMzI3IDMyIDMydjU2YzAgMjYuOTc4IDEwLjI3MiA1MS41NTcgMjcuMTE5IDcwLjAzOSA1LjA1NSA1LjU0NSA1LjA1NSAxNC4zNzcgMCAxOS45MjItMTYuODQ3IDE4LjQ4Mi0yNy4xMTkgNDMuMDYxLTI3LjExOSA3MC4wMzl2NTZjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMySDg2Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTE2LjIxN2M0NC4xODMgMCA4MC0zNS44MTcgODAtODB2LTU2YzAtMzAuOTI4IDI1LjA3Mi01NiA1Ni01NmE1Ljc4MyA1Ljc4MyAwIDAgMCA1Ljc4My01Ljc4M3YtMzYuNDM0YTUuNzgzIDUuNzgzIDAgMCAwLTUuNzgzLTUuNzgzYy0zMC45MjggMC01Ni0yNS4wNzItNTYtNTZ2LTU2YzAtNDQuMTgzLTM1LjgxNy04MC04MC04MEg4NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnoiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zNzYgMjQ0YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTEyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkgzODhjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJhIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDUxMnY1MTJIMHoiLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz4="},"displayName":"Aggregate","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":38,"name":"Lead Nurturing"},{"id":51,"name":"Multimodal AI"}],"image":[]}}