{"workflow":{"id":14264,"name":"Generate personalized trip recommendations with Claude AI and Google Sheets","views":59,"recentViews":1,"totalViews":59,"createdAt":"2026-03-23T09:43:08.397Z","description":"This workflow provides personalized travel destination recommendations by analyzing past trip history, user preferences, travel behavior patterns, and current trends. It uses Claude AI to generate intelligent, context-aware suggestions tailored to each traveler.\n\n### How it works\n\n1. **Receive Trip Request** - Webhook captures user query with preferences and constraints\n2. **Validate Input** - Checks required fields, normalizes data, calculates user profile metrics\n3. **Fetch Travel History** - Retrieves past trips, ratings, and behavioral data from Google Sheets\n4. **Analyze Patterns** - Identifies travel patterns, preferred destinations, seasonal preferences\n5. **Claude AI Recommendation** - Generates personalized destination suggestions with reasoning\n6. **Enrich with Live Data** - Adds current weather, events, flight prices (optional)\n7. **Store Recommendation** - Saves suggestion to database with full context\n8. **Send Personalized Response** - Delivers recommendations via email or API response\n9. **Daily Batch Updates** - Scheduled job to refresh recommendations for all active users\n10. **Trend Analysis** - Weekly reports on popular destinations and emerging trends\n\n### Setup Steps\n\n1. Import workflow into n8n\n2. Configure credentials:\n   - **Anthropic API** - Claude AI for recommendation engine\n   - **Google Sheets** - Trip history and user profiles\n   - **SMTP / Gmail** - Email notifications\n   - **Weather API** (optional) - Real-time weather data\n   - **Flight API** (optional) - Price comparisons\n3. Create Google Sheets with tabs:\n   - `user_profiles` - User data and preferences\n   - `trip_history` - Past trip records\n   - `recommendations` - Generated suggestions\n   - `analytics` - Trend analysis logs\n4. Set your API keys and sheet IDs in the configuration nodes\n5. Activate both webhook and scheduled workflows\n\n### Sample Trip Request Payload\n```json\n{\n  \"userId\": \"USER-2025-1234\",\n  \"userName\": \"Sarah Johnson\",\n  \"userEmail\": \"sarah.j@example.com\",\n  \"preferences\": {\n    \"budget\": \"moderate\",\n    \"travelStyle\": \"adventure\",\n    \"interests\": [\"hiking\", \"local cuisine\", \"cultural sites\"],\n    \"climate\": \"warm\",\n    \"duration\": \"7-10 days\",\n    \"travelMonth\": \"June\"\n  },\n  \"constraints\": {\n    \"maxBudget\": 3000,\n    \"departureCity\": \"San Francisco\",\n    \"companions\": \"solo\",\n    \"accessibility\": \"none\"\n  },\n  \"excludeRegions\": [\"visited_recently\"],\n  \"prioritize\": \"unique_experiences\"\n}\n```\n\n### Features\n- **AI-Powered Personalization** - Claude analyzes patterns and generates unique suggestions\n- **Behavioral Learning** - Improves over time based on trip ratings and feedback\n- **Real-Time Data Integration** - Weather, events, and pricing for recommended destinations\n- **Budget Optimization** - Suggests best value destinations within user budget\n- **Seasonal Intelligence** - Recommends optimal travel timing\n- **Trend Detection** - Identifies emerging destinations before they get crowded\n- **Multi-Factor Scoring** - Balances preferences, budget, timing, and uniqueness","workflow":{"id":"DjZZwIKloGiMV0fF","meta":{"instanceId":"dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281","templateCredsSetupCompleted":true},"name":"Smart Next Trip Suggestion Engine with Claude AI and Behavioral Analysis","tags":[],"nodes":[{"id":"eed08155-6530-4c87-ae0a-3d60b0266b71","name":"Main Documentation","type":"n8n-nodes-base.stickyNote","position":[-272,-304],"parameters":{"width":1072,"height":1554,"content":"## Smart Next Trip Suggestion Engine with Claude AI\n\nThis workflow provides personalized travel destination recommendations by analyzing past trip history, user preferences, travel behavior patterns, and current trends. It uses Claude AI to generate intelligent, context-aware suggestions tailored to each traveler.\n\n### How it works\n\n1. **Receive Trip Request** - Webhook captures user query with preferences and constraints\n2. **Validate Input** - Checks required fields, normalizes data, calculates user profile metrics\n3. **Fetch Travel History** - Retrieves past trips, ratings, and behavioral data from Google Sheets\n4. **Analyze Patterns** - Identifies travel patterns, preferred destinations, seasonal preferences\n5. **Claude AI Recommendation** - Generates personalized destination suggestions with reasoning\n6. **Enrich with Live Data** - Adds current weather, events, flight prices (optional)\n7. **Store Recommendation** - Saves suggestion to database with full context\n8. **Send Personalized Response** - Delivers recommendations via email or API response\n9. **Daily Batch Updates** - Scheduled job to refresh recommendations for all active users\n10. **Trend Analysis** - Weekly reports on popular destinations and emerging trends\n\n### Setup Steps\n\n1. Import workflow into n8n\n2. Configure credentials:\n   - **Anthropic API** - Claude AI for recommendation engine\n   - **Google Sheets** - Trip history and user profiles\n   - **SMTP / Gmail** - Email notifications\n   - **Weather API** (optional) - Real-time weather data\n   - **Flight API** (optional) - Price comparisons\n3. Create Google Sheets with tabs:\n   - `user_profiles` - User data and preferences\n   - `trip_history` - Past trip records\n   - `recommendations` - Generated suggestions\n   - `analytics` - Trend analysis logs\n4. Set your API keys and sheet IDs in the configuration nodes\n5. Activate both webhook and scheduled workflows\n\n### Sample Trip Request Payload\n```json\n{\n  \"userId\": \"USER-2025-1234\",\n  \"userName\": \"Sarah Johnson\",\n  \"userEmail\": \"sarah.j@example.com\",\n  \"preferences\": {\n    \"budget\": \"moderate\",\n    \"travelStyle\": \"adventure\",\n    \"interests\": [\"hiking\", \"local cuisine\", \"cultural sites\"],\n    \"climate\": \"warm\",\n    \"duration\": \"7-10 days\",\n    \"travelMonth\": \"June\"\n  },\n  \"constraints\": {\n    \"maxBudget\": 3000,\n    \"departureCity\": \"San Francisco\",\n    \"companions\": \"solo\",\n    \"accessibility\": \"none\"\n  },\n  \"excludeRegions\": [\"visited_recently\"],\n  \"prioritize\": \"unique_experiences\"\n}\n```\n\n### Features\n- **AI-Powered Personalization** - Claude analyzes patterns and generates unique suggestions\n- **Behavioral Learning** - Improves over time based on trip ratings and feedback\n- **Real-Time Data Integration** - Weather, events, and pricing for recommended destinations\n- **Budget Optimization** - Suggests best value destinations within user budget\n- **Seasonal Intelligence** - Recommends optimal travel timing\n- **Trend Detection** - Identifies emerging destinations before they get crowded\n- **Multi-Factor Scoring** - Balances preferences, budget, timing, and uniqueness"},"typeVersion":1},{"id":"3682a8c4-1ca1-4508-b853-9cebd0ef35f3","name":"Section 1 Header","type":"n8n-nodes-base.stickyNote","position":[1008,192],"parameters":{"color":4,"width":460,"height":320,"content":"## 1. Request Intake & Validation"},"typeVersion":1},{"id":"97ff4a42-d17f-4565-9635-5b02c171c9b9","name":"Section 2 Header","type":"n8n-nodes-base.stickyNote","position":[1504,48],"parameters":{"color":4,"width":840,"height":720,"content":"## 2. History Analysis & AI Recommendation"},"typeVersion":1},{"id":"41ac0d32-1b96-4837-82b1-d799fe36899c","name":"Section 3 Header","type":"n8n-nodes-base.stickyNote","position":[2384,32],"parameters":{"color":4,"width":1456,"height":760,"content":"## 3. Enrichment, Storage & Delivery"},"typeVersion":1},{"id":"ac59cdbd-824a-49e3-8ccc-f497ff18006b","name":"Section 4 Header","type":"n8n-nodes-base.stickyNote","position":[1088,880],"parameters":{"color":4,"width":1400,"height":380,"content":"## 4. Daily Batch Recommendations & Trend Analysis"},"typeVersion":1},{"id":"750c4f35-49c5-4b44-b070-fcb53c822479","name":"Receive Trip Suggestion Request","type":"n8n-nodes-base.webhook","position":[1088,352],"webhookId":"trip-suggestion-webhook","parameters":{"path":"trip-suggestion","options":{},"httpMethod":"POST","responseMode":"responseNode"},"typeVersion":2},{"id":"c99f072c-a38e-4d44-8bc8-6d9757619087","name":"Validate and Normalize Request","type":"n8n-nodes-base.code","position":[1312,352],"parameters":{"mode":"runOnceForEachItem","jsCode":"// Extract request body\nconst body = $input.item.json.body || $input.item.json;\n\n// Required field validation\nconst requiredFields = ['userId', 'userName', 'userEmail', 'preferences'];\nconst missing = requiredFields.filter(f => !body[f]);\nif (missing.length > 0) {\n  throw new Error(`Missing required fields: ${missing.join(', ')}`);\n}\n\n// Validate email format\nconst emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\nif (!emailRegex.test(body.userEmail)) {\n  throw new Error(`Invalid email format: ${body.userEmail}`);\n}\n\n// Normalize preferences\nconst preferences = body.preferences || {};\nconst normalizedPrefs = {\n  budget: (preferences.budget || 'moderate').toLowerCase(),\n  travelStyle: (preferences.travelStyle || 'balanced').toLowerCase(),\n  interests: Array.isArray(preferences.interests) ? preferences.interests : [],\n  climate: (preferences.climate || 'any').toLowerCase(),\n  duration: preferences.duration || '5-7 days',\n  travelMonth: preferences.travelMonth || null\n};\n\n// Normalize constraints\nconst constraints = body.constraints || {};\nconst normalizedConstraints = {\n  maxBudget: constraints.maxBudget || 5000,\n  departureCity: constraints.departureCity || 'Not specified',\n  companions: (constraints.companions || 'flexible').toLowerCase(),\n  accessibility: constraints.accessibility || 'none'\n};\n\n// Calculate user profile score\nconst hasDetailedPrefs = normalizedPrefs.interests.length > 2;\nconst hasBudget = constraints.maxBudget > 0;\nconst hasTimeline = !!normalizedPrefs.travelMonth;\nconst profileCompleteness = Math.round(\n  ((hasDetailedPrefs ? 40 : 0) + (hasBudget ? 30 : 0) + (hasTimeline ? 30 : 0))\n);\n\n// Build normalized request\nconst tripRequest = {\n  // Identifiers\n  requestId: `REQ-${Date.now()}-${Math.random().toString(36).substr(2, 9).toUpperCase()}`,\n  userId: body.userId.trim(),\n  userName: body.userName.trim(),\n  userEmail: body.userEmail.trim().toLowerCase(),\n  \n  // Preferences\n  preferences: normalizedPrefs,\n  constraints: normalizedConstraints,\n  \n  // Exclusions and priorities\n  excludeRegions: body.excludeRegions || [],\n  excludeDestinations: body.excludeDestinations || [],\n  prioritize: body.prioritize || 'balanced',\n  \n  // Metadata\n  requestedAt: new Date().toISOString(),\n  profileCompleteness,\n  requestSource: body.requestSource || 'web_app',\n  sessionId: body.sessionId || null,\n  \n  // Processing status\n  status: 'VALIDATED'\n};\n\nreturn { json: { tripRequest } };"},"typeVersion":2},{"id":"4fde7100-c6a6-4363-8225-f0323a0dfdab","name":"Fetch User Travel History","type":"n8n-nodes-base.googleSheets","position":[1616,160],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":"trip_history"},"documentId":{"__rl":true,"mode":"list","value":"YOUR_GOOGLE_SHEET_ID_HERE"},"authentication":"serviceAccount"},"credentials":{"googleApi":{"id":"credential-id","name":"Google Sheets- test"}},"typeVersion":4.5,"continueOnFail":true},{"id":"26325cc6-90af-43de-b8b9-7ec1c6b182f8","name":"Fetch User Profile Data","type":"n8n-nodes-base.googleSheets","position":[1616,352],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":"user_profiles"},"documentId":{"__rl":true,"mode":"list","value":"YOUR_GOOGLE_SHEET_ID_HERE"},"authentication":"serviceAccount"},"credentials":{"googleApi":{"id":"credential-id","name":"Google Sheets- test"}},"typeVersion":4.5,"continueOnFail":true},{"id":"e0628839-f748-4109-a9a1-e70474ed0f01","name":"Analyze Travel Patterns","type":"n8n-nodes-base.code","position":[1840,272],"parameters":{"jsCode":"// Get trip request and history\nconst tripRequest = $('Validate and Normalize Request').item.json.tripRequest;\nconst historyData = $('Fetch User Travel History').all().map(i => i.json);\nconst profileData = $('Fetch User Profile Data').all().map(i => i.json);\n\n// Filter user's trips\nconst userTrips = historyData.filter(t => t.userId === tripRequest.userId);\n\n// Analyze destination patterns\nconst destinationTypes = {};\nconst climatePrefs = {};\nconst budgetRanges = [];\nconst ratings = [];\nconst mostVisitedRegions = {};\n\nuserTrips.forEach(trip => {\n  // Destination type analysis\n  const type = trip.destinationType || 'unknown';\n  destinationTypes[type] = (destinationTypes[type] || 0) + 1;\n  \n  // Climate preferences\n  const climate = trip.climate || 'unknown';\n  climatePrefs[climate] = (climatePrefs[climate] || 0) + 1;\n  \n  // Budget tracking\n  if (trip.totalCost) budgetRanges.push(trip.totalCost);\n  \n  // Ratings\n  if (trip.rating) ratings.push(trip.rating);\n  \n  // Regional preferences\n  const region = trip.region || 'unknown';\n  mostVisitedRegions[region] = (mostVisitedRegions[region] || 0) + 1;\n});\n\n// Calculate insights\nconst avgBudget = budgetRanges.length > 0 \n  ? Math.round(budgetRanges.reduce((a, b) => a + b, 0) / budgetRanges.length)\n  : 2000;\n\nconst avgRating = ratings.length > 0\n  ? (ratings.reduce((a, b) => a + b, 0) / ratings.length).toFixed(1)\n  : 'N/A';\n\nconst favoriteDestinationType = Object.keys(destinationTypes).sort(\n  (a, b) => destinationTypes[b] - destinationTypes[a]\n)[0] || 'unknown';\n\nconst preferredClimate = Object.keys(climatePrefs).sort(\n  (a, b) => climatePrefs[b] - climatePrefs[a]\n)[0] || 'any';\n\nconst topRegion = Object.keys(mostVisitedRegions).sort(\n  (a, b) => mostVisitedRegions[b] - mostVisitedRegions[a]\n)[0] || 'none';\n\n// Recent trips (last 12 months)\nconst oneYearAgo = new Date();\noneYearAgo.setFullYear(oneYearAgo.getFullYear() - 1);\nconst recentTrips = userTrips.filter(t => {\n  const tripDate = new Date(t.tripDate);\n  return tripDate >= oneYearAgo;\n});\n\n// Build analysis\nconst travelAnalysis = {\n  tripRequest,\n  userStats: {\n    totalTrips: userTrips.length,\n    recentTrips: recentTrips.length,\n    avgBudget,\n    avgRating,\n    favoriteDestinationType,\n    preferredClimate,\n    topRegion,\n    travelFrequency: userTrips.length > 0 ? 'experienced' : 'new_traveler'\n  },\n  patterns: {\n    destinationTypes,\n    climatePrefs,\n    mostVisitedRegions\n  },\n  recentDestinations: recentTrips.map(t => t.destination),\n  highestRatedTrips: userTrips\n    .filter(t => t.rating >= 4)\n    .map(t => ({ destination: t.destination, rating: t.rating }))\n    .slice(0, 5)\n};\n\nreturn [{ json: travelAnalysis }];"},"typeVersion":2},{"id":"12513851-331b-4f9c-82db-f8a00c44eeb6","name":"Claude AI Trip Recommendation Engine","type":"@n8n/n8n-nodes-langchain.agent","position":[2064,272],"parameters":{"text":"=You are an expert travel advisor with deep knowledge of global destinations, travel trends, cultural experiences, and optimal timing for visits worldwide.\n\nGenerate personalized trip recommendations for this traveler based on their profile, history, and preferences.\n\n**User Profile:**\n- User ID: {{ $json.tripRequest.userId }}\n- Name: {{ $json.tripRequest.userName }}\n- Travel Experience: {{ $json.userStats.travelFrequency }} ({{ $json.userStats.totalTrips }} total trips)\n- Average Budget: ${{ $json.userStats.avgBudget }}\n- Average Trip Rating: {{ $json.userStats.avgRating }}/5\n- Favorite Destination Type: {{ $json.userStats.favoriteDestinationType }}\n- Preferred Climate: {{ $json.userStats.preferredClimate }}\n- Most Visited Region: {{ $json.userStats.topRegion }}\n\n**Current Request:**\n- Budget Level: {{ $json.tripRequest.preferences.budget }}\n- Max Budget: ${{ $json.tripRequest.constraints.maxBudget }}\n- Travel Style: {{ $json.tripRequest.preferences.travelStyle }}\n- Interests: {{ $json.tripRequest.preferences.interests.join(', ') }}\n- Climate Preference: {{ $json.tripRequest.preferences.climate }}\n- Duration: {{ $json.tripRequest.preferences.duration }}\n- Travel Month: {{ $json.tripRequest.preferences.travelMonth || 'Flexible' }}\n- Departure City: {{ $json.tripRequest.constraints.departureCity }}\n- Companions: {{ $json.tripRequest.constraints.companions }}\n- Priority: {{ $json.tripRequest.prioritize }}\n\n**Recent Travel History:**\n{{ $json.recentDestinations.join(', ') || 'No recent trips' }}\n\n**Exclude:** {{ $json.tripRequest.excludeRegions.join(', ') || 'None' }}\n\n**Task:**\n1. Analyze the user's travel patterns and preferences\n2. Consider seasonality and optimal timing for the requested month\n3. Recommend 3-5 destinations that match their profile\n4. Balance familiarity vs. discovery based on their travel experience\n5. Ensure recommendations fit within budget constraints\n6. Provide specific reasoning for each suggestion\n7. Include insider tips and optimal timing\n\n**Response Format (JSON only, no markdown):**\n{\n  \"recommendations\": [\n    {\n      \"destination\": \"City, Country\",\n      \"region\": \"Geographic region\",\n      \"matchScore\": 95,\n      \"reasoning\": \"Why this destination fits the traveler's profile\",\n      \"highlights\": [\"Key attraction 1\", \"Key attraction 2\", \"Key attraction 3\"],\n      \"bestTimeToVisit\": \"Month range\",\n      \"estimatedBudget\": 2500,\n      \"budgetBreakdown\": {\"flights\": 600, \"accommodation\": 800, \"activities\": 700, \"food\": 400},\n      \"travelStyle\": \"adventure\",\n      \"climate\": \"warm\",\n      \"culturalEvents\": [\"Festival or event if applicable\"],\n      \"insiderTips\": [\"Local tip 1\", \"Local tip 2\"],\n      \"similarToPastTrip\": \"Destination from history if applicable\",\n      \"uniqueExperience\": \"What makes this different from past trips\",\n      \"duration\": \"7-10 days\",\n      \"difficultyLevel\": \"moderate\",\n      \"crowdLevel\": \"moderate\",\n      \"sustainabilityScore\": 8\n    }\n  ],\n  \"overallStrategy\": \"Brief explanation of the recommendation strategy\",\n  \"seasonalNote\": \"Any important seasonal considerations\",\n  \"budgetOptimizationTips\": [\"How to maximize value within budget\"],\n  \"alternativeMonths\": [\"Better months if requested month isn't optimal\"],\n  \"confidenceScore\": 90,\n  \"dataQualityNote\": \"Note on whether more trip history would improve recommendations\"\n}","options":{"systemMessage":"You are an expert travel advisor. Respond with valid JSON only — no markdown, no code blocks, no preamble. Your recommendations must be personalized, budget-aware, and consider optimal timing."},"promptType":"define"},"typeVersion":1.6},{"id":"b5ad0e2a-b8d4-4644-96d8-06acfdef79bf","name":"Claude Sonnet 4 Model","type":"@n8n/n8n-nodes-langchain.lmChatAnthropic","position":[2144,496],"parameters":{"model":"=claude-sonnet-4-20250514","options":{"temperature":0.3}},"credentials":{"anthropicApi":{"id":"credential-id","name":"Anthropic account - test"}},"typeVersion":1},{"id":"564bf347-a2f9-4660-8a7c-9fae4845f828","name":"Parse AI Recommendations","type":"n8n-nodes-base.code","position":[2416,272],"parameters":{"mode":"runOnceForEachItem","jsCode":"const aiResponse = $input.item.json;\nlet aiText = aiResponse.response || aiResponse.output || aiResponse.text || '';\n\n// Handle Anthropic content array format\nif (aiResponse.content && Array.isArray(aiResponse.content)) {\n  aiText = aiResponse.content[0]?.text || '';\n}\n\n// Strip markdown code blocks\nconst cleanText = aiText\n  .replace(/```json\\s*/g, '')\n  .replace(/```\\s*/g, '')\n  .trim();\n\nlet recommendations;\ntry {\n  recommendations = JSON.parse(cleanText);\n} catch (error) {\n  throw new Error(`Failed to parse Claude response: ${error.message}. Raw: ${cleanText.substring(0, 200)}`);\n}\n\n// Get original request\nconst analysis = $('Analyze Travel Patterns').item.json;\nconst tripRequest = analysis.tripRequest;\n\n// Build final recommendation record\nconst recommendationRecord = {\n  // Identifiers\n  recommendationId: `REC-${Date.now()}-${Math.random().toString(36).substr(2, 9).toUpperCase()}`,\n  requestId: tripRequest.requestId,\n  userId: tripRequest.userId,\n  userName: tripRequest.userName,\n  userEmail: tripRequest.userEmail,\n  \n  // Recommendations\n  destinations: recommendations.recommendations || [],\n  topDestination: recommendations.recommendations?.[0]?.destination || 'None',\n  topMatchScore: recommendations.recommendations?.[0]?.matchScore || 0,\n  \n  // Strategy and insights\n  strategy: recommendations.overallStrategy || '',\n  seasonalNote: recommendations.seasonalNote || '',\n  budgetTips: recommendations.budgetOptimizationTips || [],\n  alternativeMonths: recommendations.alternativeMonths || [],\n  confidenceScore: recommendations.confidenceScore || 0,\n  dataQualityNote: recommendations.dataQualityNote || '',\n  \n  // Request context\n  requestedPreferences: tripRequest.preferences,\n  requestedConstraints: tripRequest.constraints,\n  userTravelStats: analysis.userStats,\n  \n  // Metadata\n  generatedAt: new Date().toISOString(),\n  aiModel: 'claude-sonnet-4-20250514',\n  status: 'GENERATED',\n  viewed: false,\n  bookingsMade: 0\n};\n\nreturn { json: { recommendationRecord, fullRecommendations: recommendations } };"},"typeVersion":2},{"id":"ff6a17ec-58e3-469e-b979-e4114b87de07","name":"Wait for Data Enrichment","type":"n8n-nodes-base.wait","position":[2640,272],"webhookId":"wait-enrichment","parameters":{"amount":2},"typeVersion":1.1},{"id":"1b2ebd2d-6526-4f40-8199-a215b2d44a9b","name":"Enrich with Weather Data (Optional)","type":"n8n-nodes-base.httpRequest","position":[2864,144],"parameters":{"url":"=https://api.openweathermap.org/data/2.5/weather?q={{ $json.recommendationRecord.topDestination }}&appid=YOUR_API_KEY&units=metric","options":{"timeout":5000}},"typeVersion":4.2,"continueOnFail":true},{"id":"727fc43c-ecf9-405a-971c-78db8998e5c0","name":"Store Recommendation Record","type":"n8n-nodes-base.googleSheets","position":[2864,352],"parameters":{"columns":{"value":{},"mappingMode":"autoMapInputData"},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":"recommendations"},"documentId":{"__rl":true,"mode":"list","value":"YOUR_GOOGLE_SHEET_ID_HERE"}},"credentials":{"googleSheetsOAuth2Api":{"id":"credential-id","name":"Google Sheets account"}},"typeVersion":4.5,"continueOnFail":true},{"id":"de1783cc-b9de-45f1-99d1-188f0cb4278c","name":"Send Personalized Email","type":"n8n-nodes-base.emailSend","position":[2864,560],"webhookId":"email-recommendations","parameters":{"options":{},"subject":"=Your Personalized Travel Recommendations - {{ $json.recommendationRecord.topDestination }} & More!","toEmail":"={{ $json.recommendationRecord.userEmail }}","fromEmail":"user@example.com"},"credentials":{"smtp":{"id":"credential-id","name":"SMTP -test"}},"typeVersion":2.1,"continueOnFail":true},{"id":"359dcc6c-911b-4b38-84fa-3c77565193c1","name":"Build API Response","type":"n8n-nodes-base.code","position":[3088,400],"parameters":{"mode":"runOnceForEachItem","jsCode":"const data = $('Parse AI Recommendations').item.json;\nconst record = data.recommendationRecord;\nconst full = data.fullRecommendations;\n\nreturn {\n  json: {\n    success: true,\n    recommendationId: record.recommendationId,\n    userId: record.userId,\n    generatedAt: record.generatedAt,\n    topDestination: record.topDestination,\n    totalRecommendations: record.destinations.length,\n    confidenceScore: record.confidenceScore,\n    recommendations: full.recommendations.map(r => ({\n      destination: r.destination,\n      region: r.region,\n      matchScore: r.matchScore,\n      estimatedBudget: r.estimatedBudget,\n      bestTimeToVisit: r.bestTimeToVisit,\n      highlights: r.highlights.slice(0, 3),\n      insiderTips: r.insiderTips.slice(0, 2)\n    })),\n    strategy: full.overallStrategy,\n    budgetTips: full.budgetOptimizationTips,\n    message: `Found ${record.destinations.length} perfect destinations for you! Check your email for full details.`\n  }\n};"},"typeVersion":2},{"id":"960e0cae-528b-4f8c-9243-3ec86ce761f7","name":"Wait Before Response","type":"n8n-nodes-base.wait","position":[3312,400],"webhookId":"wait-response","parameters":{"amount":1},"typeVersion":1.1},{"id":"b25b1fc2-024b-462d-82f0-ad8d37c6074d","name":"Send Trip Recommendations Response","type":"n8n-nodes-base.respondToWebhook","position":[3536,400],"parameters":{"options":{"responseHeaders":{"entries":[{"name":"Content-Type","value":"application/json"}]}},"respondWith":"json","responseBody":"={{ JSON.stringify($json, null, 2) }}"},"typeVersion":1},{"id":"d9950974-bd7a-4050-9dca-ffc2fa946e3a","name":"Daily Batch Recommendation Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[1136,1040],"parameters":{"rule":{"interval":[{"field":"cronExpression","expression":"0 8 * * *"}]}},"typeVersion":1.2},{"id":"45c7cf39-7c7b-4ce9-9898-20398168361f","name":"Fetch All Active Users","type":"n8n-nodes-base.googleSheets","position":[1360,1040],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":"user_profiles"},"documentId":{"__rl":true,"mode":"list","value":"YOUR_GOOGLE_SHEET_ID_HERE"}},"credentials":{"googleSheetsOAuth2Api":{"id":"credential-id","name":"Google Sheets account"}},"typeVersion":4.5},{"id":"4c53076f-53bf-4bc7-89c3-db5909f0a2fa","name":"Analyze Emerging Travel Trends","type":"n8n-nodes-base.code","position":[1632,1040],"parameters":{"jsCode":"const users = $input.all().map(i => i.json);\nconst today = new Date();\n\n// Filter users who need updated recommendations\nconst needsUpdate = users.filter(u => {\n  if (!u.lastRecommendationDate) return true;\n  const lastRec = new Date(u.lastRecommendationDate);\n  const daysSince = Math.floor((today - lastRec) / (1000 * 60 * 60 * 24));\n  return daysSince >= 7; // Weekly refresh\n});\n\n// Aggregate trending preferences\nconst trendingDestinations = {};\nconst popularStyles = {};\nconst budgetRanges = {};\n\nusers.forEach(u => {\n  if (u.recentSearches) {\n    u.recentSearches.forEach(s => {\n      trendingDestinations[s] = (trendingDestinations[s] || 0) + 1;\n    });\n  }\n  if (u.travelStyle) {\n    popularStyles[u.travelStyle] = (popularStyles[u.travelStyle] || 0) + 1;\n  }\n  if (u.typicalBudget) {\n    const range = u.typicalBudget < 2000 ? 'budget' : u.typicalBudget < 4000 ? 'moderate' : 'luxury';\n    budgetRanges[range] = (budgetRanges[range] || 0) + 1;\n  }\n});\n\nconst report = {\n  reportDate: today.toISOString(),\n  totalUsers: users.length,\n  usersNeedingUpdate: needsUpdate.length,\n  trends: {\n    topDestinations: Object.entries(trendingDestinations)\n      .sort((a, b) => b[1] - a[1])\n      .slice(0, 10)\n      .map(([dest, count]) => ({ destination: dest, searches: count })),\n    popularStyles: Object.entries(popularStyles)\n      .sort((a, b) => b[1] - a[1])\n      .map(([style, count]) => ({ style, users: count })),\n    budgetDistribution: budgetRanges\n  },\n  usersToUpdate: needsUpdate.map(u => ({\n    userId: u.userId,\n    email: u.email,\n    lastUpdate: u.lastRecommendationDate || 'never'\n  }))\n};\n\nreturn [{ json: report }];"},"typeVersion":2},{"id":"15375291-be71-4c43-b24e-1cefad3b7db5","name":"Send Weekly Trend Report","type":"n8n-nodes-base.emailSend","position":[1888,1040],"webhookId":"trend-report-email","parameters":{"options":{},"subject":"=Weekly Travel Trends Report - {{ new Date().toDateString() }}","toEmail":"user@example.com","fromEmail":"user@example.com"},"credentials":{"smtp":{"id":"credential-id","name":"SMTP account"}},"typeVersion":2.1,"continueOnFail":true},{"id":"a82bd246-24a8-46aa-8e30-b2b431ea25bf","name":"Log Analytics to Sheet","type":"n8n-nodes-base.googleSheets","position":[2192,1040],"parameters":{"columns":{"value":{},"mappingMode":"autoMapInputData"},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":"analytics"},"documentId":{"__rl":true,"mode":"list","value":"YOUR_GOOGLE_SHEET_ID_HERE"}},"credentials":{"googleSheetsOAuth2Api":{"id":"credential-id","name":"Google Sheets account"}},"typeVersion":4.5}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"bd60eea4-a0d6-4d1e-a276-7efeaab66570","connections":{"Build API Response":{"main":[[{"node":"Wait Before Response","type":"main","index":0}]]},"Wait Before Response":{"main":[[{"node":"Send Trip Recommendations Response","type":"main","index":0}]]},"Claude Sonnet 4 Model":{"ai_languageModel":[[{"node":"Claude AI Trip Recommendation Engine","type":"ai_languageModel","index":0}]]},"Fetch All Active Users":{"main":[[{"node":"Analyze Emerging Travel Trends","type":"main","index":0}]]},"Analyze Travel Patterns":{"main":[[{"node":"Claude AI Trip Recommendation Engine","type":"main","index":0}]]},"Fetch User Profile Data":{"main":[[{"node":"Analyze Travel Patterns","type":"main","index":0}]]},"Send Personalized Email":{"main":[[{"node":"Build API Response","type":"main","index":0}]]},"Parse AI Recommendations":{"main":[[{"node":"Wait for Data Enrichment","type":"main","index":0}]]},"Send Weekly Trend Report":{"main":[[{"node":"Log Analytics to Sheet","type":"main","index":0}]]},"Wait for Data Enrichment":{"main":[[{"node":"Enrich with Weather Data (Optional)","type":"main","index":0},{"node":"Store Recommendation Record","type":"main","index":0},{"node":"Send Personalized Email","type":"main","index":0}]]},"Fetch User Travel History":{"main":[[{"node":"Analyze Travel Patterns","type":"main","index":0}]]},"Store Recommendation Record":{"main":[[{"node":"Build API Response","type":"main","index":0}]]},"Analyze Emerging Travel Trends":{"main":[[{"node":"Send Weekly Trend Report","type":"main","index":0}]]},"Validate and Normalize Request":{"main":[[{"node":"Fetch User Travel History","type":"main","index":0},{"node":"Fetch User Profile Data","type":"main","index":0}]]},"Receive Trip Suggestion Request":{"main":[[{"node":"Validate and Normalize Request","type":"main","index":0}]]},"Daily Batch Recommendation Trigger":{"main":[[{"node":"Fetch All Active Users","type":"main","index":0}]]},"Enrich with Weather Data (Optional)":{"main":[[{"node":"Build API Response","type":"main","index":0}]]},"Claude AI Trip Recommendation Engine":{"main":[[{"node":"Parse AI Recommendations","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":25,"nodeTypes":{"n8n-nodes-base.code":{"count":5},"n8n-nodes-base.wait":{"count":2},"n8n-nodes-base.webhook":{"count":1},"n8n-nodes-base.emailSend":{"count":2},"n8n-nodes-base.stickyNote":{"count":5},"n8n-nodes-base.httpRequest":{"count":1},"n8n-nodes-base.googleSheets":{"count":5},"@n8n/n8n-nodes-langchain.agent":{"count":1},"n8n-nodes-base.scheduleTrigger":{"count":1},"n8n-nodes-base.respondToWebhook":{"count":1},"@n8n/n8n-nodes-langchain.lmChatAnthropic":{"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":839,"icon":"fa:clock","name":"n8n-nodes-base.scheduleTrigger","codex":{"data":{"alias":["Time","Scheduler","Polling","Cron","Interval"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\",\"schedule\"]","defaults":{"name":"Schedule Trigger","color":"#31C49F"},"iconData":{"icon":"clock","type":"icon"},"displayName":"Schedule Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1145,"icon":"file:anthropic.svg","name":"@n8n/n8n-nodes-langchain.lmChatAnthropic","codex":{"data":{"alias":["claude","sonnet","opus"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatanthropic/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"Anthropic Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NiIgaGVpZ2h0PSIzMiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzdEN0Q4NyIgZD0iTTMyLjczIDBoLTYuOTQ1TDM4LjQ1IDMyaDYuOTQ1ek0xMi42NjUgMCAwIDMyaDcuMDgybDIuNTktNi43MmgxMy4yNWwyLjU5IDYuNzJoNy4wODJMMTkuOTI5IDB6bS0uNzAyIDE5LjMzNyA0LjMzNC0xMS4yNDYgNC4zMzQgMTEuMjQ2eiIvPjwvc3ZnPg=="},"displayName":"Anthropic Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":32,"name":"Market Research"},{"id":49,"name":"AI Summarization"}],"image":[]}}