{ "name": "Inbound Agent copy", "nodes": [ { "parameters": { "options": {} }, "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ -2464, 8048 ], "id": "3c6a8124-d948-4fa9-bb1e-e208a2302d22", "name": "GET SF Report" }, { "parameters": { "jsCode": "// Get the input data\nlet data = $input.all()[0].json;\n\n// Handle different possible structures\nlet report;\nif (Array.isArray(data)) {\n report = data[0];\n} else if (data.factMap) {\n report = data;\n} else {\n throw new Error('Unexpected data structure');\n}\n\n// Check if we have the factMap\nif (!report || !report.factMap) {\n throw new Error('No factMap found in report data');\n}\n\n// Extract rows from the report\nconst rows = report.factMap['T!T'].rows;\n\n// Map each row to extract the fields you need\nconst extractedData = rows.map(row => {\n const cells = row.dataCells;\n \n return {\n firstName: cells[2].label,\n lastName: cells[3].label,\n email: cells[4].label,\n company: cells[5].label,\n leadSource: cells[1].label,\n status: cells[6].label,\n createdDate: cells[0].label,\n recordId: cells[2].recordId,\n TenantName: cells[9]?.label || ''\n };\n});\n\nreturn extractedData.map(item => ({ json: item }));\n" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ -2240, 8048 ], "id": "de639213-bf17-4a1d-8d45-0f516b43da33", "name": "Extract Records" }, { "parameters": { "method": "POST", "options": { "response": { "response": { "neverError": true, "responseFormat": "json" } }, "timeout": 30000 } }, "id": "874d50aa-ad05-4a04-b3e4-9d165227c6a8", "name": "Query Databricks1", "type": "n8n-nodes-base.httpRequest", "typeVersion": 4, "position": [ -1792, 7904 ] }, { "parameters": { "fieldToSplitOut": "result.data_array", "options": {} }, "type": "n8n-nodes-base.splitOut", "typeVersion": 1, "position": [ -1568, 7904 ], "id": "305b19a8-298d-4f98-bee9-e2d9b0fc509f", "name": "Split Out", "alwaysOutputData": false }, { "parameters": { "keys": { "key": [ { "currentKey": "0", "newKey": "TenantNames" }, { "currentKey": "1", "newKey": "endpoints" }, { "currentKey": "2", "newKey": "endpointsNum" } ] }, "additionalOptions": {} }, "type": "n8n-nodes-base.renameKeys", "typeVersion": 1, "position": [ -1344, 7904 ], "id": "f3baeece-0413-4e5a-96ba-2c0f2f19d499", "name": "Rename Keys", "alwaysOutputData": false }, { "parameters": { "jsCode": "// Extract tenant names formatted for SQL IN clause\nconst leads = $input.all();\nconst tenantNames = leads.map(item => `'${item.json.TenantName}'`);\nconst sqlFormattedList = tenantNames.join(', ');\n\nreturn [{ json: { tenantNames: sqlFormattedList } }];" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ -2016, 7904 ], "id": "3e5ba2a7-c7e2-4700-8508-8650bf129cff", "name": "Extract Tenant Names" }, { "parameters": {}, "type": "n8n-nodes-base.manualTrigger", "typeVersion": 1, "position": [ -2688, 8048 ], "id": "71b3f93c-a8b0-447a-94c6-db0dcf88f5f4", "name": "When clicking ‘Execute workflow’" }, { "parameters": { "resource": "task", "status": "Open", "additionalFields": { "description": "={{ $json.Description }}\n", "subject": "Call", "whatId": "={{ $('Get many accounts1').item.json.Id }}" } }, "id": "21f6448e-7380-4781-9275-910e6956440c", "name": "Update Salesforce Records", "type": "n8n-nodes-base.salesforce", "typeVersion": 1, "position": [ 672, 7952 ], "onError": "continueRegularOutput" }, { "parameters": { "resource": "account", "operation": "getAll", "limit": 1, "options": { "conditionsUi": { "conditionValues": [ { "field": "Name", "value": "Test Lead Company" } ] } } }, "type": "n8n-nodes-base.salesforce", "typeVersion": 1, "position": [ -240, 7824 ], "id": "8bbee0b3-8f92-482e-95b9-61d62889c2e1", "name": "Get many accounts1" }, { "parameters": { "jsCode": "// Extract business names with quotes as separate items\nconst leads = $input.all();\nconst businessNames = leads.map(item => `\"${item.json.company}\"`);\n\nreturn businessNames.map(name => ({ json: { businessName: name } }));" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ -1568, 8144 ], "id": "1dd1a537-bda5-4098-9189-277d47b0257b", "name": "Extract Business Names" }, { "parameters": { "operation": "match", "businesses_to_match": { "businesses_to_match": [ { "name": "={{ $json.businessName }}" } ] } }, "type": "@exploriumai/n8n-nodes-explorium-ai.exploriumApiNode", "typeVersion": 1, "position": [ -1120, 8144 ], "id": "250be5c2-96bb-4e52-a263-0caafecfbadf", "name": "Explorium API: Match Businesses" }, { "parameters": { "operation": "enrich", "business_ids": { "business_ids": [ { "id": "={{ $json.matched_businesses[0].business_id }}" } ] } }, "type": "@exploriumai/n8n-nodes-explorium-ai.exploriumApiNode", "typeVersion": 1, "position": [ -688, 8272 ], "id": "087ac6b2-9cb4-4fde-863f-bc6a0abd4fdb", "name": "Explorium API: Firmographics" }, { "parameters": { "jsCode": "// Get all merged data from current node\nconst mergedInput = $input.all();\nconst leadData = $('Extract Records').all(); // Your lead data node\n\n// Separate API usage data from enrichment data\nconst apiUsageData = [];\nconst enrichmentData = [];\n\nmergedInput.forEach(item => {\n if (item.json.TenantNames) {\n // This is API usage data\n apiUsageData.push(item);\n } else if (item.json.response_context) {\n // This is enrichment data\n enrichmentData.push(item);\n }\n});\n\n// Create lookup map for API usage by tenant name\nconst apiUsageMap = {};\napiUsageData.forEach(item => {\n apiUsageMap[item.json.TenantNames] = {\n endpoints: item.json.endpoints,\n endpointsNum: item.json.endpointsNum\n };\n});\n\n// Create lookup map for enrichment data by company name\nconst enrichmentMap = {};\nenrichmentData.forEach(item => {\n const companyData = item.json.data?.[0]?.data;\n if (companyData) {\n enrichmentMap[companyData.name] = {\n business_id: companyData.business_id,\n business_description: companyData.business_description,\n website: companyData.website,\n country: companyData.country_name,\n region: companyData.region_name,\n city: companyData.city_name,\n street: companyData.street,\n zip_code: companyData.zip_code,\n naics: companyData.naics,\n naics_description: companyData.naics_description,\n sic_code: companyData.sic_code,\n sic_code_description: companyData.sic_code_description,\n employees: companyData.number_of_employees_range,\n revenue: companyData.yearly_revenue_range,\n industry: companyData.linkedin_industry_category,\n linkedin: companyData.linkedin_profile,\n logo: companyData.business_logo\n };\n }\n});\n\n// Merge all data with lead data\nconst mergedData = leadData.map(lead => {\n const tenantName = lead.json.TenantName;\n const companyName = lead.json.company;\n \n const apiUsage = apiUsageMap[tenantName] || { \n endpoints: \"[]\", \n endpointsNum: \"0\" \n };\n const enrichment = enrichmentMap[companyName] || {};\n \n return {\n // Lead info\n firstName: lead.json.firstName,\n lastName: lead.json.lastName,\n email: lead.json.email,\n company: companyName,\n leadSource: lead.json.leadSource,\n status: lead.json.status,\n createdDate: lead.json.createdDate,\n recordId: lead.json.recordId,\n tenantName: tenantName,\n \n // API usage info\n endpoints: apiUsage.endpoints,\n endpointsNum: apiUsage.endpointsNum,\n \n // Company enrichment data\n ...enrichment\n };\n});\n\nreturn mergedData.map(item => ({ json: item }));" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ -688, 7952 ], "id": "5ebcfff3-f7b3-46f1-a2b6-4165a75ce474", "name": "Organize Data as Items" }, { "parameters": { "jsCode": "// Format lead qualification analysis for Salesforce task description\nconst rawData = $input.item.json;\nconst data = Array.isArray(rawData) ? rawData[0].output : (rawData.output || rawData);\n\n// Build formatted description\nlet description = '';\n\n// Lead Score Badge\nconst scoreBadge = {\n 'High Priority': '🔴 HIGH PRIORITY',\n 'Medium Priority': '🟡 MEDIUM PRIORITY',\n 'Low Priority': '🟢 LOW PRIORITY',\n 'Nurture': '⚪ NURTURE'\n};\n\ndescription += `${scoreBadge[data.lead_score] || data.lead_score}\\n`;\ndescription += `${'='.repeat(50)}\\n\\n`;\n\n// Quick Summary\ndescription += `📋 QUICK SUMMARY\\n`;\ndescription += `${data.quick_summary}\\n\\n`;\n\n// API Usage Analysis\ndescription += `${'─'.repeat(50)}\\n`;\ndescription += `🔌 API USAGE ANALYSIS\\n`;\ndescription += `${'─'.repeat(50)}\\n`;\n\nif (data.api_usage_analysis.endpoints_used && data.api_usage_analysis.endpoints_used.length > 0) {\n description += `Endpoints Used:\\n`;\n data.api_usage_analysis.endpoints_used.forEach(endpoint => {\n description += ` • ${endpoint}\\n`;\n });\n} else {\n description += `Endpoints Used: None\\n`;\n}\n\ndescription += `\\nPotential Use Case: ${data.api_usage_analysis.potential_use_case}\\n`;\n\nif (data.api_usage_analysis.usage_insights && data.api_usage_analysis.usage_insights.length > 0) {\n description += `\\nUsage Insights:\\n`;\n data.api_usage_analysis.usage_insights.forEach(insight => {\n description += ` • ${insight}\\n`;\n });\n}\ndescription += `\\n`;\n\n// Company Profile\ndescription += `${'─'.repeat(50)}\\n`;\ndescription += `🏢 COMPANY PROFILE\\n`;\ndescription += `${'─'.repeat(50)}\\n`;\ndescription += `${data.company_profile.company_overview}\\n\\n`;\ndescription += `Fit Assessment: ${data.company_profile.fit_assessment}\\n\\n`;\ndescription += `Potential Value: ${data.company_profile.potential_value}\\n\\n`;\n\n// Quality Signals\ndescription += `${'─'.repeat(50)}\\n`;\ndescription += `✅ QUALITY SIGNALS\\n`;\ndescription += `${'─'.repeat(50)}\\n`;\n\nif (data.quality_signals.positive_signals && data.quality_signals.positive_signals.length > 0) {\n description += `Positive Signals:\\n`;\n data.quality_signals.positive_signals.forEach(signal => {\n description += ` ✓ ${signal}\\n`;\n });\n}\n\nif (data.quality_signals.concerns && data.quality_signals.concerns.length > 0) {\n description += `\\nConcerns:\\n`;\n data.quality_signals.concerns.forEach(concern => {\n description += ` ⚠ ${concern}\\n`;\n });\n}\ndescription += `\\n`;\n\n// Recommended Actions\ndescription += `${'─'.repeat(50)}\\n`;\ndescription += `🎯 RECOMMENDED ACTIONS\\n`;\ndescription += `${'─'.repeat(50)}\\n`;\ndescription += `Next Step: ${data.recommended_actions.immediate_next_step}\\n\\n`;\ndescription += `Timing: ${data.recommended_actions.outreach_timing}\\n\\n`;\ndescription += `Approach: ${data.recommended_actions.suggested_approach}\\n\\n`;\n\n// Talking Points\ndescription += `${'─'.repeat(50)}\\n`;\ndescription += `💬 PERSONALIZED TALKING POINTS\\n`;\ndescription += `${'─'.repeat(50)}\\n`;\nif (data.talking_points && data.talking_points.length > 0) {\n data.talking_points.forEach((point, index) => {\n description += `${index + 1}. ${point}\\n`;\n });\n}\n\n// Map lead score to Salesforce priority\nconst priorityMap = {\n 'High Priority': 'High',\n 'Medium Priority': 'Normal',\n 'Low Priority': 'Low',\n 'Nurture': 'Low'\n};\n\nreturn [{\n json: {\n Description: description,\n Priority: priorityMap[data.lead_score] || 'Normal',\n Subject: `Lead Qualification: ${data.lead_score}`,\n Status: 'Not Started',\n lead_score: data.lead_score\n }\n}];\n" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ 448, 7824 ], "id": "7aaca749-d188-4a83-a080-9a069572529e", "name": "Clean Outputs" }, { "parameters": { "model": { "__rl": true, "mode": "list", "value": "claude-sonnet-4-20250514", "cachedResultName": "Claude 4 Sonnet" }, "options": {} }, "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic", "typeVersion": 1.3, "position": [ -32, 8048 ], "id": "10d2c6d5-c3ae-45a4-a29c-3821063db8c3", "name": "Anthropic Chat Model5" }, { "parameters": { "promptType": "define", "text": "=Analyze the following inbound leads and their API usage:\n\nLEAD INFORMATION:\n- Name: {{ $('Loop Over Items5').item.json.firstName }} {{ $('Loop Over Items5').item.json.lastName }}\n- Email: {{ $('Loop Over Items5').item.json.email }}\n- Company: {{ $('Loop Over Items5').item.json.company }}\n- Lead Source: {{ $('Loop Over Items5').item.json.leadSource }}\n- Status: {{ $('Loop Over Items5').item.json.status }}\n- Created: {{ $('Loop Over Items5').item.json.createdDate }}\n\n\nAPI USAGE DATA:\n- Endpoints: {{ $('Loop Over Items5').item.json.endpoints }}\n\nFIRMOGRAPHICS:\n- Business Description: {{ $('Loop Over Items5').item.json.business_description }}\n- Website: {{ $('Loop Over Items5').item.json.website }}\n- City: {{ $('Loop Over Items5').item.json.city }}\n- Employees: {{ $('Loop Over Items5').item.json.employees }}\n- Revenue: {{ $('Loop Over Items5').item.json.revenue }}\n- Industry: {{ $('Loop Over Items5').item.json.industry }}\n\nFor each lead, provide:\n1. **Lead Quality Score** (High/Medium/Low) - based on company legitimacy, email domain, and usage\n2. **API Usage Summary** - which endpoints they're testing and what that indicates about their use case\n3. **Recommended Action** - Should we reach out? What's the priority?\n4. **Personalized Talking Points** - 2-3 specific points mentioning their actual API usage to use in outreach\n5. **Red Flags** (if any) - students, fake emails, zero usage, etc.\n\nFocus on leads that show genuine enterprise interest with meaningful API exploration.", "hasOutputParser": true, "options": { "systemMessage": "=You are an expert inbound lead qualification analyst for Explorium, a data enrichment and external data platform company. Your role is to analyze new leads who have signed up and started using Explorium's APIs, and provide actionable insights to the sales team.\n\nExplorium offers several API products:\n- Events API: Track competitor acquisitions, product launches, and market shifts\n- Chat API: Natural language queries for trend intelligence\n- Enrich API: Deep intelligence on companies and contacts\n- Match & Fetch APIs: Monitor competitive intelligence and hiring patterns\n- MCP Integration: Power internal AI agents with real-time business data\n\nYour analysis should consider:\n1. API usage patterns - which endpoints they're using\n2. Company profile - industry, size, and potential use cases\n3. Lead quality signals - email domain quality, company legitimacy\n4. Recommended next steps - should sales reach out? What's the priority level?\n5. Personalized talking points based on their actual API usage\n\nProvide concise, actionable recommendations in a structured format that sales teams can immediately use." } }, "type": "@n8n/n8n-nodes-langchain.agent", "typeVersion": 2.2, "position": [ 48, 7824 ], "id": "e9d0da86-3049-4037-ae81-04a1e4000424", "name": "AI Agent1" }, { "parameters": { "options": {} }, "type": "n8n-nodes-base.splitInBatches", "typeVersion": 3, "position": [ -1344, 8144 ], "id": "53aabfb5-d72a-4bd4-93e7-70a3efbed008", "name": "Loop Over Items4" }, { "parameters": { "options": {} }, "type": "n8n-nodes-base.splitInBatches", "typeVersion": 3, "position": [ -464, 7952 ], "id": "4a94136b-47bf-4c52-adea-ac064792acd6", "name": "Loop Over Items5" }, { "parameters": { "content": "### Customizable Output:\n- CRM Software\n- Email/Outreach Software\n- etc.", "height": 144, "width": 208, "color": 5 }, "type": "n8n-nodes-base.stickyNote", "position": [ 848, 7968 ], "typeVersion": 1, "id": "38f14202-877e-419d-8562-016ea99712f7", "name": "Sticky Note17" }, { "parameters": { "content": "### Potential Alternative Connections:\n- Hubspot\n- Zoho\n- etc.", "height": 144, "width": 182, "color": 5 }, "type": "n8n-nodes-base.stickyNote", "position": [ -2512, 8208 ], "typeVersion": 1, "id": "54d04e17-ea44-4f41-bacd-c9f79abebe8c", "name": "Sticky Note18" }, { "parameters": { "content": "### Potential Alternative Connections: \n- Databricks\n- Datadog\n- Mixpanel\n- etc.\n", "width": 182, "color": 5 }, "type": "n8n-nodes-base.stickyNote", "position": [ -1536, 7712 ], "typeVersion": 1, "id": "ef830ce4-07ed-4320-b9da-a2c8023472d3", "name": "Sticky Note19" }, { "parameters": { "schemaType": "manual", "inputSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"lead_score\": {\n \"type\": \"string\",\n \"enum\": [\"High Priority\", \"Medium Priority\", \"Low Priority\", \"Nurture\"],\n \"description\": \"Overall lead quality assessment based on usage, company profile, and signals\"\n },\n \"quick_summary\": {\n \"type\": \"string\",\n \"description\": \"2-3 sentence executive summary of this lead's potential and immediate next steps\"\n },\n \"api_usage_analysis\": {\n \"type\": \"object\",\n \"properties\": {\n \"endpoints_used\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"List of API endpoints the lead has been using\"\n },\n \"usage_insights\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Insights about what their API usage patterns reveal about their needs and use case\"\n },\n \"potential_use_case\": {\n \"type\": \"string\",\n \"description\": \"Most likely use case based on API usage patterns\"\n }\n },\n \"required\": [\"endpoints_used\", \"usage_insights\", \"potential_use_case\"]\n },\n \"company_profile\": {\n \"type\": \"object\",\n \"properties\": {\n \"company_overview\": {\n \"type\": \"string\",\n \"description\": \"Brief overview of the company including industry, size, and business model\"\n },\n \"fit_assessment\": {\n \"type\": \"string\",\n \"description\": \"Why this company is (or isn't) a good fit for Explorium based on their profile\"\n },\n \"potential_value\": {\n \"type\": \"string\",\n \"description\": \"Estimated potential value or deal size based on company size and use case\"\n }\n },\n \"required\": [\"company_overview\", \"fit_assessment\", \"potential_value\"]\n },\n \"quality_signals\": {\n \"type\": \"object\",\n \"properties\": {\n \"positive_signals\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Positive indicators of lead quality (legitimate company email, active usage, enterprise size, etc.)\"\n },\n \"concerns\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Any red flags or concerns (generic email, low usage, unclear use case, etc.). Leave empty if no concerns.\"\n }\n },\n \"required\": [\"positive_signals\", \"concerns\"]\n },\n \"recommended_actions\": {\n \"type\": \"object\",\n \"properties\": {\n \"immediate_next_step\": {\n \"type\": \"string\",\n \"description\": \"The single most important action sales should take right now\"\n },\n \"outreach_timing\": {\n \"type\": \"string\",\n \"description\": \"When to reach out (immediately, within 24hrs, this week, monitor first, etc.)\"\n },\n \"suggested_approach\": {\n \"type\": \"string\",\n \"description\": \"How to approach this lead (email, call, demo offer, etc.) and tone to use\"\n }\n },\n \"required\": [\"immediate_next_step\", \"outreach_timing\", \"suggested_approach\"]\n },\n \"talking_points\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Specific, personalized talking points based on their API usage and company profile that sales can reference in conversation\"\n }\n },\n \"required\": [\n \"lead_score\",\n \"quick_summary\",\n \"api_usage_analysis\",\n \"company_profile\",\n \"quality_signals\",\n \"recommended_actions\",\n \"talking_points\"\n ]\n}" }, "type": "@n8n/n8n-nodes-langchain.outputParserStructured", "typeVersion": 1.3, "position": [ 256, 8048 ], "id": "5052c624-3942-4473-aa90-438f3efa1e5e", "name": "Structured Output Parser3" }, { "parameters": { "content": "### Customizable Triggers:\n- Webhook\n- Scheduler\n- etc.", "height": 144, "width": 176, "color": 5 }, "type": "n8n-nodes-base.stickyNote", "position": [ -2992, 8032 ], "typeVersion": 1, "id": "61e1ca4a-6d7b-4b93-a646-6ac41a86366c", "name": "Sticky Note20" }, { "parameters": {}, "type": "n8n-nodes-base.merge", "typeVersion": 3.2, "position": [ -912, 7952 ], "id": "7ec5b3cf-6a4f-45be-a09e-03a5136ad244", "name": "Merge1" }, { "parameters": { "conditions": { "options": { "caseSensitive": true, "leftValue": "", "typeValidation": "strict", "version": 2 }, "conditions": [ { "id": "43bf56c0-fb5f-4c71-b756-efe10ff4f471", "leftValue": "={{ $json.matched_businesses[0].business_id }}", "rightValue": "", "operator": { "type": "string", "operation": "notEmpty", "singleValue": true } } ], "combinator": "and" }, "options": {} }, "type": "n8n-nodes-base.if", "typeVersion": 2.2, "position": [ -896, 8144 ], "id": "270f5bd2-7601-4b1c-b21a-b4208ad33f0f", "name": "If2" }, { "parameters": { "content": "# Inbound Agent\n\n## How it works\nThis workflow automatically qualifies inbound leads by combining three data sources: CRM records, product usage data, and company firmographics. It pulls new leads from Salesforce, checks their API usage patterns in Databricks, enriches them with Explorium's company data, then uses AI to score each lead and generate personalized talking points. The output creates actionable tasks in Salesforce with detailed qualification notes.\n\n## Setup steps\n1. Connect your Salesforce instance (GET SF Report, Get accounts, Update Records nodes)\n2. Configure Databricks connection with your usage analytics table (or preferred internal data)\n3. Add Explorium API credentials (Match & Enrich nodes + MCP tool)\n4. Insert your Anthropic API key (Chat Model node)\n5. Customize the AI prompt to match your product/qualification criteria\n6. Set your preferred trigger (manual, schedule, or webhook)", "height": 448, "width": 688 }, "type": "n8n-nodes-base.stickyNote", "position": [ -3040, 7184 ], "typeVersion": 1, "id": "e341ab7d-c78f-4fde-84a9-58a0e34ab370", "name": "Sticky Note21" }, { "parameters": { "content": "## Pull Lead Data\nRetrieves new leads from Salesforce report and extracts key fields.", "height": 112, "width": 304, "color": 7 }, "type": "n8n-nodes-base.stickyNote", "position": [ -2560, 7920 ], "typeVersion": 1, "id": "d7b246fc-7f64-4ec9-8437-9554ea0a03af", "name": "Sticky Note22" }, { "parameters": { "content": "## Check Product Usage\nQueries Databricks to see which API endpoints each lead has been testing to understand interests.", "height": 144, "width": 304, "color": 7 }, "type": "n8n-nodes-base.stickyNote", "position": [ -1872, 7728 ], "typeVersion": 1, "id": "e7a17a33-2ad7-4559-ab30-c3d735c0b5f9", "name": "Sticky Note23" }, { "parameters": { "content": "## AI-Powered Analysis\nThe AI agent powered by Claude analyzes usage patterns + firmographics to score leads, identify use cases, and generate personalized outreach talking points. The AI agent is also connected to the Explorium MCP for any additional research.", "width": 352, "color": 7 }, "type": "n8n-nodes-base.stickyNote", "position": [ -16, 7648 ], "typeVersion": 1, "id": "eb0d3a79-ca64-4bea-ae71-9bf8d7a77a3b", "name": "Sticky Note24" }, { "parameters": { "content": "## Output\nFormats AI analysis as structured Salesforce tasks with priority levels and next steps for your sales team.", "height": 144, "color": 7 }, "type": "n8n-nodes-base.stickyNote", "position": [ 656, 7760 ], "typeVersion": 1, "id": "8ad0c79c-edcc-4766-b980-8ad745933ac4", "name": "Sticky Note25" }, { "parameters": { "endpointUrl": "https://mcp-n8n.explorium.ai/mcp", "authentication": "headerAuth", "options": {} }, "type": "@n8n/n8n-nodes-langchain.mcpClientTool", "typeVersion": 1.2, "position": [ 112, 8048 ], "id": "d160246c-f2a7-4c81-b2ee-6d5dc394b9a4", "name": "Explorium MCP2" } ], "pinData": {}, "connections": { "GET SF Report": { "main": [ [ { "node": "Extract Records", "type": "main", "index": 0 } ] ] }, "Extract Records": { "main": [ [ { "node": "Extract Tenant Names", "type": "main", "index": 0 }, { "node": "Extract Business Names", "type": "main", "index": 0 } ] ] }, "Query Databricks1": { "main": [ [ { "node": "Split Out", "type": "main", "index": 0 } ] ] }, "Split Out": { "main": [ [ { "node": "Rename Keys", "type": "main", "index": 0 } ] ] }, "Rename Keys": { "main": [ [ { "node": "Merge1", "type": "main", "index": 0 } ] ] }, "Extract Tenant Names": { "main": [ [ { "node": "Query Databricks1", "type": "main", "index": 0 } ] ] }, "When clicking ‘Execute workflow’": { "main": [ [ { "node": "GET SF Report", "type": "main", "index": 0 } ] ] }, "Update Salesforce Records": { "main": [ [ { "node": "Loop Over Items5", "type": "main", "index": 0 } ] ] }, "Get many accounts1": { "main": [ [ { "node": "AI Agent1", "type": "main", "index": 0 } ] ] }, "Extract Business Names": { "main": [ [ { "node": "Loop Over Items4", "type": "main", "index": 0 } ] ] }, "Explorium API: Match Businesses": { "main": [ [ { "node": "If2", "type": "main", "index": 0 } ] ] }, "Explorium API: Firmographics": { "main": [ [ { "node": "Loop Over Items4", "type": "main", "index": 0 } ] ] }, "Organize Data as Items": { "main": [ [ { "node": "Loop Over Items5", "type": "main", "index": 0 } ] ] }, "Clean Outputs": { "main": [ [ { "node": "Update Salesforce Records", "type": "main", "index": 0 } ] ] }, "Anthropic Chat Model5": { "ai_languageModel": [ [ { "node": "AI Agent1", "type": "ai_languageModel", "index": 0 } ] ] }, "AI Agent1": { "main": [ [ { "node": "Clean Outputs", "type": "main", "index": 0 } ] ] }, "Loop Over Items4": { "main": [ [ { "node": "Merge1", "type": "main", "index": 1 } ], [ { "node": "Explorium API: Match Businesses", "type": "main", "index": 0 } ] ] }, "Loop Over Items5": { "main": [ [], [ { "node": "Get many accounts1", "type": "main", "index": 0 } ] ] }, "Structured Output Parser3": { "ai_outputParser": [ [ { "node": "AI Agent1", "type": "ai_outputParser", "index": 0 } ] ] }, "Merge1": { "main": [ [ { "node": "Organize Data as Items", "type": "main", "index": 0 } ] ] }, "If2": { "main": [ [ { "node": "Explorium API: Firmographics", "type": "main", "index": 0 } ], [ { "node": "Loop Over Items4", "type": "main", "index": 0 } ] ] }, "Explorium MCP2": { "ai_tool": [ [ { "node": "AI Agent1", "type": "ai_tool", "index": 0 } ] ] } }, "active": false, "settings": { "executionOrder": "v1" }, "versionId": "", "meta": { "templateCredsSetupCompleted": true, "instanceId": "0a70652f43c1b29dd16c35b61a38fd31c8004f58bc7e723bf43262a797407c77" }, "tags": [] }