{"workflow":{"id":13593,"name":"Analyze customer sales calls and update CRM with Whisper and GPT-4","views":64,"recentViews":0,"totalViews":64,"createdAt":"2026-02-22T15:13:40.284Z","description":"## AI Customer Call Analyzer — Voice → Insights → CRM with GPT-4\n\nConverts raw sales call recordings into structured CRM intelligence. Uploads audio → transcribes via Whisper → GPT-4 extracts intent, sentiment, objections, next steps → updates CRM and sends a structured summary to the sales team.\n\n### How it works\n\n1. **Upload Call Recording** - Webhook receives audio file upload (mp3, wav, m4a) from sales rep portal\n2. **Validate & Prepare Audio** - Checks file type, size limits, extracts call metadata\n3. **Transcribe via Whisper** - Sends audio to OpenAI Whisper API for high-accuracy transcription\n4. **Wait — Transcription Buffer** - Holds until transcription is confirmed complete\n5. **GPT-4 Call Intelligence** - Extracts intent, sentiment, objections, buying signals, action items\n6. **MCP Context Enrichment** - Pulls CRM history and enriches analysis with account context\n7. **Update CRM Record** - Writes structured insights back to CRM (HubSpot / Salesforce)\n8. **Send Sales Summary** - Emails rep and manager with call scorecard and next steps\n9. **Audit Log** - Records all processing steps for compliance and coaching\n\n### Setup Steps\n\n1. Import this workflow into n8n\n2. Configure credentials:\n   - **OpenAI API** - For Whisper transcription and GPT-4 analysis\n   - **HubSpot / Salesforce** - CRM update target\n   - **Google Sheets** - Audit log and call registry\n   - **SMTP / Gmail** - Sales summary delivery\n3. Set your CRM API endpoint and field mapping in the update node\n4. Configure your sales team email list in the notify node\n5. Activate the workflow\n\n### Sample Upload Payload\n```json\n{\n  \"callId\": \"CALL-20250222-0042\",\n  \"repEmail\": \"jane.smith@company.com\",\n  \"repName\": \"Jane Smith\",\n  \"contactEmail\": \"buyer@prospect.com\",\n  \"contactName\": \"Bob Johnson\",\n  \"companyName\": \"Acme Corp\",\n  \"dealStage\": \"negotiation\",\n  \"callDurationSecs\": 1847,\n  \"audioUrl\": \"https://storage.company.com/calls/call-0042.mp3\"\n}\n```\n\n### Features\n- **Whisper-powered transcription** with speaker diarization hints\n- **GPT-4 intent and sentiment** extraction with confidence scores\n- **Objection and buying signal** detection\n- **Auto CRM field mapping** — no manual data entry\n- **Sales scorecard** with talk ratio, next step clarity, deal risk\n- **Full audit trail** for call coaching and compliance\n\n**Explore More LinkedIn & Social Automation:**  \n[Contact us](https://www.oneclickitsolution.com/contact-us/) to design AI-powered lead nurturing, content engagement, and multi-platform reply workflows tailored to your growth strategy.\n","workflow":{"id":"TXjq0tor23oALYeC","meta":{"instanceId":"dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281","templateCredsSetupCompleted":true},"name":"AI Customer Call Analyzer — Voice to Insights to CRM with GPT-4","tags":[],"nodes":[{"id":"40ad9913-82b4-4a28-82b8-8acd76c22468","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-384,-64],"parameters":{"width":780,"height":1160,"content":"## AI Customer Call Analyzer — Voice → Insights → CRM with GPT-4\n\nConverts raw sales call recordings into structured CRM intelligence. Uploads audio → transcribes via Whisper → GPT-4 extracts intent, sentiment, objections, next steps → updates CRM and sends a structured summary to the sales team.\n\n### How it works\n\n1. **Upload Call Recording** - Webhook receives audio file upload (mp3, wav, m4a) from sales rep portal\n2. **Validate & Prepare Audio** - Checks file type, size limits, extracts call metadata\n3. **Transcribe via Whisper** - Sends audio to OpenAI Whisper API for high-accuracy transcription\n4. **Wait — Transcription Buffer** - Holds until transcription is confirmed complete\n5. **GPT-4 Call Intelligence** - Extracts intent, sentiment, objections, buying signals, action items\n6. **MCP Context Enrichment** - Pulls CRM history and enriches analysis with account context\n7. **Update CRM Record** - Writes structured insights back to CRM (HubSpot / Salesforce)\n8. **Send Sales Summary** - Emails rep and manager with call scorecard and next steps\n9. **Audit Log** - Records all processing steps for compliance and coaching\n\n### Setup Steps\n\n1. Import this workflow into n8n\n2. Configure credentials:\n   - **OpenAI API** - For Whisper transcription and GPT-4 analysis\n   - **HubSpot / Salesforce** - CRM update target\n   - **Google Sheets** - Audit log and call registry\n   - **SMTP / Gmail** - Sales summary delivery\n3. Set your CRM API endpoint and field mapping in the update node\n4. Configure your sales team email list in the notify node\n5. Activate the workflow\n\n### Sample Upload Payload\n```json\n{\n  \"callId\": \"CALL-20250222-0042\",\n  \"repEmail\": \"jane.smith@company.com\",\n  \"repName\": \"Jane Smith\",\n  \"contactEmail\": \"buyer@prospect.com\",\n  \"contactName\": \"Bob Johnson\",\n  \"companyName\": \"Acme Corp\",\n  \"dealStage\": \"negotiation\",\n  \"callDurationSecs\": 1847,\n  \"audioUrl\": \"https://storage.company.com/calls/call-0042.mp3\"\n}\n```\n\n### Features\n- **Whisper-powered transcription** with speaker diarization hints\n- **GPT-4 intent and sentiment** extraction with confidence scores\n- **Objection and buying signal** detection\n- **Auto CRM field mapping** — no manual data entry\n- **Sales scorecard** with talk ratio, next step clarity, deal risk\n- **Full audit trail** for call coaching and compliance"},"typeVersion":1},{"id":"4db57828-168e-4946-ba7c-4498e6e12efb","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[532,264],"parameters":{"color":4,"width":440,"height":328,"content":"## 1. Call Upload & Validation"},"typeVersion":1},{"id":"cf4eba0e-589a-4d35-96fc-55e58fc08286","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[1008,272],"parameters":{"color":4,"width":636,"height":332,"content":"## 2. Transcription & Wait Buffer"},"typeVersion":1},{"id":"77e5f6e9-e6c8-4082-af85-f91373d6a143","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[1664,304],"parameters":{"color":4,"width":720,"height":476,"content":"## 3. GPT-4 Intelligence & MCP Enrichment"},"typeVersion":1},{"id":"ede89085-3097-4a4e-a036-18485b280e36","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[2464,240],"parameters":{"color":4,"width":1240,"height":492,"content":"## 4. CRM Update, Summary & Audit"},"typeVersion":1},{"id":"6a47226b-b440-4741-ac96-e0c018786666","name":"Receive Call Recording Upload","type":"n8n-nodes-base.webhook","position":[592,432],"webhookId":"call-analyzer-webhook","parameters":{"path":"call-upload","options":{},"httpMethod":"POST","responseMode":"responseNode"},"typeVersion":2},{"id":"0172d15d-ef94-4d4e-b7e7-cd24b3149600","name":"Validate Call Metadata and Audio","type":"n8n-nodes-base.code","position":[816,432],"parameters":{"mode":"runOnceForEachItem","jsCode":"const body = $input.item.json.body || $input.item.json;\n\n// Required metadata fields\nconst required = ['callId', 'repEmail', 'repName', 'contactEmail', 'contactName', 'companyName'];\nconst missing = required.filter(f => !body[f]);\nif (missing.length > 0) {\n  throw new Error(`Missing required call metadata: ${missing.join(', ')}`);\n}\n\n// Validate email formats\nconst emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\nif (!emailRegex.test(body.repEmail)) {\n  throw new Error(`Invalid rep email: ${body.repEmail}`);\n}\nif (!emailRegex.test(body.contactEmail)) {\n  throw new Error(`Invalid contact email: ${body.contactEmail}`);\n}\n\n// Validate audio URL or binary\nconst audioUrl = body.audioUrl || body.audio_url || null;\nif (!audioUrl && !$input.item.binary?.audio) {\n  throw new Error('No audio provided: supply audioUrl or binary audio attachment');\n}\n\n// Duration validation\nconst durationSecs = parseInt(body.callDurationSecs) || 0;\nif (durationSecs > 7200) {\n  throw new Error(`Call too long: ${durationSecs}s exceeds 2-hour maximum for processing`);\n}\n\n// Deal stage normalization\nconst validStages = ['prospecting', 'qualification', 'discovery', 'demo', 'proposal', 'negotiation', 'closed_won', 'closed_lost'];\nconst dealStage = body.dealStage?.toLowerCase().replace(/ /g, '_') || 'unknown';\n\n// Build normalized call record\nconst callRecord = {\n  callId: body.callId.trim(),\n  repEmail: body.repEmail.trim().toLowerCase(),\n  repName: body.repName.trim(),\n  repManagerEmail: body.repManagerEmail || null,\n  contactEmail: body.contactEmail.trim().toLowerCase(),\n  contactName: body.contactName.trim(),\n  companyName: body.companyName.trim(),\n  dealStage: validStages.includes(dealStage) ? dealStage : 'unknown',\n  dealValue: body.dealValue ? parseFloat(body.dealValue) : null,\n  crmContactId: body.crmContactId || null,\n  crmDealId: body.crmDealId || null,\n  audioUrl,\n  callDurationSecs: durationSecs,\n  callDurationMins: Math.round(durationSecs / 60),\n  callDate: body.callDate || new Date().toISOString(),\n  language: body.language || 'en',\n  product: body.product || 'General',\n  notes: body.notes || null,\n  processingId: `PROC-${Date.now()}-${Math.random().toString(36).substr(2, 8).toUpperCase()}`,\n  receivedAt: new Date().toISOString(),\n  status: 'VALIDATED'\n};\n\nreturn { json: { callRecord } };"},"typeVersion":2},{"id":"80e939d8-6099-41ea-8ea1-c3a88da1e03f","name":"Fetch Audio File from URL","type":"n8n-nodes-base.httpRequest","position":[1040,432],"parameters":{"url":"={{ $json.callRecord.audioUrl }}","options":{"timeout":30000,"response":{"response":{"responseFormat":"file"}}}},"typeVersion":4.2,"continueOnFail":true},{"id":"1f508b12-4ba4-4dcc-b1fc-a0164530cc5a","name":"Transcribe Audio with OpenAI Whisper","type":"n8n-nodes-base.httpRequest","position":[1264,432],"parameters":{"url":"https://api.openai.com/v1/audio/transcriptions","method":"POST","options":{"timeout":120000},"sendBody":true,"sendHeaders":true,"specifyBody":"multipartFormData","authentication":"predefinedCredentialType","headerParameters":{"parameters":[{"name":"Authorization","value":"=Bearer {{ $credentials.apiKey }}"}]},"nodeCredentialType":"openAiApi"},"credentials":{"openAiApi":{"id":"1vLQlwKIezvFH8UB","name":"OpenAi David"}},"typeVersion":4.2,"continueOnFail":true},{"id":"61fd5aa1-f5c4-4e0d-a5f0-5e8682d8ec73","name":"Wait — Transcription Buffer (15 sec)","type":"n8n-nodes-base.wait","position":[1488,432],"webhookId":"wait-transcription-buffer","parameters":{"amount":15},"typeVersion":1.1},{"id":"cfaf7087-38a1-4d6f-8eb8-134dde1774c4","name":"Parse and Structure Transcript","type":"n8n-nodes-base.code","position":[1712,432],"parameters":{"mode":"runOnceForEachItem","jsCode":"const whisperResponse = $('Transcribe Audio with OpenAI Whisper').item.json;\nconst callRecord = $('Validate Call Metadata and Audio').item.json.callRecord;\n\n// Validate transcription succeeded\nif (!whisperResponse || whisperResponse.error) {\n  throw new Error(`Whisper transcription failed: ${whisperResponse?.error?.message || 'Unknown error'}`);\n}\n\nconst fullText = whisperResponse.text || '';\nif (!fullText.trim()) {\n  throw new Error('Transcription returned empty text. Audio may be silent or corrupted.');\n}\n\n// Extract segment-level data for analysis\nconst segments = whisperResponse.segments || [];\nconst totalDuration = whisperResponse.duration || callRecord.callDurationSecs;\n\n// Calculate word count and speaking pace\nconst wordCount = fullText.split(/\\s+/).filter(w => w.length > 0).length;\nconst wordsPerMinute = totalDuration > 0 ? Math.round((wordCount / totalDuration) * 60) : 0;\n\n// Estimate speaker turns (basic heuristic: long pauses between segments)\nconst speakerTurns = segments.filter((seg, idx) => {\n  if (idx === 0) return false;\n  const gap = seg.start - segments[idx - 1].end;\n  return gap > 1.5; // 1.5s gap = likely speaker change\n}).length;\n\n// Chunk transcript for GPT-4 (max 12k chars per chunk to stay in context)\nconst CHUNK_SIZE = 12000;\nconst chunks = [];\nfor (let i = 0; i < fullText.length; i += CHUNK_SIZE) {\n  chunks.push(fullText.substring(i, i + CHUNK_SIZE));\n}\n\nreturn {\n  json: {\n    callRecord,\n    transcript: {\n      fullText,\n      wordCount,\n      wordsPerMinute,\n      totalDurationSecs: totalDuration,\n      segmentCount: segments.length,\n      estimatedSpeakerTurns: speakerTurns,\n      language: whisperResponse.language || callRecord.language,\n      chunkCount: chunks.length,\n      transcriptChunk: chunks[0], // primary chunk for GPT-4\n      transcribedAt: new Date().toISOString()\n    }\n  }\n};"},"typeVersion":2},{"id":"9010cd1a-7b5f-4c19-a5b1-c18cdd435e55","name":"Fetch CRM Contact History","type":"n8n-nodes-base.httpRequest","position":[1936,432],"parameters":{"url":"=https://api.hubapi.com/crm/v3/contacts/search","method":"POST","options":{"timeout":10000},"jsonBody":"={\n  \"filterGroups\": [{\n    \"filters\": [{\n      \"propertyName\": \"email\",\n      \"operator\": \"EQ\",\n      \"value\": \"{{ $json.callRecord.contactEmail }}\"\n    }]\n  }],\n  \"properties\": [\"email\", \"firstname\", \"lastname\", \"company\", \"dealstage\", \"lifecyclestage\", \"hs_lead_status\", \"num_contacted_notes\", \"recent_deal_amount\", \"notes_last_contacted\"]\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","authentication":"predefinedCredentialType","headerParameters":{"parameters":[{"name":"Content-Type","value":"application/json"}]},"nodeCredentialType":"hubspotApi"},"credentials":{"hubspotApi":{"id":"W7t1pOQwFXrMGtqj","name":"HubSpot account -test"}},"typeVersion":4.2,"continueOnFail":true},{"id":"fd05714e-1a80-45d9-b1bd-473df7adb57f","name":"GPT-4 Call Intelligence Analysis","type":"@n8n/n8n-nodes-langchain.agent","position":[2160,432],"parameters":{"text":"=You are an expert sales call analyst and conversation intelligence specialist. Analyze this sales call transcript and extract structured intelligence for CRM enrichment and sales coaching.\n\n**Call Metadata:**\n- Call ID: {{ $json.callRecord.callId }}\n- Sales Rep: {{ $json.callRecord.repName }}\n- Contact: {{ $json.callRecord.contactName }} at {{ $json.callRecord.companyName }}\n- Deal Stage: {{ $json.callRecord.dealStage }}\n- Deal Value: {{ $json.callRecord.dealValue ? '$' + $json.callRecord.dealValue : 'Unknown' }}\n- Call Duration: {{ $json.transcript.totalDurationSecs }}s ({{ $json.transcript.wordCount }} words)\n- Words per Minute: {{ $json.transcript.wordsPerMinute }}\n- Estimated Speaker Turns: {{ $json.transcript.estimatedSpeakerTurns }}\n- Product/Service: {{ $json.callRecord.product }}\n\n**CRM History Summary:**\n{{ $json.crmContext || 'No prior CRM history found for this contact' }}\n\n**Call Transcript:**\n{{ $json.transcript.transcriptChunk }}\n\n**Analysis Tasks:**\n1. Overall call sentiment (prospect and rep separately)\n2. Primary intent of the prospect — what did they actually want?\n3. Key objections raised (price, timing, competition, authority, need)\n4. Buying signals detected (urgency, budget mentions, decision timeline, positive language)\n5. Topics discussed and time allocation\n6. Questions asked by prospect (these indicate interest areas)\n7. Next steps agreed upon (committed vs soft)\n8. Deal risk indicators\n9. Rep performance scorecard\n10. Recommended CRM updates\n\n**Response Format (JSON only, no markdown):**\n{\n  \"overallSentiment\": \"positive | neutral | negative | mixed\",\n  \"prospectSentiment\": \"positive | neutral | negative | mixed\",\n  \"repSentiment\": \"confident | neutral | uncertain | pressured\",\n  \"sentimentScore\": 72,\n  \"primaryIntent\": \"evaluation | complaint | purchase_ready | information_gathering | negotiation | churn_risk | renewal\",\n  \"intentConfidence\": 88,\n  \"callSummary\": \"3-4 sentence plain English summary of the call\",\n  \"keyTopics\": [\"pricing\", \"integration\", \"security\"],\n  \"objections\": [\n    {\n      \"type\": \"price | timing | competition | authority | need | trust\",\n      \"verbatim\": \"exact or close quote from transcript\",\n      \"wasAddressed\": true,\n      \"addressedEffectively\": true\n    }\n  ],\n  \"buyingSignals\": [\n    {\n      \"signal\": \"description of signal\",\n      \"strength\": \"strong | moderate | weak\",\n      \"verbatim\": \"quote from transcript\"\n    }\n  ],\n  \"prospectQuestions\": [\"list of key questions the prospect asked\"],\n  \"nextSteps\": [\n    {\n      \"action\": \"description of next step\",\n      \"owner\": \"rep | prospect | both\",\n      \"deadline\": \"date or timeframe or null\",\n      \"commitment\": \"hard | soft | unclear\"\n    }\n  ],\n  \"dealRisk\": \"low | medium | high | critical\",\n  \"dealRiskFactors\": [\"list of risk indicators\"],\n  \"dealMomentum\": \"accelerating | stable | slowing | stalled\",\n  \"recommendedDealStage\": \"prospecting | qualification | discovery | demo | proposal | negotiation | closed_won | closed_lost\",\n  \"stageChangeJustification\": \"why the stage should or should not change\",\n  \"repScorecard\": {\n    \"listeningScore\": 78,\n    \"objectionHandlingScore\": 65,\n    \"nextStepClarityScore\": 90,\n    \"talkListenRatio\": \"60:40\",\n    \"coachingTip\": \"one specific, actionable coaching tip for the rep\"\n  },\n  \"crmUpdates\": {\n    \"dealStage\": \"recommended stage\",\n    \"nextActivityDate\": \"ISO date or null\",\n    \"nextActivityType\": \"call | email | demo | proposal | meeting | null\",\n    \"contactNotes\": \"2-3 sentence CRM note to log\",\n    \"dealNotes\": \"2-3 sentence deal note\",\n    \"customFields\": {\n      \"last_objection_type\": \"price\",\n      \"buying_signal_count\": 3,\n      \"call_sentiment_score\": 72\n    }\n  },\n  \"competitorsmentioned\": [\"list of competitors mentioned, empty if none\"],\n  \"pricingDiscussed\": true,\n  \"budgetMentioned\": false,\n  \"decisionMakerOnCall\": true,\n  \"followUpEmailDraft\": \"A short, professional follow-up email draft the rep can send after the call\"\n}","options":{"systemMessage":"You are a sales call intelligence analyst. Respond with valid JSON only — no markdown, no code blocks, no preamble. Be specific and quote from the transcript wherever possible. Focus on actionable insights that help reps close deals faster."},"promptType":"define"},"typeVersion":1.6},{"id":"e82ed233-d4d9-4cff-a6b5-8691b2b68bc2","name":"GPT-4 Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[2232,656],"parameters":{"model":"gpt-4o","options":{"maxTokens":4000,"temperature":0.2}},"credentials":{"openAiApi":{"id":"1vLQlwKIezvFH8UB","name":"OpenAi David"}},"typeVersion":1},{"id":"3d588a16-4e9d-49b8-8c9f-4a434fa05ead","name":"Parse GPT-4 Intelligence Output","type":"n8n-nodes-base.code","position":[2512,432],"parameters":{"mode":"runOnceForEachItem","jsCode":"const aiResponse = $input.item.json;\nlet aiText = aiResponse.response || aiResponse.output || aiResponse.text || '';\n\nif (aiResponse.content && Array.isArray(aiResponse.content)) {\n  aiText = aiResponse.content[0]?.text || aiResponse.content[0]?.message?.content || '';\n}\n\nconst cleanText = aiText.replace(/```json\\s*/g, '').replace(/```\\s*/g, '').trim();\n\nlet intelligence;\ntry {\n  intelligence = JSON.parse(cleanText);\n} catch (e) {\n  throw new Error(`Failed to parse GPT-4 call intelligence: ${e.message}. Raw: ${cleanText.substring(0, 300)}`);\n}\n\nconst callData = $('Parse and Structure Transcript').item.json;\nconst crmResponse = $('Fetch CRM Contact History').item.json;\n\n// Extract CRM contact ID if found\nconst crmContact = crmResponse?.results?.[0] || null;\nconst crmContactId = crmContact?.id || callData.callRecord.crmContactId || null;\n\nreturn {\n  json: {\n    callRecord: callData.callRecord,\n    transcript: callData.transcript,\n    intelligence,\n    crmContactId,\n    crmContact,\n    processedAt: new Date().toISOString()\n  }\n};"},"typeVersion":2},{"id":"a73f3a33-23df-481d-b600-20510aa54ef9","name":"Update CRM Contact and Deal","type":"n8n-nodes-base.httpRequest","position":[2736,336],"parameters":{"url":"=https://api.hubapi.com/crm/v3/contacts/{{ $json.crmContactId || 'search' }}","method":"PATCH","options":{"timeout":15000},"jsonBody":"={\n  \"properties\": {\n    \"hs_lead_status\": \"{{ $json.intelligence.recommendedDealStage }}\",\n    \"notes_last_contacted\": \"{{ new Date().toISOString() }}\",\n    \"hubspot_owner_id\": \"{{ $json.callRecord.repEmail }}\",\n    \"hs_content_membership_notes\": \"{{ $json.intelligence.crmUpdates.contactNotes }}\",\n    \"call_sentiment_score\": \"{{ $json.intelligence.sentimentScore }}\",\n    \"last_objection_type\": \"{{ ($json.intelligence.objections[0] && $json.intelligence.objections[0].type) || 'none' }}\",\n    \"buying_signal_count\": \"{{ ($json.intelligence.buyingSignals || []).length }}\",\n    \"deal_momentum\": \"{{ $json.intelligence.dealMomentum }}\",\n    \"competitors_mentioned\": \"{{ ($json.intelligence.competitorsmentioned || []).join(', ') }}\",\n    \"last_call_id\": \"{{ $json.callRecord.callId }}\",\n    \"last_call_summary\": \"{{ $json.intelligence.callSummary }}\",\n    \"deal_risk_level\": \"{{ $json.intelligence.dealRisk }}\"\n  }\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","authentication":"predefinedCredentialType","headerParameters":{"parameters":[{"name":"Content-Type","value":"application/json"}]},"nodeCredentialType":"hubspotApi"},"credentials":{"hubspotApi":{"id":"W7t1pOQwFXrMGtqj","name":"HubSpot account -test"}},"typeVersion":4.2,"continueOnFail":true},{"id":"23b60433-4148-472b-ad0f-894bd1653b79","name":"Log Call Activity in CRM","type":"n8n-nodes-base.httpRequest","position":[2736,528],"parameters":{"url":"https://api.hubapi.com/crm/v3/objects/calls","method":"POST","options":{"timeout":10000},"jsonBody":"={\n  \"properties\": {\n    \"hs_call_title\": \"Sales Call — {{ $json.callRecord.companyName }} | {{ $json.intelligence.primaryIntent }}\",\n    \"hs_call_body\": \"{{ $json.intelligence.crmUpdates.dealNotes }}\\n\\nNext Steps:\\n{{ ($json.intelligence.nextSteps || []).map((ns, i) => (i+1) + '. ' + ns.action + ' (' + ns.commitment + ')').join('\\n') }}\",\n    \"hs_call_duration\": \"{{ $json.callRecord.callDurationSecs * 1000 }}\",\n    \"hs_call_direction\": \"OUTBOUND\",\n    \"hs_call_disposition\": \"{{ $json.intelligence.overallSentiment === 'positive' ? 'connected' : 'left_voicemail' }}\",\n    \"hs_call_status\": \"COMPLETED\",\n    \"hs_timestamp\": \"{{ new Date($json.callRecord.callDate).getTime() }}\",\n    \"hs_activity_type\": \"CALL\"\n  },\n  \"associations\": [\n    {\n      \"to\": { \"id\": \"{{ $json.crmContactId }}\" },\n      \"types\": [{ \"associationCategory\": \"HUBSPOT_DEFINED\", \"associationTypeId\": 194 }]\n    }\n  ]\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","authentication":"predefinedCredentialType","headerParameters":{"parameters":[{"name":"Content-Type","value":"application/json"}]},"nodeCredentialType":"hubspotApi"},"credentials":{"hubspotApi":{"id":"W7t1pOQwFXrMGtqj","name":"HubSpot account -test"}},"typeVersion":4.2,"continueOnFail":true},{"id":"f78882a7-647b-4cf3-83a8-61340b455519","name":"Send Call Intelligence Summary to Sales Team","type":"n8n-nodes-base.emailSend","position":[2960,336],"webhookId":"a30d7263-2e75-4db1-9862-0c9fa1d55af8","parameters":{"options":{},"subject":"=[Call Intelligence] {{ $json.callRecord.companyName }} — {{ $json.intelligence.overallSentiment.toUpperCase() }} | {{ $json.intelligence.dealRisk.toUpperCase() }} Risk | {{ $json.callRecord.callId }}","toEmail":"=","fromEmail":"="},"credentials":{"smtp":{"id":"G1kyF8cSWTZ4vouN","name":"SMTP -test"}},"typeVersion":2.1,"continueOnFail":true},{"id":"29209d55-d9c2-4b04-8945-7d7e05d8f4c9","name":"Write to Call Analytics Audit Log","type":"n8n-nodes-base.googleSheets","position":[2960,528],"parameters":{"columns":{"value":{},"schema":[],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"id","value":"="},"documentId":{"__rl":true,"mode":"id","value":"="}},"credentials":{"googleSheetsOAuth2Api":{"id":"sldw2qK7iVusK0rY","name":"Google Sheets account"}},"typeVersion":4.5,"continueOnFail":true},{"id":"f315cf24-d388-49b2-b0f9-f1fe799507a6","name":"Build Final Processing Response","type":"n8n-nodes-base.code","position":[3184,432],"parameters":{"mode":"runOnceForEachItem","jsCode":"const data = $input.item.json;\n\nreturn {\n  json: {\n    success: true,\n    callId: data.callRecord.callId,\n    processingId: data.callRecord.processingId,\n    repName: data.callRecord.repName,\n    companyName: data.callRecord.companyName,\n    transcriptionStats: {\n      wordCount: data.transcript.wordCount,\n      durationSecs: data.transcript.totalDurationSecs,\n      language: data.transcript.language\n    },\n    callIntelligence: {\n      sentiment: data.intelligence.overallSentiment,\n      sentimentScore: data.intelligence.sentimentScore,\n      primaryIntent: data.intelligence.primaryIntent,\n      dealRisk: data.intelligence.dealRisk,\n      dealMomentum: data.intelligence.dealMomentum,\n      buyingSignals: (data.intelligence.buyingSignals || []).length,\n      objections: (data.intelligence.objections || []).length,\n      nextSteps: (data.intelligence.nextSteps || []).length,\n      recommendedStage: data.intelligence.recommendedDealStage\n    },\n    repScorecard: data.intelligence.repScorecard,\n    crmUpdated: true,\n    crmContactId: data.crmContactId,\n    summaryEmailSent: true,\n    processedAt: data.processedAt\n  }\n};"},"typeVersion":2},{"id":"fb526474-5ad5-4c69-8447-d36a4661da49","name":"Return Processing Confirmation","type":"n8n-nodes-base.respondToWebhook","position":[3408,432],"parameters":{"options":{"responseHeaders":{"entries":[{"name":"Content-Type","value":"application/json"},{"name":"X-Processing-ID","value":"={{ $json.processingId }}"},{"name":"X-Call-Sentiment","value":"={{ $json.callIntelligence.sentiment }}"}]}},"respondWith":"json","responseBody":"={{ JSON.stringify($json, null, 2) }}"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"f6a430f0-fefe-48f4-9d69-a2dcfa640fab","connections":{"GPT-4 Model":{"ai_languageModel":[[{"node":"GPT-4 Call Intelligence Analysis","type":"ai_languageModel","index":0}]]},"Log Call Activity in CRM":{"main":[[{"node":"Write to Call Analytics Audit Log","type":"main","index":0}]]},"Fetch Audio File from URL":{"main":[[{"node":"Transcribe Audio with OpenAI Whisper","type":"main","index":0}]]},"Fetch CRM Contact History":{"main":[[{"node":"GPT-4 Call Intelligence Analysis","type":"main","index":0}]]},"Update CRM Contact and Deal":{"main":[[{"node":"Send Call Intelligence Summary to Sales Team","type":"main","index":0}]]},"Receive Call Recording Upload":{"main":[[{"node":"Validate Call Metadata and Audio","type":"main","index":0}]]},"Parse and Structure Transcript":{"main":[[{"node":"Fetch CRM Contact History","type":"main","index":0}]]},"Build Final Processing Response":{"main":[[{"node":"Return Processing Confirmation","type":"main","index":0}]]},"Parse GPT-4 Intelligence Output":{"main":[[{"node":"Update CRM Contact and Deal","type":"main","index":0},{"node":"Log Call Activity in CRM","type":"main","index":0}]]},"GPT-4 Call Intelligence Analysis":{"main":[[{"node":"Parse GPT-4 Intelligence Output","type":"main","index":0}]]},"Validate Call Metadata and Audio":{"main":[[{"node":"Fetch Audio File from URL","type":"main","index":0}]]},"Write to Call Analytics Audit Log":{"main":[[{"node":"Build Final Processing Response","type":"main","index":0}]]},"Transcribe Audio with OpenAI Whisper":{"main":[[{"node":"Wait — Transcription Buffer (15 sec)","type":"main","index":0}]]},"Wait — Transcription Buffer (15 sec)":{"main":[[{"node":"Parse and Structure Transcript","type":"main","index":0}]]},"Send Call Intelligence Summary to Sales Team":{"main":[[{"node":"Build Final Processing Response","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":21,"nodeTypes":{"n8n-nodes-base.code":{"count":4},"n8n-nodes-base.wait":{"count":1},"n8n-nodes-base.webhook":{"count":1},"n8n-nodes-base.emailSend":{"count":1},"n8n-nodes-base.stickyNote":{"count":5},"n8n-nodes-base.httpRequest":{"count":5},"n8n-nodes-base.googleSheets":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":1},"n8n-nodes-base.respondToWebhook":{"count":1},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Oneclick AI Squad","username":"oneclick-ai","bio":"The AI Squad Initiative is a pioneering effort to build, automate and scale AI-powered workflows using n8n.io. Our mission is to help individuals and businesses integrate AI agents seamlessly into their daily operations  from automating tasks and enhancing productivity to creating innovative, intelligent solutions. We design modular, reusable AI workflow templates that empower creators, developers and teams to supercharge their automation with minimal effort and maximum impact.","verified":true,"links":["https://www.oneclickitsolution.com/"],"avatar":"https://gravatar.com/avatar/848fca91367142f65f9e5c55d64e5c9952b160d7b060d103b52aa343c6bc7b3d?r=pg&d=retro&size=200"},"nodes":[{"id":11,"icon":"fa:envelope","name":"n8n-nodes-base.emailSend","codex":{"data":{"alias":["SMTP","email","human","form","wait","hitl","approval"],"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/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"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.sendemail/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/sendemail/"}]},"categories":["Communication","HITL","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Send Email","color":"#00bb88"},"iconData":{"icon":"envelope","type":"icon"},"displayName":"Send Email","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":9,"name":"Core Nodes"},{"id":28,"name":"HITL"}]},{"id":18,"icon":"file:googleSheets.svg","name":"n8n-nodes-base.googleSheets","codex":{"data":{"alias":["CSV","Sheet","Spreadsheet","GS"],"resources":{"generic":[{"url":"https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/","icon":"❤️","label":"Love at first sight: Ricardo’s n8n journey"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/","icon":"⏲","label":"Creating triggers for n8n workflows using polling"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/","icon":"🍔","label":"How Honest Burgers Use Automation to Save $100k per year"},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Data & Storage","Productivity"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\",\"output\"]","defaults":{"name":"Google Sheets"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="},"displayName":"Google Sheets","typeVersion":5,"nodeCategories":[{"id":3,"name":"Data & Storage"},{"id":4,"name":"Productivity"}]},{"id":19,"icon":"file:httprequest.svg","name":"n8n-nodes-base.httpRequest","codex":{"data":{"alias":["API","Request","URL","Build","cURL"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/","icon":"🎨","label":"Automate Designs with Bannerbear and n8n"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/","icon":"🧰","label":"How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"output\"]","defaults":{"name":"HTTP Request","color":"#0004F5"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="},"displayName":"HTTP Request","typeVersion":4,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":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":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":535,"icon":"file:webhook.svg","name":"n8n-nodes-base.respondToWebhook","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.respondtowebhook/"}]},"categories":["Core Nodes","Utility"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"transform\"]","defaults":{"name":"Respond to Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Respond to Webhook","typeVersion":2,"nodeCategories":[{"id":7,"name":"Utility"},{"id":9,"name":"Core Nodes"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1153,"icon":"file:openAiLight.svg","name":"@n8n/n8n-nodes-langchain.lmChatOpenAi","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="},"displayName":"OpenAI Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":39,"name":"CRM"},{"id":49,"name":"AI Summarization"}],"image":[]}}