{"workflow":{"id":12737,"name":"Extract sales insights from Scoot call transcripts using Gemini","views":19,"recentViews":0,"totalViews":19,"createdAt":"2026-01-15T17:19:04.089Z","description":"**Automatically extract sales insights from call transcripts and update your CRM.**\n\n  Every time Scoot finishes transcribing a sales call, this workflow pulls out the key details—budget, competitors, objections, next steps—and sends a formatted summary to the rep.\n\n  ## How It Works\n\n  1. Scoot webhook triggers when transcription completes\n  2. Fetches the full transcript via Scoot API\n  3. AI Agent (Gemini) extracts structured data: budget, competitors, objections, timeline, decision maker, pain points, buying signals\n  4. Updates your CRM with extracted fields\n  5. Emails a formatted summary to the sales rep\n\n  If the transcript is still processing, it retries automatically (up to 6 times, 1 hour apart).\n\n  ## Setup\n\n  1. **Import** the workflow JSON\n  2. **Add credentials:**\n     - Scoot API → Header Auth with your API key\n     - Google Gemini → API key from [aistudio.google.com](https://aistudio.google.com)\n     - Gmail → OAuth2\n  3. **Copy webhook URL** to Scoot Dashboard → Webhooks → Transcription Complete\n  4. **Replace the mock CRM node** with HubSpot, Salesforce, or Pipedrive\n  5. **Test** with the manual trigger (uses sample data)\n  6. **Activate**\n\n  ---\n","workflow":{"id":"UlWMRaijIFqktxa3tEzfM","meta":{"instanceId":"3029945ca1a614a45f2f8c21dd75a6c031ae8ec72000e574e413eddf72e92b9b","templateCredsSetupCompleted":true},"name":"Extract sales insights from call transcripts with Scoot and Gemini","tags":[{"id":"K6D3K6nP6k9TByzr","name":"sales-automation","createdAt":"2026-01-14T17:39:47.009Z","updatedAt":"2026-01-14T17:39:47.009Z"},{"id":"H2JohKUHZtmiDbz3","name":"call-transcription","createdAt":"2026-01-15T16:32:28.124Z","updatedAt":"2026-01-15T16:32:28.124Z"},{"id":"rCMRdwommxykeD6w","name":"scoot-integration","createdAt":"2026-01-15T16:32:28.114Z","updatedAt":"2026-01-15T16:32:28.114Z"}],"nodes":[{"id":"f130050e-7bb0-41ea-a715-bf921603d50f","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[4064,1968],"parameters":{"color":5,"width":360,"height":380,"content":"## How it works\n\nThis workflow automatically extracts structured sales data from call transcripts:\n\n1. **Trigger** → Scoot sends webhook when transcription completes\n2. **Fetch** → Retrieves full transcript from Scoot API\n3. **Extract** → Gemini AI pulls out budget, competitors, objections, next steps\n4. **Update** → Writes extracted fields to your CRM\n5. **Notify** → Emails formatted summary to the sales rep\n\n## Setup steps\n\n1. **Scoot API** → Create Header Auth credential with your API key\n2. **Gemini** → Add Google AI API key from aistudio.google.com\n3. **Gmail** → Connect OAuth2 for sending notifications\n4. **Webhook** → Copy URL to Scoot dashboard → Webhooks\n5. **CRM** → Replace mock node with HubSpot/Salesforce/Pipedrive\n6. **Test** → Click \"Test with sample data\" to verify setup"},"typeVersion":1},{"id":"bc84fcf9-f129-4442-8686-72fb77568ca2","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[4480,1872],"parameters":{"color":7,"height":112,"content":"**Trigger options**\nWebhook receives Scoot notifications. Manual trigger uses sample data for testing without real calls."},"typeVersion":1},{"id":"24bb1a96-9c73-437d-8706-00d52e993b29","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[4944,1920],"parameters":{"color":7,"width":280,"height":96,"content":"**Data preparation**\nFetches transcript from Scoot, checks if processing is complete, handles retries for incomplete transcripts."},"typeVersion":1},{"id":"950e5fcc-08bb-40e6-b4a5-5b1395cf7805","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[5584,1760],"parameters":{"color":7,"width":260,"height":128,"content":"**AI extraction**\nAI Agent with Gemini model extracts: budget, competitors, objections, timeline, decision maker, next steps, pain points, buying signals."},"typeVersion":1},{"id":"0b7fb807-a07a-4b1b-a897-183aec9f5fc2","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[6048,1856],"parameters":{"color":7,"width":260,"height":112,"content":"**Output**\nReplace mock CRM node with your integration. Gmail sends formatted summary to the rep who made the call."},"typeVersion":1},{"id":"b10597fc-3736-4e8d-baa2-e84a18c8aa90","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[5648,2448],"parameters":{"color":7,"width":260,"height":112,"content":"**Retry logic**\nIf transcript still processing: waits 1 hour, retries up to 6 times. Adjust wait time in \"Wait 1 hour\" node."},"typeVersion":1},{"id":"c35ce278-eb86-45db-bc1b-923ccdb7298a","name":"Receive Scoot webhook","type":"n8n-nodes-base.webhook","position":[4496,2032],"webhookId":"scoot-transcription-webhook","parameters":{"path":"scoot-transcription","options":{},"httpMethod":"POST"},"typeVersion":2},{"id":"d2a8a82e-6ba1-4e36-a3ee-9e2d6290bae5","name":"Test with sample data","type":"n8n-nodes-base.manualTrigger","position":[4496,2208],"parameters":{},"typeVersion":1},{"id":"39e345df-7aed-45e3-9c9e-7721aa152242","name":"Load sample transcript","type":"n8n-nodes-base.code","position":[4720,2208],"parameters":{"jsCode":"// Sample transcript for testing\n// Replace with real Scoot data in production\n\nconst mockData = {\n  socialTranscriptionId: \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n  status: \"COMPLETE\",\n  name: \"Discovery Call - Acme Corp\",\n  company_name: \"Acme Corp\",\n  contact_name: \"Sarah Chen\",\n  contact_title: \"VP of Operations\",\n  contact_email: \"user@example.com\",\n  deal_id: \"deal_789\",\n  call_date: \"2024-01-15\",\n  rep_name: \"Mike Wilson\",\n  rep_email: \"user@example.com\",\n  transcript: `MIKE WILSON: Hey Sarah, thanks for taking the time today. I know you're busy, so I really appreciate you carving out 30 minutes for us.\n\nSARAH CHEN: Of course, Mike. I've been meaning to look into solutions like yours for a while now. We've been struggling with some operational challenges.\n\nMIKE WILSON: I'd love to hear more about that. What's been the biggest pain point for your team?\n\nSARAH CHEN: Honestly, it's the manual data entry. Our sales team spends probably 2-3 hours a day just updating spreadsheets and our CRM. It's killing productivity, and frankly, the data quality is terrible because people rush through it or skip it entirely.\n\nMIKE WILSON: That's really common. We hear that from a lot of companies your size. How big is your sales team currently?\n\nSARAH CHEN: We have about 45 reps across three regions. And we just hired a new CRO, Jennifer Martinez, who's really pushing for better data hygiene. She came from Salesforce actually, so she has high standards.\n\nMIKE WILSON: Jennifer Martinez - I think I've heard of her. She did great things at her previous company. So it sounds like there's executive sponsorship for solving this problem?\n\nSARAH CHEN: Definitely. Jennifer reports directly to our CEO, and she's made it clear that fixing our data infrastructure is a Q2 priority. We need to have something in place before our board meeting in June.\n\nMIKE WILSON: That's a clear timeline. Let me ask about budget - do you have a sense of what you're looking to invest in a solution like this?\n\nSARAH CHEN: We've allocated around $50,000 annually for this initiative. Jennifer got it approved in last quarter's budget cycle. But honestly, if something can really move the needle, there might be flexibility. We're losing way more than that in productivity.\n\nMIKE WILSON: That's helpful context. Now, I have to ask - are you looking at any other solutions right now?\n\nSARAH CHEN: We had a demo with Gong last week, and we've been using HubSpot for years but their automation features aren't cutting it anymore. We also looked at Clari but it felt too enterprise-heavy for our needs.\n\nMIKE WILSON: Good to know. What did you like or not like about Gong specifically?\n\nSARAH CHEN: Gong's call recording is great, but their pricing is steep - they quoted us $80,000 - and we're not sure we need all the revenue intelligence features. We really just need the automation piece to work well.\n\nMIKE WILSON: Makes sense. Our sweet spot is exactly that - focused automation without the bloat.\n\nSARAH CHEN: Okay, that's impressive. The automatic field population would save us so much time. But I do have a concern - how does this integrate with our existing Salesforce instance? We have a lot of custom fields.\n\nMIKE WILSON: Great question. We have a native Salesforce integration that maps to custom fields. Our implementation team would work with your Salesforce admin to set that up. Usually takes about 2 weeks.\n\nSARAH CHEN: Two weeks isn't bad. Our IT team is pretty stretched though - is this something that requires heavy IT involvement?\n\nMIKE WILSON: Minimal IT involvement actually. Most of the setup is done through our UI, and we handle the OAuth connection.\n\nSARAH CHEN: That's a relief. One more thing - we had a bad experience with our last vendor. Their support was terrible, took days to get responses. How does your support work?\n\nMIKE WILSON: Totally understand that concern. We have dedicated customer success managers for accounts your size, plus 24/7 chat support. Our average response time is under 2 hours.\n\nSARAH CHEN: That would actually be great. If you could send me a reference in a similar industry, that would help me make the case internally.\n\nMIKE WILSON: Absolutely. I'll send over a case study from a company in the manufacturing space.\n\nSARAH CHEN: Perfect. So what are next steps from here?\n\nMIKE WILSON: I'd suggest a couple things. First, I'll send you that case study and a detailed proposal based on what we discussed. Second, would it make sense to schedule a follow-up call with Jennifer? If she's the decision maker, I'd want to make sure she sees the value directly.\n\nSARAH CHEN: Yes, let's do that. Jennifer's calendar is pretty packed, but I can probably get 30 minutes next week. Thursday afternoon works best for her usually.\n\nMIKE WILSON: Thursday works great. I'll send over some times.\n\nSARAH CHEN: I'm cautiously optimistic about this. The demo looked good, the pricing is in our range, and if the integration is as smooth as you say, this could be exactly what we need.\n\nMIKE WILSON: That's great to hear. I'll get that proposal over to you by end of day tomorrow.\n\nSARAH CHEN: Sounds good. Thanks Mike!\n\nMIKE WILSON: Thank you Sarah. Talk soon!`,\n  is_mock: true\n};\n\nreturn [{ json: mockData }];"},"typeVersion":2},{"id":"daf234dc-5709-4723-a723-9355cbd1663f","name":"Fetch transcript from Scoot","type":"n8n-nodes-base.httpRequest","position":[4960,2032],"parameters":{"url":"=https://api.scoot.app/api/v1/transcription?socialTranscriptionId={{ $json.socialTranscriptionId }}","options":{},"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"credential-id","name":"Header Auth account"}},"typeVersion":4.2},{"id":"aaa869d4-3587-4cec-8c1e-24625726ac7d","name":"Combine call metadata","type":"n8n-nodes-base.code","position":[5184,2112],"parameters":{"jsCode":"// Combine webhook data with Scoot API response\nconst input = $input.item.json;\n\nif (input.is_mock) {\n  return [{ json: input }];\n}\n\nconst webhookData = $('Receive Scoot webhook').item?.json || {};\nconst scootData = input;\n\nreturn [{\n  json: {\n    ...webhookData,\n    ...scootData,\n    transcript: scootData.transcript || 'Transcript fetched from Scoot S3 bucket',\n    company_name: scootData.name?.replace('Discovery Call - ', '').replace('Sales Call - ', '') || 'Unknown Company',\n    rep_email: scootData.user?.emailAddress || 'user@example.com',\n    rep_name: scootData.user?.name || 'Sales Rep',\n    call_date: scootData.startDateTime?.split('T')[0] || new Date().toISOString().split('T')[0]\n  }\n}];"},"typeVersion":2},{"id":"6619177b-3489-4f4b-b2ad-2b536389f385","name":"Transcript ready?","type":"n8n-nodes-base.if","position":[5408,2112],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"status-check","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.status }}","rightValue":"COMPLETE"}]}},"typeVersion":2},{"id":"fbeda433-46ba-4f9e-ae5b-35fb5e10adcf","name":"Extract data with Gemini","type":"@n8n/n8n-nodes-langchain.agent","position":[5584,1904],"parameters":{"text":"=Extract sales data from this transcript:\n\nCompany: {{ $json.company_name }}\nContact: {{ $json.contact_name || 'Unknown' }}\nDate: {{ $json.call_date }}\n\nTRANSCRIPT:\n{{ $json.transcript }}","options":{"systemMessage":"You are a sales call analyst. Extract specific data points from sales call transcripts.\n\nReturn a valid JSON object with these fields:\n{\n  \"budget_confirmed\": boolean or null,\n  \"budget_amount\": number or null,\n  \"budget_notes\": string or null,\n  \"competitors_mentioned\": string[],\n  \"objections_raised\": string[],\n  \"timeline\": string or null,\n  \"decision_maker\": string or null,\n  \"next_steps\": string[],\n  \"pain_points\": string[],\n  \"buying_signals\": string[],\n  \"call_sentiment\": \"positive\" | \"neutral\" | \"negative\",\n  \"deal_stage_recommendation\": string\n}\n\nRules:\n- Only extract information explicitly stated\n- Use null for fields with no data\n- Keep strings under 100 chars\n- Return ONLY the JSON object"},"promptType":"define"},"typeVersion":1.7},{"id":"23cc8b8b-bc53-4d37-aa34-c84286505558","name":"Gemini 1.5 Flash","type":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","position":[5584,2096],"parameters":{"options":{"temperature":0.3}},"credentials":{"googlePalmApi":{"id":"credential-id","name":"Google Gemini(PaLM) Api account"}},"typeVersion":1},{"id":"92d0e107-e3ef-4350-b357-e48b1efe7094","name":"Validate extracted JSON","type":"n8n-nodes-base.code","position":[5888,2000],"parameters":{"jsCode":"// Parse and validate Gemini response\nconst input = $input.item.json;\nconst previousData = $('Combine call metadata').item.json;\n\nlet extracted;\n\ntry {\n  const aiResponse = input.text || input.content || input.message?.content || '';\n  let jsonString = aiResponse;\n  \n  if (jsonString.includes('```json')) {\n    jsonString = jsonString.replace(/```json\\n?/g, '').replace(/```\\n?/g, '');\n  } else if (jsonString.includes('```')) {\n    jsonString = jsonString.replace(/```\\n?/g, '');\n  }\n  \n  extracted = JSON.parse(jsonString.trim());\n} catch (error) {\n  extracted = {\n    budget_confirmed: null,\n    budget_amount: null,\n    budget_notes: null,\n    competitors_mentioned: [],\n    objections_raised: [],\n    timeline: null,\n    decision_maker: null,\n    next_steps: [],\n    pain_points: [],\n    buying_signals: [],\n    call_sentiment: 'neutral',\n    deal_stage_recommendation: 'Parsing error - review manually',\n    extraction_error: error.message\n  };\n}\n\nconst validated = {\n  budget_confirmed: typeof extracted.budget_confirmed === 'boolean' ? extracted.budget_confirmed : null,\n  budget_amount: typeof extracted.budget_amount === 'number' ? extracted.budget_amount : null,\n  budget_notes: typeof extracted.budget_notes === 'string' ? extracted.budget_notes.slice(0, 500) : null,\n  competitors_mentioned: Array.isArray(extracted.competitors_mentioned) ? extracted.competitors_mentioned : [],\n  objections_raised: Array.isArray(extracted.objections_raised) ? extracted.objections_raised : [],\n  timeline: typeof extracted.timeline === 'string' ? extracted.timeline : null,\n  decision_maker: typeof extracted.decision_maker === 'string' ? extracted.decision_maker : null,\n  next_steps: Array.isArray(extracted.next_steps) ? extracted.next_steps : [],\n  pain_points: Array.isArray(extracted.pain_points) ? extracted.pain_points : [],\n  buying_signals: Array.isArray(extracted.buying_signals) ? extracted.buying_signals : [],\n  call_sentiment: ['positive', 'neutral', 'negative'].includes(extracted.call_sentiment) ? extracted.call_sentiment : 'neutral',\n  deal_stage_recommendation: typeof extracted.deal_stage_recommendation === 'string' ? extracted.deal_stage_recommendation : null\n};\n\nreturn [{\n  json: {\n    call_id: previousData.socialTranscriptionId,\n    deal_id: previousData.deal_id || null,\n    company_name: previousData.company_name,\n    contact_name: previousData.contact_name || null,\n    contact_email: previousData.contact_email || null,\n    rep_name: previousData.rep_name,\n    rep_email: previousData.rep_email,\n    call_date: previousData.call_date,\n    ...validated,\n    extraction_timestamp: new Date().toISOString(),\n    extraction_error: extracted.extraction_error || null\n  }\n}];"},"typeVersion":2},{"id":"a1828d97-3d9c-4b0f-af2e-0337dcdc75eb","name":"Format for CRM update","type":"n8n-nodes-base.code","position":[6112,2000],"parameters":{"jsCode":"// Format data for CRM and email notification\nconst data = $input.item.json;\n\nconst crmUpdate = {\n  deal_id: data.deal_id,\n  amount: data.budget_amount,\n  close_date: data.timeline,\n  budget_confirmed__c: data.budget_confirmed,\n  budget_notes__c: data.budget_notes,\n  competitors__c: data.competitors_mentioned.join(', '),\n  objections__c: data.objections_raised.join(' | '),\n  decision_maker__c: data.decision_maker,\n  next_steps__c: data.next_steps.join(' | '),\n  pain_points__c: data.pain_points.join(' | '),\n  buying_signals__c: data.buying_signals.join(' | '),\n  last_call_sentiment__c: data.call_sentiment,\n  stage_recommendation__c: data.deal_stage_recommendation,\n  last_call_date__c: data.call_date,\n  last_call_id__c: data.call_id\n};\n\nconst emailSummary = `\n═══════════════════════════════════════════════════════════\nPOST-CALL SUMMARY: ${data.company_name}\n═══════════════════════════════════════════════════════════\n\nCALL DETAILS\n────────────\nCompany: ${data.company_name}\nContact: ${data.contact_name || 'N/A'}\nDate: ${data.call_date}\nSentiment: ${data.call_sentiment.toUpperCase()}\n\nBUDGET\n──────\nConfirmed: ${data.budget_confirmed === true ? 'YES' : data.budget_confirmed === false ? 'NO' : 'Not discussed'}\nAmount: ${data.budget_amount ? '$' + data.budget_amount.toLocaleString() : 'Not specified'}\nNotes: ${data.budget_notes || 'None'}\n\nCOMPETITORS MENTIONED\n─────────────────────\n${data.competitors_mentioned.length > 0 ? data.competitors_mentioned.map(c => '• ' + c).join('\\n') : 'None mentioned'}\n\nOBJECTIONS RAISED\n─────────────────\n${data.objections_raised.length > 0 ? data.objections_raised.map(o => '• ' + o).join('\\n') : 'None raised'}\n\nTIMELINE: ${data.timeline || 'Not specified'}\nDECISION MAKER: ${data.decision_maker || 'Not identified'}\n\nNEXT STEPS\n──────────\n${data.next_steps.length > 0 ? data.next_steps.map((s, i) => (i + 1) + '. ' + s).join('\\n') : 'None identified'}\n\nPAIN POINTS\n───────────\n${data.pain_points.length > 0 ? data.pain_points.map(p => '• ' + p).join('\\n') : 'None identified'}\n\nBUYING SIGNALS\n──────────────\n${data.buying_signals.length > 0 ? data.buying_signals.map(b => '✓ ' + b).join('\\n') : 'None identified'}\n\n═══════════════════════════════════════════════════════════\nRECOMMENDATION: ${data.deal_stage_recommendation || 'No recommendation'}\n═══════════════════════════════════════════════════════════\n`;\n\nreturn [{\n  json: {\n    ...data,\n    crm_update: crmUpdate,\n    email_summary: emailSummary\n  }\n}];"},"typeVersion":2},{"id":"8090af00-8d4a-495e-93f2-fbef11386f1d","name":"Update CRM (mock)","type":"n8n-nodes-base.code","position":[6320,2000],"parameters":{"jsCode":"// Mock CRM update - replace with HubSpot/Salesforce/Pipedrive node\nconst data = $input.item.json;\n\nconst mockCrmResponse = {\n  success: true,\n  crm_provider: 'MOCK - Replace with real CRM',\n  deal_id: data.crm_update.deal_id || 'deal_' + Date.now(),\n  fields_updated: Object.keys(data.crm_update).filter(k => data.crm_update[k] !== null && data.crm_update[k] !== ''),\n  timestamp: new Date().toISOString()\n};\n\nreturn [{\n  json: {\n    ...data,\n    crm_response: mockCrmResponse\n  }\n}];"},"typeVersion":2},{"id":"7f517b87-fdcb-408e-b930-7b6cf9413c3e","name":"Email summary to rep","type":"n8n-nodes-base.gmail","position":[6528,2000],"webhookId":"19059d90-9ade-460f-9458-55c41b0487bb","parameters":{"sendTo":"={{ $json.rep_email }}","message":"={{ $json.email_summary }}","options":{},"subject":"=Call summary: {{ $json.company_name }} ({{ $json.call_sentiment }})"},"credentials":{"gmailOAuth2":{"id":"credential-id","name":"Daniel Gmail account"}},"typeVersion":2.1},{"id":"fe29d060-f2b5-4162-9f62-f5960a677246","name":"Count retry attempts","type":"n8n-nodes-base.code","position":[5584,2256],"parameters":{"jsCode":"// Track retry attempts for incomplete transcripts\nconst data = $input.item.json;\nconst currentRetryCount = data.retry_count || 0;\nconst maxRetries = 6;\n\nreturn [{\n  json: {\n    ...data,\n    retry_count: currentRetryCount + 1,\n    max_retries: maxRetries,\n    can_retry: currentRetryCount < maxRetries && data.status === 'PROCESSING'\n  }\n}];"},"typeVersion":2},{"id":"887699ea-3a93-4ba4-a407-3ba0d61655ba","name":"Retries remaining?","type":"n8n-nodes-base.if","position":[5840,2224],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"can-retry-check","operator":{"type":"boolean","operation":"equals"},"leftValue":"={{ $json.can_retry }}","rightValue":true}]}},"typeVersion":2},{"id":"f260acee-2f46-460c-ac70-c244e6b313ab","name":"Wait 1 hour","type":"n8n-nodes-base.wait","position":[6064,2224],"webhookId":"4f924f2c-9c9b-4100-983e-e5e5053487e7","parameters":{"unit":"hours","amount":1},"typeVersion":1.1},{"id":"db2cf67e-4bd3-4c2b-8f01-f8772ee781eb","name":"Prepare retry request","type":"n8n-nodes-base.code","position":[6272,2224],"parameters":{"jsCode":"// Prepare data for retry request\nconst data = $input.item.json;\n\nreturn [{\n  json: {\n    socialTranscriptionId: data.socialTranscriptionId,\n    retry_count: data.retry_count,\n    original_webhook_data: data.original_webhook_data || data\n  }\n}];"},"typeVersion":2},{"id":"32069776-e022-467c-93a9-b88118339c53","name":"Log failure","type":"n8n-nodes-base.code","position":[6096,2448],"parameters":{"jsCode":"// Log failure after max retries exceeded\nconst data = $input.item.json;\n\nconst failureReason = data.status === 'FAILED' \n  ? 'Transcription failed in Scoot' \n  : `Max retries exceeded - still processing after ${data.max_retries} hours`;\n\nreturn [{\n  json: {\n    status: 'ABANDONED',\n    socialTranscriptionId: data.socialTranscriptionId,\n    failure_reason: failureReason,\n    retry_attempts: data.retry_count || 0,\n    timestamp: new Date().toISOString()\n  }\n}];"},"typeVersion":2}],"active":false,"pinData":{},"settings":{"availableInMCP":false,"executionOrder":"v1"},"versionId":"1209c3b3-57c8-4dbc-b59a-577a03130974","connections":{"Wait 1 hour":{"main":[[{"node":"Prepare retry request","type":"main","index":0}]]},"Gemini 1.5 Flash":{"ai_languageModel":[[{"node":"Extract data with Gemini","type":"ai_languageModel","index":0}]]},"Transcript ready?":{"main":[[{"node":"Extract data with Gemini","type":"main","index":0}],[{"node":"Count retry attempts","type":"main","index":0}]]},"Update CRM (mock)":{"main":[[{"node":"Email summary to rep","type":"main","index":0}]]},"Retries remaining?":{"main":[[{"node":"Wait 1 hour","type":"main","index":0}],[{"node":"Log failure","type":"main","index":0}]]},"Count retry attempts":{"main":[[{"node":"Retries remaining?","type":"main","index":0}]]},"Combine call metadata":{"main":[[{"node":"Transcript ready?","type":"main","index":0}]]},"Format for CRM update":{"main":[[{"node":"Update CRM (mock)","type":"main","index":0}]]},"Prepare retry request":{"main":[[{"node":"Fetch transcript from Scoot","type":"main","index":0}]]},"Receive Scoot webhook":{"main":[[{"node":"Fetch transcript from Scoot","type":"main","index":0}]]},"Test with sample data":{"main":[[{"node":"Load sample transcript","type":"main","index":0}]]},"Load sample transcript":{"main":[[{"node":"Combine call metadata","type":"main","index":0}]]},"Validate extracted JSON":{"main":[[{"node":"Format for CRM update","type":"main","index":0}]]},"Extract data with Gemini":{"main":[[{"node":"Validate extracted JSON","type":"main","index":0}]]},"Fetch transcript from Scoot":{"main":[[{"node":"Combine call metadata","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":23,"nodeTypes":{"n8n-nodes-base.if":{"count":2},"n8n-nodes-base.code":{"count":8},"n8n-nodes-base.wait":{"count":1},"n8n-nodes-base.gmail":{"count":1},"n8n-nodes-base.webhook":{"count":1},"n8n-nodes-base.stickyNote":{"count":6},"n8n-nodes-base.httpRequest":{"count":1},"n8n-nodes-base.manualTrigger":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":1},"@n8n/n8n-nodes-langchain.lmChatGoogleGemini":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"AI Sales Agent HQ","username":"daniellopezscoot","bio":"","verified":false,"links":["https://x.com/aisalesagenthq"],"avatar":"https://gravatar.com/avatar/3d5f97a3209d12207d5e0532e23819cf14372954b7130f49e20f116d06aefe4d?r=pg&d=retro&size=200"},"nodes":[{"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":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":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":514,"icon":"fa:pause-circle","name":"n8n-nodes-base.wait","codex":{"data":{"alias":["pause","sleep","delay","timeout"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.wait/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Wait","color":"#804050"},"iconData":{"icon":"pause-circle","type":"icon"},"displayName":"Wait","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":838,"icon":"fa:mouse-pointer","name":"n8n-nodes-base.manualTrigger","codex":{"data":{"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.manualworkflowtrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\"]","defaults":{"name":"When clicking ‘Execute workflow’","color":"#909298"},"iconData":{"icon":"mouse-pointer","type":"icon"},"displayName":"Manual Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1262,"icon":"file:google.svg","name":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatgooglegemini/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"Google Gemini Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNDggNDgiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNNDQuNSAyMEgyNHY4LjVoMTEuOEMzNC43IDMzLjkgMzAuMSAzNyAyNCAzN2MtNy4yIDAtMTMtNS44LTEzLTEzczUuOC0xMyAxMy0xM2MzLjEgMCA1LjkgMS4xIDguMSAyLjlsNi40LTYuNEMzNC42IDQuMSAyOS42IDIgMjQgMiAxMS44IDIgMiAxMS44IDIgMjRzOS44IDIyIDIyIDIyYzExIDAgMjEtOCAyMS0yMiAwLTEuMy0uMi0yLjctLjUtNCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBmaWxsPSIjRkJCQzA1IiBkPSJNMCAzN1YxMWwxNyAxM3oiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im0wIDExIDE3IDEzIDctNi4xTDQ4IDE0VjBIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiMzNEE4NTMiIGQ9Im0wIDM3IDMwLTIzIDcuOSAxTDQ4IDB2NDhIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiM0Mjg1RjQiIGQ9Ik00OCA0OCAxNyAyNGwtNC0zIDM1LTEweiIgY2xpcC1wYXRoPSJ1cmwoI2IpIi8+PC9zdmc+"},"displayName":"Google Gemini Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":39,"name":"CRM"},{"id":49,"name":"AI Summarization"}],"image":[]}}