{"workflow":{"id":12994,"name":"Generate and send AI-powered sales quotes with Gmail, OpenAI and Supabase","views":60,"recentViews":0,"totalViews":60,"createdAt":"2026-01-25T16:31:47.627Z","description":"An automated quote generation system that monitors your inbox, classifies quote requests using AI, calculates intelligent pricing based on historical data, and provides a professional dashboard for review and sending quotes with one click.\n\nhttps://github.com/nickpuru/proposal-generation","workflow":{"meta":{"instanceId":"80868c6faaefe32f23363c3593878f9dc4b2470f6611e5a958f476842a987c73","templateCredsSetupCompleted":true},"nodes":[{"id":"0c011a93-d7c4-4527-9312-37fdacfa7e50","name":"📋 Workflow Overview","type":"n8n-nodes-base.stickyNote","position":[8464,-944],"parameters":{"width":480,"height":784,"content":"## 🎯 AI QUOTE SYSTEM - COMPLETE WORKFLOW\n\n**What This Workflow Does:**\n\n1. **Two Input Sources:**\n   - Gmail inbox monitoring (every 60 seconds)\n   - Website form submissions via webhook\n\n2. **AI Processing Pipeline:**\n   - Filters emails to identify real quote requests\n   - Extracts contact info, service details, budget, timeline\n   - Classifies complexity, urgency, qualification score\n   - Searches past similar quotes for pricing intelligence\n   - Calculates 3-tier pricing (Good/Better/Best)\n   - Generates personalized draft quote email\n\n3. **Database & Notifications:**\n   - Saves everything to Supabase\n   - Sends Slack alert for high-value requests (>$10K)\n   - Status set to 'PENDING_REVIEW'\n\n4. **Replit Dashboard Integration:**\n   - Dashboard reads from Supabase\n   - Human reviews, edits pricing/email if needed\n   - Click 'Approve & Send' triggers webhook back to n8n\n   - n8n sends email via Gmail, updates status to 'SENT'\n\n**Credentials Needed:**\n- Gmail OAuth2\n- OpenAI API\n- Supabase API\n- Slack API (optional)"},"typeVersion":1},{"id":"da3094f4-988c-450b-a024-c949138e5f9a","name":"📧 Email Input","type":"n8n-nodes-base.stickyNote","position":[9072,-928],"parameters":{"width":340,"height":344,"content":"## 📧 EMAIL INPUT PATH\n\nMonitors Gmail inbox every 60 seconds.\n\n**Configuration:**\n- Poll interval: Every minute\n- Filters: INBOX label only\n- Format: Resolved (full content)\n\n**Output:**\n- Subject, body (text + HTML)\n- From address\n- Message ID for tracking"},"typeVersion":1},{"id":"722de022-9220-4276-adda-46ff47754cc2","name":"Gmail Trigger","type":"n8n-nodes-base.gmailTrigger","position":[9136,-544],"parameters":{"simple":false,"filters":{"labelIds":["INBOX"]},"options":{},"pollTimes":{"item":[{"mode":"everyMinute"}]}},"credentials":{"gmailOAuth2":{"id":"credential-id","name":"nick@reprisesai.com"}},"typeVersion":1},{"id":"971916a3-2efa-46ce-be64-ee91f1bf952f","name":"🌐 Form Input","type":"n8n-nodes-base.stickyNote","position":[9072,-144],"parameters":{"width":340,"height":380,"content":"## 🌐 WEBSITE FORM INPUT\n\nReceives form submissions from website.\n\n**Webhook URL:**\n`https://your-n8n.com/webhook/quote-request`\n\n**Expected Fields:**\n- name, email, phone\n- company\n- service_type\n- budget, timeline\n- message/requirements\n\n**Note:** Forms skip AI filter"},"typeVersion":1},{"id":"4f35b202-4986-4d5d-a75b-85dcaaf3e589","name":"Webhook - Form Submission","type":"n8n-nodes-base.webhook","position":[9136,256],"webhookId":"quote-request-webhook","parameters":{"path":"quote-request","options":{},"httpMethod":"POST","responseMode":"responseNode"},"typeVersion":1},{"id":"79423dd1-8345-4ed4-b799-9c9c131d55d6","name":"Respond - Form OK","type":"n8n-nodes-base.respondToWebhook","position":[9136,464],"parameters":{"options":{},"respondWith":"json","responseBody":"={\n  \"success\": true,\n  \"message\": \"Form received\"\n}"},"typeVersion":1.1},{"id":"c2dc102a-2bd0-432a-93f5-397c851a4554","name":"🤖 AI Filter","type":"n8n-nodes-base.stickyNote","position":[9568,-1008],"parameters":{"width":340,"height":428,"content":"## 🤖 AI EMAIL FILTER\n\n**Purpose:** Determines if email is a quote request.\n\n**Filters OUT:**\n- Newsletters & marketing\n- Spam\n- Support tickets\n- Auto-replies\n- Calendar invites\n\n**Passes THROUGH:**\n- Pricing inquiries\n- RFPs\n- Project requests\n- \"How much does X cost?\"\n\n**Threshold:** confidence >= 60"},"typeVersion":1},{"id":"03c7fcea-18b0-4623-b7ec-a11703f9abaf","name":"OpenAI - Email Filter","type":"@n8n/n8n-nodes-langchain.openAi","position":[9616,-528],"parameters":{"modelId":{"__rl":true,"mode":"list","value":"gpt-4o"},"options":{"temperature":0.2},"messages":{"values":[{"content":"=Analyze this email and determine if it's a quote request for services.\n\n{{ $json.headers.subject }}\n**Email Body:** {{ $json.text }}\n{{ $json.headers.from }}\n\nReturn ONLY valid JSON with:\n- is_quote_request (boolean)\n- confidence (0-100)\n- detected_signals (array of keywords that indicate it's a quote)\n- reasoning (brief explanation)\n\nA quote request typically includes:\n- Request for pricing/quote/estimate\n- Service/product inquiry\n- Budget or timeline mentioned\n\nNOT a quote request:\n- Newsletters, marketing\n- Support tickets\n- Auto-replies\n- Calendar invites\n- Spam\n\nReturn ONLY the JSON object, no markdown formatting."}]}},"credentials":{"openAiApi":{"id":"credential-id","name":"OpenAi account 3"}},"typeVersion":1.8},{"id":"bc328334-1c96-4f9b-82ba-b02044c80279","name":"Parse Filter Response","type":"n8n-nodes-base.code","position":[9632,-320],"parameters":{"jsCode":"// Parse the OpenAI response\nconst response = $input.first().json;\nlet content = response.text || response.output || response.message?.content || '';\n\n// If content is empty, try to get it from the response object directly\nif (!content && typeof response === 'object') {\n  content = JSON.stringify(response);\n}\n\ntry {\n  // Clean up any markdown formatting\n  let cleanJson = content.replace(/```json\\n?/g, '').replace(/```\\n?/g, '').trim();\n  const parsed = JSON.parse(cleanJson);\n  \n  return {\n    json: {\n      ...parsed,\n      original_email: $('Gmail Trigger').first().json\n    }\n  };\n} catch (e) {\n  return {\n    json: {\n      is_quote_request: false,\n      confidence: 0,\n      detected_signals: [],\n      reasoning: 'Failed to parse AI response: ' + e.message,\n      original_email: $('Gmail Trigger').first().json\n    }\n  };\n}"},"typeVersion":2},{"id":"819f3511-6791-4f24-b6af-57c6a2139ea2","name":"⚡ Routing","type":"n8n-nodes-base.stickyNote","position":[10064,-944],"parameters":{"width":340,"height":272,"content":"## ⚡ ROUTING DECISION\n\n**Email Path:**\nChecks if:\n- `is_quote_request = true`\n- `confidence >= 60`\n\n**YES** → Continue to extraction\n**NO** → Archive email\n\n**Saves API costs** by filtering spam"},"typeVersion":1},{"id":"2444b9ab-d015-431b-8be8-e66242688a8a","name":"IF - Is Quote Request?","type":"n8n-nodes-base.if","position":[10144,-544],"parameters":{"options":{},"conditions":{"options":{"version":1,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"condition-quote-request","operator":{"type":"boolean","operation":"equals"},"leftValue":"={{ $json.is_quote_request }}","rightValue":true},{"id":"condition-confidence","operator":{"type":"number","operation":"gte"},"leftValue":"={{ $json.confidence }}","rightValue":60}]}},"typeVersion":2},{"id":"296bddf1-0074-498a-837c-a7f33b9c7634","name":"🔀 Merge Sources","type":"n8n-nodes-base.stickyNote","position":[10576,-944],"parameters":{"width":340,"height":236,"content":"## 🔀 MERGE DATA SOURCES\n\nNormalizes data from both paths:\n- Email → AI filter output\n- Form → Webhook body\n\nAdds `source` field: 'email' or 'form'\n\nEnsures consistent structure."},"typeVersion":1},{"id":"c86dccf6-5726-4e31-a264-11e153d5fc73","name":"Merge - Both Paths","type":"n8n-nodes-base.merge","position":[10624,-560],"parameters":{},"typeVersion":3},{"id":"57578f96-24af-4549-a083-22ad3a95e281","name":"Normalize Data","type":"n8n-nodes-base.code","position":[10624,-320],"parameters":{"jsCode":"// Normalize data from both sources\nconst item = $input.first().json;\n\nlet normalized = {\n  source: 'unknown',\n  raw_content: '',\n  contact_email: '',\n  timestamp: new Date().toISOString()\n};\n\n// Check if from email path (has original_email from Parse Filter)\nif (item.original_email) {\n  normalized.source = 'email';\n  normalized.raw_content = item.original_email.text || item.original_email.textPlain || item.original_email.snippet || '';\n  \n  // Extract email - original_email.from.value[0].address structure\n  if (item.original_email.from && item.original_email.from.value && item.original_email.from.value[0]) {\n    normalized.contact_email = item.original_email.from.value[0].address || '';\n  }\n  \n  normalized.subject = item.original_email.subject || '';\n  normalized.email_id = item.original_email.id || '';\n}\n// Check if from form path\nelse if (item.body || item.name) {\n  normalized.source = 'form';\n  normalized.raw_content = JSON.stringify(item.body || item);\n  normalized.contact_email = item.email || item.body?.email || '';\n  normalized.contact_name = item.name || item.body?.name || '';\n  normalized.company_name = item.company || item.body?.company || '';\n  normalized.phone = item.phone || item.body?.phone || '';\n  normalized.service_type = item.service_type || item.body?.service_type || '';\n  normalized.budget = item.budget || item.body?.budget || '';\n  normalized.timeline = item.timeline || item.body?.timeline || '';\n  normalized.message = item.message || item.body?.message || '';\n}\n\nreturn { json: normalized };"},"typeVersion":2},{"id":"67a71f8d-5ff0-485d-890a-46b9d44fa4a3","name":"🧠 Extraction","type":"n8n-nodes-base.stickyNote","position":[11072,-992],"parameters":{"width":380,"height":396,"content":"## 🧠 AI EXTRACTION & CLASSIFICATION\n\n**Extracts:**\n- contact_name, company_name\n- email, phone\n- service_type (categorized)\n- budget_range, timeline\n- special_requirements\n- decision_maker (boolean)\n\n**Classifies:**\n- complexity_score (1-10)\n- urgency_level (low/med/high)\n- value_estimate (USD)\n- qualification_score (0-100)"},"typeVersion":1},{"id":"66615f59-9f19-4b2b-a975-01a831e22c49","name":"OpenAI - Extract & Classify","type":"@n8n/n8n-nodes-langchain.openAi","position":[11136,-544],"parameters":{"modelId":{"__rl":true,"mode":"list","value":"gpt-4o"},"options":{"temperature":0.2},"messages":{"values":[{"content":"=Extract and classify this quote request.\n\n**Source:** {{ $json.source }}\n**Content:** {{ $json.raw_content }}\n**Email:** {{ $json.contact_email }}\n{{ $json.subject ? '**Subject:** ' + $json.subject : '' }}\n\nExtract these fields:\n- contact_name (string)\n- company_name (string)\n- email (string)\n- phone (string or null)\n- service_type (categorize as: freight_logistics, warehousing, last_mile, customs, consulting, other)\n- budget_range (string or null)\n- timeline (string)\n- special_requirements (string or null)\n- decision_maker (boolean)\n\nClassify:\n- complexity_score (integer 1-10)\n- urgency_level (string: low, medium, or high)\n- value_estimate (number in USD)\n- qualification_score (integer 0-100, based on: budget info +20, timeline +15, decision maker +25, clear requirements +20, company info +10, phone +10)\n\nReturn ONLY valid JSON with all fields. Use null for missing optional fields. No markdown."}]}},"credentials":{"openAiApi":{"id":"credential-id","name":"OpenAi account 3"}},"typeVersion":1.8},{"id":"0e8e9507-2a40-4097-bf1b-5dd051a7d370","name":"Parse Extraction","type":"n8n-nodes-base.code","position":[11216,-304],"parameters":{"jsCode":"// Parse the extraction response\nconst response = $input.first().json;\nlet content = response.text || response.output || response.message?.content || '';\nconst normalized = $('Normalize Data').first().json;\n\ntry {\n  let cleanJson = content.replace(/```json\\n?/g, '').replace(/```\\n?/g, '').trim();\n  const extracted = JSON.parse(cleanJson);\n  \n  return {\n    json: {\n      ...extracted,\n      source: normalized.source,\n      raw_content: normalized.raw_content,\n      email_id: normalized.email_id || null,\n      received_at: normalized.timestamp\n    }\n  };\n} catch (e) {\n  return {\n    json: {\n      contact_name: 'Unknown',\n      company_name: 'Unknown',\n      email: normalized.contact_email || 'user@example.com',\n      phone: null,\n      service_type: 'other',\n      budget_range: null,\n      timeline: 'Unknown',\n      special_requirements: null,\n      decision_maker: false,\n      complexity_score: 5,\n      urgency_level: 'medium',\n      value_estimate: 10000,\n      qualification_score: 30,\n      source: normalized.source,\n      raw_content: normalized.raw_content,\n      parse_error: e.message\n    }\n  };\n}"},"typeVersion":2},{"id":"2e48ad2c-9c04-41fe-8193-8cdf53926e7a","name":"💾 Save Initial","type":"n8n-nodes-base.stickyNote","position":[11568,-944],"parameters":{"width":340,"height":268,"content":"## 💾 SAVE INITIAL RECORD\n\nCreates record in Supabase:\n- All extracted contact info\n- Classification scores\n- Status: 'PROCESSING'\n- Timestamp\n\nReturns record ID for updates."},"typeVersion":1},{"id":"3737ac06-8bb0-48d9-a743-e427ce7f2ea2","name":"Prepare Insert","type":"n8n-nodes-base.code","position":[11632,-544],"parameters":{"jsCode":"// Prepare data for Supabase insert\nconst extracted = $input.first().json;\n\nreturn {\n  json: {\n    contact_name: extracted.contact_name || 'Unknown',\n    company_name: extracted.company_name || 'Unknown',\n    email: extracted.email,\n    phone: extracted.phone,\n    service_type: extracted.service_type,\n    budget_range: extracted.budget_range,\n    timeline: extracted.timeline,\n    special_requirements: extracted.special_requirements,\n    complexity_score: extracted.complexity_score,\n    urgency_level: extracted.urgency_level,\n    value_estimate: extracted.value_estimate,\n    qualification_score: extracted.qualification_score,\n    source: extracted.source,\n    status: 'PROCESSING'\n  }\n};"},"typeVersion":2},{"id":"c173a985-956a-486e-b00c-5a342081003c","name":"Supabase - Save Initial","type":"n8n-nodes-base.supabase","position":[11632,-320],"parameters":{"tableId":"quote_requests","dataToSend":"autoMapInputData"},"credentials":{"supabaseApi":{"id":"credential-id","name":"YouTube Demo"}},"typeVersion":1},{"id":"f4df8101-1619-45e2-917d-41d01a6f38c7","name":"📊 Historical","type":"n8n-nodes-base.stickyNote","position":[12048,-944],"parameters":{"width":340,"height":360,"content":"## 📊 SEARCH SIMILAR QUOTES\n\n**Queries Supabase for:**\n- Same service_type\n- Status = 'WON'\n- Last 10 similar projects\n\n**Provides:**\n- Historical pricing data\n- Win rates\n- Scope comparisons\n\nImproves pricing accuracy."},"typeVersion":1},{"id":"07e27243-c975-4df8-9902-56380742c834","name":"Supabase - Search Similar","type":"n8n-nodes-base.supabase","position":[12128,-544],"parameters":{"limit":10,"tableId":"quote_requests","operation":"getAll","filterType":"string","filterString":"=status=eq.WON&order=created_at.desc"},"credentials":{"supabaseApi":{"id":"credential-id","name":"YouTube Demo"}},"typeVersion":1,"alwaysOutputData":true},{"id":"7e1022f9-74cf-4971-a2a8-c172f7d8ab3f","name":"💰 Pricing","type":"n8n-nodes-base.stickyNote","position":[12576,-944],"parameters":{"width":360,"height":368,"content":"## 💰 AI PRICING CALCULATION\n\n**Inputs:**\n- Current request details\n- Historical similar quotes\n- Business pricing rules\n\n**Calculates:**\n- good_price (basic)\n- better_price (standard)\n- best_price (premium)\n- recommended_tier\n- pricing_rationale\n\n**Formula:**\nBase × Complexity × Urgency"},"typeVersion":1},{"id":"5507604b-dca5-4202-8a87-d3ed4bc7ebea","name":"OpenAI - Calculate Pricing","type":"@n8n/n8n-nodes-langchain.openAi","position":[12624,-544],"parameters":{"modelId":{"__rl":true,"mode":"list","value":"gpt-4o"},"options":{"temperature":0.3},"messages":{"values":[{"content":"=Calculate pricing for this quote request.\n\n**Current Request:**\n- Service: {{ $('Parse Extraction').first().json.service_type }}\n- Complexity: {{ $('Parse Extraction').first().json.complexity_score }}/10\n- Urgency: {{ $('Parse Extraction').first().json.urgency_level }}\n- Value Estimate: ${{ $('Parse Extraction').first().json.value_estimate }}\n- Timeline: {{ $('Parse Extraction').first().json.timeline }}\n\n**Similar Past Quotes:**\n{{ JSON.stringify($json) }}\n\n**Pricing Rules:**\n- Base rate: $150/hour\n- Complexity multiplier: 1.0 (score 1-3) to 2.0 (score 8-10)\n- Urgency multiplier: 1.0 (low), 1.25 (medium), 1.5 (high)\n- Minimum project: $5,000\n- Weight toward past quote pricing if available\n\n**Generate 3-tier pricing:**\n- Good: Basic service (0.8x calculated price)\n- Better: Standard + extras (1.0x) - RECOMMENDED\n- Best: Premium all-inclusive (1.4x)\n\nReturn ONLY valid JSON with no markdown:\n{\"good_price\": number, \"better_price\": number, \"best_price\": number, \"recommended_tier\": \"better\", \"pricing_rationale\": \"explanation\"}"}]}},"credentials":{"openAiApi":{"id":"credential-id","name":"OpenAi account 3"}},"typeVersion":1.8},{"id":"2a11336b-eb07-42ff-b302-58dd54768dbe","name":"Parse Pricing","type":"n8n-nodes-base.code","position":[12624,-320],"parameters":{"jsCode":"// Parse pricing response\nconst response = $input.first().json;\nlet content = response.text || response.output || response.message?.content || '';\n\ntry {\n  let cleanJson = content.replace(/```json\\n?/g, '').replace(/```\\n?/g, '').trim();\n  const pricing = JSON.parse(cleanJson);\n  \n  // Get record ID from Supabase save\n  const supabaseResult = $('Supabase - Save Initial').first().json;\n  const recordId = Array.isArray(supabaseResult) ? supabaseResult[0]?.id : supabaseResult?.id;\n  \n  return {\n    json: {\n      ...pricing,\n      extracted: $('Parse Extraction').first().json,\n      record_id: recordId\n    }\n  };\n} catch (e) {\n  const estimate = $('Parse Extraction').first().json.value_estimate || 10000;\n  const supabaseResult = $('Supabase - Save Initial').first().json;\n  const recordId = Array.isArray(supabaseResult) ? supabaseResult[0]?.id : supabaseResult?.id;\n  \n  return {\n    json: {\n      good_price: Math.round(estimate * 0.8),\n      better_price: Math.round(estimate),\n      best_price: Math.round(estimate * 1.4),\n      recommended_tier: 'better',\n      pricing_rationale: 'Fallback pricing based on estimate',\n      extracted: $('Parse Extraction').first().json,\n      record_id: recordId\n    }\n  };\n}"},"typeVersion":2},{"id":"bd97ad96-b88b-47df-b953-180a3dd925bd","name":"✉️ Draft Email","type":"n8n-nodes-base.stickyNote","position":[13072,-944],"parameters":{"width":360,"height":336,"content":"## ✉️ GENERATE DRAFT EMAIL\n\n**AI writes quote including:**\n- Professional greeting\n- Acknowledgment of needs\n- 3-tier pricing options\n- What's included per tier\n- Clear CTA\n- Professional signature\n\n**Guidelines:**\n- Friendly tone\n- Under 300 words\n- Clear formatting"},"typeVersion":1},{"id":"52beadb7-b2b8-47d4-a7af-d1eccb982c78","name":"OpenAI - Generate Draft","type":"@n8n/n8n-nodes-langchain.openAi","position":[13136,-544],"parameters":{"modelId":{"__rl":true,"mode":"list","value":"gpt-4o"},"options":{"temperature":0.7},"messages":{"values":[{"content":"=Write a professional quote email for this request.\n\n**Contact:** {{ $json.extracted.contact_name }} from {{ $json.extracted.company_name }}\n**Email:** {{ $json.extracted.email }}\n**Service:** {{ $json.extracted.service_type }}\n**Timeline:** {{ $json.extracted.timeline }}\n**Requirements:** {{ $json.extracted.special_requirements || 'None specified' }}\n\n**Pricing Options:**\n- Good (Basic): ${{ $json.good_price }}\n- Better (Standard): ${{ $json.better_price }} ← Recommended\n- Best (Premium): ${{ $json.best_price }}\n\n**Rationale:** {{ $json.pricing_rationale }}\n\n**Email Guidelines:**\n1. Professional but friendly tone\n2. Address them by first name\n3. Acknowledge their specific needs/timeline\n4. Present 3 tiers clearly with bullet points for what's included\n5. Mark the recommended option\n6. Include CTA (schedule a call or reply with questions)\n7. Keep under 300 words\n8. Sign as 'The Team'\n9. Don't use em dashes \n\nWrite ONLY the email body text. No subject line, no JSON, no markdown formatting."}]}},"credentials":{"openAiApi":{"id":"credential-id","name":"OpenAi account 3"}},"typeVersion":1.8},{"id":"91811f78-e3f2-4156-ad0a-f731e407be08","name":"Prepare Update","type":"n8n-nodes-base.code","position":[13136,-320],"parameters":{"jsCode":"// Extract draft email and prepare update\nconst response = $input.first().json;\nconst draftEmail = response.text || response.output || response.message?.content || '';\nconst pricing = $('Parse Pricing').first().json;\n\nreturn {\n  json: {\n    id: pricing.record_id,\n    good_price: pricing.good_price,\n    better_price: pricing.better_price,\n    best_price: pricing.best_price,\n    draft_email: draftEmail,\n    priority_score: pricing.extracted.qualification_score,\n    status: 'PENDING_REVIEW',\n    extracted: pricing.extracted\n  }\n};"},"typeVersion":2},{"id":"b04bcea0-0bc2-4758-98a5-58f36101b57e","name":"🔄 Update DB","type":"n8n-nodes-base.stickyNote","position":[13568,-944],"parameters":{"width":340,"height":292,"content":"## 🔄 UPDATE DATABASE\n\n**Adds to record:**\n- good_price\n- better_price\n- best_price\n- draft_email content\n- priority_score\n- Status: 'PENDING_REVIEW'\n\n**Now ready for:**\nHuman review in dashboard"},"typeVersion":1},{"id":"28d1e3a5-82a4-4819-a7b4-e94fcd510161","name":"Supabase - Update Complete","type":"n8n-nodes-base.supabase","position":[13632,-544],"parameters":{"filters":{"conditions":[{"keyName":"id","keyValue":"={{ $json.id }}","condition":"eq"}]},"tableId":"quote_requests","fieldsUi":{"fieldValues":[{"fieldId":"good_price","fieldValue":"={{ $json.good_price }}"},{"fieldId":"better_price","fieldValue":"={{ $json.better_price }}"},{"fieldId":"best_price","fieldValue":"={{ $json.best_price }}"},{"fieldId":"draft_email","fieldValue":"={{ $json.draft_email }}"},{"fieldId":"priority_score","fieldValue":"={{ $json.priority_score }}"},{"fieldId":"status","fieldValue":"PENDING_REVIEW"}]},"operation":"update"},"credentials":{"supabaseApi":{"id":"credential-id","name":"YouTube Demo"}},"typeVersion":1},{"id":"c5e81a95-b31a-46cf-b8b5-138bb4d94bee","name":"🔔 Slack Alert","type":"n8n-nodes-base.stickyNote","position":[14064,-944],"parameters":{"width":340,"height":332,"content":"## 🔔 SLACK NOTIFICATION\n\n**Triggers when:**\nvalue_estimate >= $10,000\n\n**Alert includes:**\n- Company name\n- Contact name\n- Estimated value\n- Service type\n- Urgency level\n- Dashboard link\n\n**Optional:** Replace with email"},"typeVersion":1},{"id":"8594da05-9ee9-4100-aefd-227ad43550a1","name":"IF - High Value?","type":"n8n-nodes-base.if","position":[14128,-544],"parameters":{"options":{},"conditions":{"options":{"version":1,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"high-value-check","operator":{"type":"number","operation":"gte"},"leftValue":"={{ $('Prepare Update').first().json.extracted.value_estimate }}","rightValue":10000}]}},"typeVersion":2},{"id":"22ce20d4-d45d-4c10-97fe-f7a4fe180cf5","name":"Slack - High Value Alert","type":"n8n-nodes-base.slack","position":[14128,-320],"webhookId":"c63f12d4-5f5c-4f56-ba81-0dd4422ddff8","parameters":{"text":"=🔥 *High-Value Quote Request!*\n\n*Company:* {{ $('Prepare Update').first().json.extracted.company_name }}\n*Contact:* {{ $('Prepare Update').first().json.extracted.contact_name }}\n*Email:* {{ $('Prepare Update').first().json.extracted.email }}\n*Estimated Value:* ${{ $('Prepare Update').first().json.extracted.value_estimate }}\n*Service:* {{ $('Prepare Update').first().json.extracted.service_type }}\n*Urgency:* {{ $('Prepare Update').first().json.extracted.urgency_level }}\n\n<https://your-replit-dashboard.com|View in Dashboard>","select":"channel","channelId":{"__rl":true,"mode":"list","value":"C08MU2RNGTU","cachedResultName":"ai-assistant"},"otherOptions":{},"authentication":"oAuth2"},"credentials":{"slackOAuth2Api":{"id":"credential-id","name":"OAuth Connection (WORKS)"}},"typeVersion":2.2},{"id":"8c2d5fca-0898-45ba-b909-246bebda356e","name":"📤 Send Webhook","type":"n8n-nodes-base.stickyNote","position":[10464,976],"parameters":{"width":380,"height":404,"content":"## 📤 SEND QUOTE WEBHOOK\n\n**Triggered by Replit** when user clicks\n'Approve & Send'\n\n**Receives:**\n- quote_id\n- recipient_email\n- company_name\n- service_type\n- final_email_body\n\n**Actions:**\n1. Send email via Gmail\n2. Update status to 'SENT'\n3. Return success response"},"typeVersion":1},{"id":"e8e0812c-1835-43e3-8c37-75fa139f4d99","name":"Webhook - Send Quote","type":"n8n-nodes-base.webhook","position":[10576,1424],"webhookId":"send-quote-webhook","parameters":{"path":"send-quote","options":{},"httpMethod":"POST","responseMode":"responseNode"},"typeVersion":1},{"id":"f1d4d017-4f4b-4180-aeb9-6e901a1fa7c1","name":"Gmail - Send Quote","type":"n8n-nodes-base.gmail","position":[11072,1424],"webhookId":"c56f28c6-78c3-4922-b80a-8c08092a5627","parameters":{"sendTo":"={{ $json.body.recipient_email }}","message":"={{ $json.body.final_email_body }}","options":{},"subject":"=Quote for {{ $json.body.company_name }} - {{ $json.body.service_type }}","emailType":"text"},"credentials":{"gmailOAuth2":{"id":"credential-id","name":"nick@reprisesai.com"}},"typeVersion":2.1},{"id":"9f2332b9-f09e-429a-8309-3e7975e28224","name":"Set Sent Status","type":"n8n-nodes-base.code","position":[11568,1424],"parameters":{"jsCode":"return {\n  json: {\n    id: $('Webhook - Send Quote').first().json.body.quote_id,\n    status: 'SENT',\n    sent_at: new Date().toISOString()\n  }\n};"},"typeVersion":2},{"id":"5a3ee42b-d3dd-4f35-ac2a-9bfc8ac22605","name":"Supabase - Mark Sent","type":"n8n-nodes-base.supabase","position":[12064,1424],"parameters":{"filters":{"conditions":[{"keyName":"id","keyValue":"={{ $json.id }}","condition":"eq"}]},"tableId":"quote_requests","fieldsUi":{"fieldValues":[{"fieldId":"status","fieldValue":"={{ $json.status }}"},{"fieldId":"sent_at","fieldValue":"={{ $json.sent_at }}"}]},"operation":"update"},"credentials":{"supabaseApi":{"id":"credential-id","name":"YouTube Demo"}},"typeVersion":1},{"id":"707851ff-ddf3-4884-9e95-a3347177ace3","name":"Respond - Success","type":"n8n-nodes-base.respondToWebhook","position":[12576,1424],"parameters":{"options":{},"respondWith":"json","responseBody":"={\n  \"success\": true,\n  \"quote_id\": \"{{ $('Webhook - Send Quote').first().json.body.quote_id }}\",\n  \"status\": \"SENT\",\n  \"message\": \"Quote sent to {{ $('Webhook - Send Quote').first().json.body.recipient_email }}\"\n}"},"typeVersion":1.1},{"id":"6e01b961-8b7d-4a43-af9c-13c17e15b15d","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[9072,-352],"parameters":{"width":336,"height":192,"content":"@[youtube](sAGuFV60Big)"},"typeVersion":1}],"pinData":{"Gmail Trigger":[{"id":"19af108e3f142d12","to":{"html":"<span class=\"mp_address_group\"><span class=\"mp_address_name\">Nick Puruczky</span> &lt;<a href=\"mailto:nick@reprisesai.com\" class=\"mp_address_email\">nick@reprisesai.com</a>&gt;</span>","text":"\"Nick Puruczky\" <nick@reprisesai.com>","value":[{"name":"Nick Puruczky","address":"nick@reprisesai.com"}]},"date":"2025-12-06T00:21:22.000Z","from":{"html":"<span class=\"mp_address_group\"><span class=\"mp_address_name\">Nick Puruczky</span> &lt;<a href=\"mailto:nick@reprisesai.com\" class=\"mp_address_email\">nick@reprisesai.com</a>&gt;</span>","text":"\"Nick Puruczky\" <nick@reprisesai.com>","value":[{"name":"Nick Puruczky","address":"nick@reprisesai.com"}]},"html":"<div dir=\"ltr\"><div><div class=\"gmail-standard-markdown gmail-grid-cols-1 gmail-grid gmail-gap-4 gmail-[&amp;_&gt;_*]:min-w-0\"><p class=\"gmail-font-claude-response-body gmail-break-words gmail-whitespace-normal\">Hi there,</p></div></div><div><div class=\"gmail-standard-markdown gmail-grid-cols-1 gmail-grid gmail-gap-4 gmail-[&amp;_&gt;_*]:min-w-0\"><p class=\"gmail-font-claude-response-body gmail-break-words gmail-whitespace-normal\">My name is Marcus Chen and I&#39;m the Operations Director at Pacific Coast Distributors. We&#39;re a mid-size distribution company based in Portland, handling about 2,500 shipments per month across the West Coast.</p></div></div><div><div class=\"gmail-standard-markdown gmail-grid-cols-1 gmail-grid gmail-gap-4 gmail-[&amp;_&gt;_*]:min-w-0\"><p class=\"gmail-font-claude-response-body gmail-break-words gmail-whitespace-normal\">We&#39;re looking for a logistics partner to help us with our Q1 2025 expansion. Specifically, we need:</p></div></div><div><div class=\"gmail-standard-markdown gmail-grid-cols-1 gmail-grid gmail-gap-4 gmail-[&amp;_&gt;_*]:min-w-0\"><ul class=\"gmail-[&amp;:not(:last-child)_ul]:pb-1 gmail-[&amp;:not(:last-child)_ol]:pb-1 gmail-list-disc gmail-space-y-2.5 gmail-pl-7\">\n<li class=\"gmail-whitespace-normal gmail-break-words\">Freight logistics for 3 new routes (Portland to LA, Portland to Phoenix, Portland to Denver)</li>\n<li class=\"gmail-whitespace-normal gmail-break-words\">Warehousing support in the LA area (approximately 15,000 sq ft)</li>\n<li class=\"gmail-whitespace-normal gmail-break-words\">Last-mile delivery integration with our existing Shopify setup</li>\n</ul></div></div><div><div class=\"gmail-standard-markdown gmail-grid-cols-1 gmail-grid gmail-gap-4 gmail-[&amp;_&gt;_*]:min-w-0\"><p class=\"gmail-font-claude-response-body gmail-break-words gmail-whitespace-normal\">Our timeline is tight - we need to be operational by February 15th. Budget-wise, we&#39;re looking at somewhere in the $15,000 - $25,000 range for the initial setup, with ongoing monthly support after that.</p></div></div><div><div class=\"gmail-standard-markdown gmail-grid-cols-1 gmail-grid gmail-gap-4 gmail-[&amp;_&gt;_*]:min-w-0\"><p class=\"gmail-font-claude-response-body gmail-break-words gmail-whitespace-normal\">I&#39;m the decision-maker on this project and have full budget authority. Can you send over a quote with different service tier options?</p></div></div></div>\n","text":"Hi there,\n\nMy name is Marcus Chen and I'm the Operations Director at Pacific Coast\nDistributors. We're a mid-size distribution company based in Portland,\nhandling about 2,500 shipments per month across the West Coast.\n\nWe're looking for a logistics partner to help us with our Q1 2025\nexpansion. Specifically, we need:\n\n   - Freight logistics for 3 new routes (Portland to LA, Portland to\n   Phoenix, Portland to Denver)\n   - Warehousing support in the LA area (approximately 15,000 sq ft)\n   - Last-mile delivery integration with our existing Shopify setup\n\nOur timeline is tight - we need to be operational by February 15th.\nBudget-wise, we're looking at somewhere in the $15,000 - $25,000 range for\nthe initial setup, with ongoing monthly support after that.\n\nI'm the decision-maker on this project and have full budget authority. Can\nyou send over a quote with different service tier options?\n","headers":{"to":"To: Nick Puruczky <nick@reprisesai.com>","date":"Date: Fri, 5 Dec 2025 19:21:22 -0500","from":"From: Nick Puruczky <nick@reprisesai.com>","subject":"Subject: Logistics Question","message-id":"Message-ID: <CAFLVhnxfX+ak8LRNVM-SZ=4-E2hHpTu4jjX9N5qTN7G0tsa7MA@mail.gmail.com>","content-type":"Content-Type: multipart/alternative; boundary=\"000000000000b4ddda06453d8a25\"","mime-version":"MIME-Version: 1.0"},"subject":"Logistics Question","labelIds":["UNREAD","IMPORTANT","SENT","INBOX"],"threadId":"19af108c3dd714ac","messageId":"<CAFLVhnxfX+ak8LRNVM-SZ=4-E2hHpTu4jjX9N5qTN7G0tsa7MA@mail.gmail.com>","textAsHtml":"<p>Hi there,</p><p>My name is Marcus Chen and I&apos;m the Operations Director at Pacific Coast<br/>Distributors. We&apos;re a mid-size distribution company based in Portland,<br/>handling about 2,500 shipments per month across the West Coast.</p><p>We&apos;re looking for a logistics partner to help us with our Q1 2025<br/>expansion. Specifically, we need:</p><p>   - Freight logistics for 3 new routes (Portland to LA, Portland to<br/>   Phoenix, Portland to Denver)<br/>   - Warehousing support in the LA area (approximately 15,000 sq ft)<br/>   - Last-mile delivery integration with our existing Shopify setup</p><p>Our timeline is tight - we need to be operational by February 15th.<br/>Budget-wise, we&apos;re looking at somewhere in the $15,000 - $25,000 range for<br/>the initial setup, with ongoing monthly support after that.</p><p>I&apos;m the decision-maker on this project and have full budget authority. Can<br/>you send over a quote with different service tier options?</p>","sizeEstimate":4028}],"Webhook - Send Quote":[{"body":{"quote_id":"30835261-94c6-4af0-b2a8-299c0670ddc5","company_name":"Reprise AI","service_type":"last_mile","recipient_email":"nick@reprisesai.com","final_email_body":"Hi Nick,\n\nThank you for reaching out to us at Reprise AI. We understand your need for last-mile transport from Charlotte, NC to Austin, TX within a 2-week timeline. We have carefully tailored three pricing options for you to consider:\n\n- **Good (Basic): $8,400**\n  - Essential transport services\n  - Reliable delivery within the specified timeline\n\n- **Better (Standard): $10,500** ← Recommended\n  - Enhanced transport services with optimized routing\n  - Priority support and tracking updates\n  - Balances cost and service level for optimal value\n\n- **Best (Premium): $14,700**\n  - Comprehensive transport solutions with maximum flexibility\n  - Dedicated customer support and real-time monitoring\n  - Priority handling and expedited delivery options\n\nGiven your high urgency and specific requirements, we recommend the 'Better' option as it offers a balanced approach, ensuring efficient service at a competitive price point.\n\nPlease feel free to reach out if you have any questions or would like to schedule a call to discuss your needs further. We are here to assist you every step of the way.\n\nLooking forward to working with you.\n\nBest regards,\n\nThe Team"},"query":{},"params":{},"headers":{"dnt":"1","host":"reprise.app.n8n.cloud","accept":"*/*","cf-ray":"9a98d5cbd5d64275-ATL","origin":"https://7194ee5c-f4f0-446c-9d7a-c15c97f5cc2f-00-244t7ql5zh44e.worf.replit.dev","referer":"https://7194ee5c-f4f0-446c-9d7a-c15c97f5cc2f-00-244t7ql5zh44e.worf.replit.dev/","cdn-loop":"cloudflare; loops=1; subreqs=1","priority":"u=1, i","cf-ew-via":"15","cf-worker":"n8n.cloud","sec-ch-ua":"\"Not_A Brand\";v=\"99\", \"Chromium\";v=\"142\"","x-real-ip":"2600:1700:e21:2b80:fd10:d581:d772:c8fe","cf-visitor":"{\"scheme\":\"https\"}","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36","cf-ipcountry":"US","content-type":"application/json","x-is-trusted":"yes","content-length":"1354","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"cross-site","accept-encoding":"gzip, br","accept-language":"en-US,en;q=0.9","x-forwarded-for":"2600:1700:e21:2b80:fd10:d581:d772:c8fe, 104.23.245.82","cf-connecting-ip":"2600:1700:e21:2b80:fd10:d581:d772:c8fe","sec-ch-ua-mobile":"?0","x-forwarded-host":"reprise.app.n8n.cloud","x-forwarded-port":"443","x-forwarded-proto":"https","sec-ch-ua-platform":"\"macOS\"","x-forwarded-server":"traefik-prod-users-gwc-2-ddc688d69-6987q"},"webhookUrl":"https://reprise.app.n8n.cloud/webhook/send-quote","executionMode":"production"}],"Webhook - Form Submission":[{"body":{"name":"Nick Puruczky","email":"nick@reprisesai.com","phone":"12345678910","company":"Reprise AI","timeline":"2 weeks","budgetRange":"10k-25k","serviceType":"last-mile-delivery","submittedAt":"2025-12-06T03:46:43.624Z","requirements":"I need transport from Charlotte NC to Austin TX"},"query":{},"params":{},"headers":{"host":"reprise.app.n8n.cloud","accept":"*/*","cf-ray":"9a98cc4004a72c12-ATL","cdn-loop":"cloudflare; loops=1; subreqs=1","cf-ew-via":"15","cf-worker":"n8n.cloud","x-real-ip":"34.139.174.69","cf-visitor":"{\"scheme\":\"https\"}","user-agent":"node","cf-ipcountry":"US","content-type":"application/json","x-is-trusted":"yes","content-length":"285","sec-fetch-mode":"cors","accept-encoding":"gzip, br","accept-language":"*","x-forwarded-for":"34.139.174.69, 172.71.22.215","cf-connecting-ip":"34.139.174.69","x-forwarded-host":"reprise.app.n8n.cloud","x-forwarded-port":"443","x-forwarded-proto":"https","x-forwarded-server":"traefik-prod-users-gwc-2-ddc688d69-6987q"},"webhookUrl":"https://reprise.app.n8n.cloud/webhook/quote-request","executionMode":"production"}]},"connections":{"Gmail Trigger":{"main":[[{"node":"OpenAI - Email Filter","type":"main","index":0}]]},"Parse Pricing":{"main":[[{"node":"OpenAI - Generate Draft","type":"main","index":0}]]},"Normalize Data":{"main":[[{"node":"OpenAI - Extract & Classify","type":"main","index":0}]]},"Prepare Insert":{"main":[[{"node":"Supabase - Save Initial","type":"main","index":0}]]},"Prepare Update":{"main":[[{"node":"Supabase - Update Complete","type":"main","index":0}]]},"Set Sent Status":{"main":[[{"node":"Supabase - Mark Sent","type":"main","index":0}]]},"IF - High Value?":{"main":[[{"node":"Slack - High Value Alert","type":"main","index":0}]]},"Parse Extraction":{"main":[[{"node":"Prepare Insert","type":"main","index":0}]]},"Gmail - Send Quote":{"main":[[{"node":"Set Sent Status","type":"main","index":0}]]},"Merge - Both Paths":{"main":[[{"node":"Normalize Data","type":"main","index":0}]]},"Supabase - Mark Sent":{"main":[[{"node":"Respond - Success","type":"main","index":0}]]},"Webhook - Send Quote":{"main":[[{"node":"Gmail - Send Quote","type":"main","index":0}]]},"OpenAI - Email Filter":{"main":[[{"node":"Parse Filter Response","type":"main","index":0}]]},"Parse Filter Response":{"main":[[{"node":"IF - Is Quote Request?","type":"main","index":0}]]},"IF - Is Quote Request?":{"main":[[{"node":"Merge - Both Paths","type":"main","index":0}],[]]},"OpenAI - Generate Draft":{"main":[[{"node":"Prepare Update","type":"main","index":0}]]},"Supabase - Save Initial":{"main":[[{"node":"Supabase - Search Similar","type":"main","index":0}]]},"Supabase - Search Similar":{"main":[[{"node":"OpenAI - Calculate Pricing","type":"main","index":0}]]},"Webhook - Form Submission":{"main":[[{"node":"Merge - Both Paths","type":"main","index":1},{"node":"Respond - Form OK","type":"main","index":0}]]},"OpenAI - Calculate Pricing":{"main":[[{"node":"Parse Pricing","type":"main","index":0}]]},"Supabase - Update Complete":{"main":[[{"node":"IF - High Value?","type":"main","index":0}]]},"OpenAI - Extract & Classify":{"main":[[{"node":"Parse Extraction","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":40,"nodeTypes":{"n8n-nodes-base.if":{"count":2},"n8n-nodes-base.code":{"count":7},"n8n-nodes-base.gmail":{"count":1},"n8n-nodes-base.merge":{"count":1},"n8n-nodes-base.slack":{"count":1},"n8n-nodes-base.webhook":{"count":2},"n8n-nodes-base.supabase":{"count":4},"n8n-nodes-base.stickyNote":{"count":15},"n8n-nodes-base.gmailTrigger":{"count":1},"@n8n/n8n-nodes-langchain.openAi":{"count":4},"n8n-nodes-base.respondToWebhook":{"count":2}}},"status":"published","readyToDemo":null,"user":{"name":"Nick","username":"nickpuru","bio":"","verified":false,"links":[],"avatar":"https://gravatar.com/avatar/190c8bc0f26400d809b18745a0aebd6624394e07ad25a782d79cc011f3528a50?r=pg&d=retro&size=200"},"nodes":[{"id":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":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":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":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":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":545,"icon":"file:supabase.svg","name":"n8n-nodes-base.supabase","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.supabase/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/supabase/"}]},"categories":["Data & Storage"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\"]","defaults":{"name":"Supabase"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDkiIGhlaWdodD0iMTEzIiBmaWxsPSJub25lIj48cGF0aCBmaWxsPSJ1cmwoI2EpIiBkPSJNNjMuNzA4IDExMC4yODRjLTIuODYgMy42MDEtOC42NTggMS42MjgtOC43MjctMi45N2wtMS4wMDctNjcuMjUxaDQ1LjIyYzguMTkgMCAxMi43NTggOS40NiA3LjY2NSAxNS44NzR6Ii8+PHBhdGggZmlsbD0idXJsKCNiKSIgZmlsbC1vcGFjaXR5PSIuMiIgZD0iTTYzLjcwOCAxMTAuMjg0Yy0yLjg2IDMuNjAxLTguNjU4IDEuNjI4LTguNzI3LTIuOTdsLTEuMDA3LTY3LjI1MWg0NS4yMmM4LjE5IDAgMTIuNzU4IDkuNDYgNy42NjUgMTUuODc0eiIvPjxwYXRoIGZpbGw9IiMzRUNGOEUiIGQ9Ik00NS4zMTcgMi4wNzFjMi44Ni0zLjYwMSA4LjY1Ny0xLjYyOCA4LjcyNiAyLjk3bC40NDIgNjcuMjUxSDkuODNjLTguMTkgMC0xMi43NTktOS40Ni03LjY2NS0xNS44NzV6Ii8+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJhIiB4MT0iNTMuOTc0IiB4Mj0iOTQuMTYzIiB5MT0iNTQuOTc0IiB5Mj0iNzEuODI5IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iIzI0OTM2MSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzNFQ0Y4RSIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiB4MT0iMzYuMTU2IiB4Mj0iNTQuNDg0IiB5MT0iMzAuNTc4IiB5Mj0iNjUuMDgxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3AvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1vcGFjaXR5PSIwIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PC9zdmc+"},"displayName":"Supabase","typeVersion":1,"nodeCategories":[{"id":3,"name":"Data & Storage"}]},{"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":824,"icon":"file:gmail.svg","name":"n8n-nodes-base.gmailTrigger","codex":{"data":{"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/trigger-nodes/n8n-nodes-base.gmailtrigger/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Communication"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\"]","defaults":{"name":"Gmail Trigger"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMTkzIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZmlsbD0iIzQyODVGNCIgZD0iTTU4LjE4MiAxOTIuMDVWOTMuMTRMMjcuNTA3IDY1LjA3NyAwIDQ5LjUwNHYxMjUuMDkxYzAgOS42NTggNy44MjUgMTcuNDU1IDE3LjQ1NSAxNy40NTV6Ii8+PHBhdGggZmlsbD0iIzM0QTg1MyIgZD0iTTE5Ny44MTggMTkyLjA1aDQwLjcyN2M5LjY1OSAwIDE3LjQ1NS03LjgyNiAxNy40NTUtMTcuNDU1VjQ5LjUwNWwtMzEuMTU2IDE3LjgzNy0yNy4wMjYgMjUuNzk4eiIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im01OC4xODIgOTMuMTQtNC4xNzQtMzguNjQ3IDQuMTc0LTM2Ljk4OUwxMjggNjkuODY4bDY5LjgxOC01Mi4zNjQgNC42NyAzNC45OTItNC42NyA0MC42NDRMMTI4IDE0NS41MDR6Ii8+PHBhdGggZmlsbD0iI0ZCQkMwNCIgZD0iTTE5Ny44MTggMTcuNTA0VjkzLjE0TDI1NiA0OS41MDRWMjYuMjMxYzAtMjEuNTg1LTI0LjY0LTMzLjg5LTQxLjg5LTIwLjk0NXoiLz48cGF0aCBmaWxsPSIjQzUyMjFGIiBkPSJtMCA0OS41MDQgMjYuNzU5IDIwLjA3TDU4LjE4MiA5My4xNFYxNy41MDRMNDEuODkgNS4yODZDMjQuNjEtNy42NiAwIDQuNjQ2IDAgMjYuMjN6Ii8+PC9zdmc+"},"displayName":"Gmail Trigger","typeVersion":1,"nodeCategories":[{"id":6,"name":"Communication"}]},{"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":1250,"icon":"file:openAi.svg","name":"@n8n/n8n-nodes-langchain.openAi","codex":{"data":{"alias":["LangChain","ChatGPT","Sora","DallE","whisper","audio","transcribe","tts","assistant"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.openai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Miscellaneous","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg1IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NiAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MSA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSJibGFjayIvPgo8L3N2Zz4K"},"displayName":"OpenAI","typeVersion":2,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":35,"name":"Document Extraction"},{"id":49,"name":"AI Summarization"}],"image":[]}}