{"workflow":{"id":12949,"name":"Generate weekly AI equity research reports with Google Sheets, FMP, NewsAPI, OpenAI, and Gmail","views":114,"recentViews":0,"totalViews":114,"createdAt":"2026-01-23T14:11:35.800Z","description":"## 📘 Description\nThis workflow automatically generates professional equity research reports for selected companies using financial data, market news, and AI analysis. It is designed for analysts, founders, and finance teams who want consistent, data-backed equity insights without manual research.\nOn a weekly schedule, the workflow reads a list of companies from Google Sheets and processes only those marked as enabled. For each company, it collects five years of financial statements and recent market news, calculates key financial signals, and uses AI to generate a structured SWOT analysis, risk assessment, and growth outlook. The final report is converted into a PDF, logged for tracking, and emailed automatically.\n\n## ⚙️ What This Workflow Does (Step-by-Step)\n⏰ Weekly Scheduler\n Runs the workflow automatically at a fixed weekly time.\n📄 Load Company List from Google Sheets\n Uses Google Sheets as the control panel to decide which companies are analyzed.\n🔁 Iterate Enabled Companies\n Processes each enabled company one at a time for stable execution.\n📊 Fetch Financial Statements (FMP)\n Pulls income statement, balance sheet, and cash flow data for the last five years.\n📰 Fetch Recent Market News\n Retrieves the latest company-related news headlines.\n🧹 Normalize Financials & News\n Cleans and structures all data into a consistent format.\n📐 Compute Financial & Market Signals\n Calculates revenue growth, margins, leverage, cash flow strength, and buyback signals.\n🤖 AI SWOT Analysis\n Generates strengths, weaknesses, opportunities, and threats using only derived signals and news.\n📈 AI Risk & Growth Outlook\n Identifies key risks and provides a 12–24 month growth outlook.\n📝 Build Equity Research Report (HTML)\n Combines all insights into a clean, readable report layout.\n📄 Convert Report to PDF\n Automatically renders the HTML report into a downloadable PDF.\n📊 Log Report Metadata to Google Sheets\n Stores PDF URL, size, timestamp, and expiry for tracking.\n📧 Email Research Report\n Sends the PDF download link to stakeholders.\n\n## 🧩 Prerequisites\n• Google Sheets API access\n • Financial Modeling Prep (FMP) API key\n • NewsAPI key\n • OpenAI API access\n • Gmail OAuth2 credentials\n • HTML-to-PDF service credentials\n\n## 💡 Key Benefits\n✔ Fully automated equity research reporting\n ✔ Consistent, repeatable analysis every week\n ✔ Data-backed AI insights with no assumptions\n ✔ No manual data collection or formatting\n ✔ Clean PDF reports ready for sharing\n ✔ Centralized tracking in Google Sheets\n ✔ Scales easily to multiple companies\n\n## 👥 Perfect For\n- Equity analysts\n-  Investment research teams\n-  Startup founders\n-  Finance and strategy teams\n-  Advisory and consulting firms\n-  Anyone producing regular equity research reports","workflow":{"id":"UeiBg6dNaaXiBihb","meta":{"instanceId":"8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177","templateCredsSetupCompleted":true},"name":"Turn Financial Statements and News into Weekly AI Equity Research Reports","tags":[],"nodes":[{"id":"8ba91d18-01b8-426f-a48f-cd431ebd5ec7","name":"Weekly Equity Research Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[-96,0],"parameters":{"rule":{"interval":[{"field":"weeks","triggerAtDay":[1],"triggerAtHour":8}]}},"typeVersion":1.3},{"id":"3c5ba0e3-ee70-4a08-9022-368dc51ef413","name":"Fetch Company List","type":"n8n-nodes-base.googleSheets","position":[112,0],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":1378200588,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1Mz-woYDtXtzF2bA9IqpdYh28IPA76nFx46WHgDJOZoI/edit#gid=1378200588","cachedResultName":"companies"},"documentId":{"__rl":true,"mode":"list","value":"1Mz-woYDtXtzF2bA9IqpdYh28IPA76nFx46WHgDJOZoI","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1Mz-woYDtXtzF2bA9IqpdYh28IPA76nFx46WHgDJOZoI/edit?usp=drivesdk","cachedResultName":"NEWS IMPACT TRACKER"}},"credentials":{"googleSheetsOAuth2Api":{"id":"kpPEOLCGn963qpoh","name":"automations@techdome.ai"}},"typeVersion":4.7},{"id":"1628fc88-b809-4ac3-a5c4-eb7a8dfaca42","name":"Fetch Income Statement","type":"n8n-nodes-base.httpRequest","position":[1072,-224],"parameters":{"url":"=https://financialmodelingprep.com/stable/income-statement","options":{},"sendQuery":true,"queryParameters":{"parameters":[{"name":"period","value":"annual"},{"name":"limit","value":"5"},{"name":"apikey","value":"your_api_key"},{"name":"symbol","value":"={{ $json.ticker }}"}]}},"typeVersion":4.3},{"id":"4a3bd331-1c82-47f4-aa48-e2a44e37e8bd","name":"Fetch Balance Sheet","type":"n8n-nodes-base.httpRequest","position":[1056,-16],"parameters":{"url":"=https://financialmodelingprep.com/stable/balance-sheet-statement","options":{},"sendQuery":true,"queryParameters":{"parameters":[{"name":"period","value":"annual"},{"name":"limit","value":"5"},{"name":"apikey","value":"your_api_key"},{"name":"symbol","value":"={{ $json.ticker }}"}]}},"typeVersion":4.3},{"id":"cc3dd95e-cec9-4326-99ee-e118f6efe1ae","name":"Fetch Cash Flow","type":"n8n-nodes-base.httpRequest","position":[1040,208],"parameters":{"url":"=https://financialmodelingprep.com/stable/cash-flow-statement","options":{},"sendQuery":true,"queryParameters":{"parameters":[{"name":"period","value":"annual"},{"name":"limit","value":"5"},{"name":"apikey","value":"your_api_key"},{"name":"symbol","value":"={{ $json.ticker }}"}]}},"typeVersion":4.3},{"id":"8713c97c-84e1-4fa1-ae93-8e2f674a0649","name":"Fetch Market Data","type":"n8n-nodes-base.httpRequest","position":[1040,448],"parameters":{"url":"https://newsapi.org/v2/everything","options":{},"sendQuery":true,"queryParameters":{"parameters":[{"name":"q","value":"={{ $json.ticker }}"},{"name":"language","value":"=en"},{"name":"sortBy","value":"publishedAt"},{"name":"pageSize","value":"10"},{"name":"apiKey","value":"your_newsapi_key"}]}},"typeVersion":4.3},{"id":"d7ebfa69-69d7-4543-93c4-8132a34b555f","name":"Parse Risks and Growth Output","type":"n8n-nodes-base.code","position":[2672,224],"parameters":{"jsCode":"let raw = $json.output;\nlet parsed = {};\n\ntry {\n  parsed = JSON.parse(raw);\n} catch (e) {\n  parsed = {\n    risks: [],\n    growth_outlook: \"\"\n  };\n}\n\nreturn [\n  {\n    json: parsed\n  }\n];\n"},"typeVersion":2},{"id":"d9606f85-e284-4a04-896e-e1877d778854","name":"Build Equity Research Report","type":"n8n-nodes-base.code","position":[3248,96],"parameters":{"jsCode":"const {\n  strengths = [],\n  weaknesses = [],\n  opportunities = [],\n  threats = [],\n  risks = [],\n  growth_outlook = \"\"\n} = $json;\n\n// Helper to render bullet lists\nconst renderList = (items) =>\n  items.map(item => `<li>${item}</li>`).join(\"\");\n\n// Build HTML report\nconst html = `\n<!DOCTYPE html>\n<html>\n<head>\n  <meta charset=\"UTF-8\" />\n  <style>\n    body {\n      font-family: Arial, sans-serif;\n      line-height: 1.6;\n      color: #222;\n      padding: 24px;\n    }\n    h1 {\n      color: #0b5ed7;\n      border-bottom: 2px solid #eee;\n      padding-bottom: 8px;\n    }\n    h2 {\n      color: #333;\n      margin-top: 24px;\n    }\n    ul {\n      margin-left: 20px;\n    }\n    li {\n      margin-bottom: 6px;\n    }\n    .section {\n      margin-bottom: 24px;\n    }\n  </style>\n</head>\n<body>\n\n<h1>AI-Generated Equity Research Report</h1>\n\n<div class=\"company\">\n<h2> Symbol : </h2><span>${ $('Iterate Companies').item.json.ticker }</span>\n</div>\n\n<div class=\"section\">\n  <h2>Strengths</h2>\n  <ul>${renderList(strengths)}</ul>\n</div>\n\n<div class=\"section\">\n  <h2>Weaknesses</h2>\n  <ul>${renderList(weaknesses)}</ul>\n</div>\n\n<div class=\"section\">\n  <h2>Opportunities</h2>\n  <ul>${renderList(opportunities)}</ul>\n</div>\n\n<div class=\"section\">\n  <h2>Threats</h2>\n  <ul>${renderList(threats)}</ul>\n</div>\n\n<div class=\"section\">\n  <h2>Key Risks</h2>\n  <ul>${renderList(risks)}</ul>\n</div>\n\n<div class=\"section\">\n  <h2>Growth Outlook (12–24 Months)</h2>\n  <p>${growth_outlook}</p>\n</div>\n\n</body>\n</html>\n`;\n\nreturn [\n  {\n    json: {\n      report_html: html\n    }\n  }\n];\n"},"typeVersion":2},{"id":"8fe6ee7c-1af0-44d5-9c9d-c1d166a7149c","name":"Filter Enabled Companies","type":"n8n-nodes-base.if","position":[320,0],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"8c7418be-b1e2-41bc-8850-f3b25b9665db","operator":{"type":"boolean","operation":"true","singleValue":true},"leftValue":"={{ $json.enabled }}","rightValue":""}]}},"typeVersion":2.3},{"id":"7c0d21eb-d7d3-4627-984a-34298c5a1d22","name":"Iterate Companies","type":"n8n-nodes-base.splitInBatches","position":[576,-16],"parameters":{"options":{}},"typeVersion":3},{"id":"c336316a-32f2-4dce-ac59-3bbe7543aabf","name":"Normalize Income Statement Data","type":"n8n-nodes-base.code","position":[1280,-224],"parameters":{"jsCode":"const items = $input.all();\n\nconst normalized = items.slice(0, 5).map(item => {\n  const s = item.json;\n  return {\n    fiscal_year: s.fiscalYear,\n    revenue: s.revenue,\n    gross_profit: s.grossProfit,\n    operating_income: s.operatingIncome,\n    ebitda: s.ebitda,\n    net_income: s.netIncome,\n    eps_diluted: s.epsDiluted\n  };\n});\n\nreturn [\n  {\n    json: {\n      income_statement: normalized\n    }\n  }\n];\n"},"typeVersion":2},{"id":"96fd276d-882f-4977-be51-7f5bfc72d4e7","name":"Normalize Balance Sheet Data","type":"n8n-nodes-base.code","position":[1296,-16],"parameters":{"jsCode":"const items = $input.all();\n\nconst normalized = items.slice(0, 5).map(item => {\n  const s = item.json;\n  return {\n    fiscal_year: s.fiscalYear,\n    assets: {\n      cash_and_equivalents: s.cashAndCashEquivalents,\n      total_current_assets: s.totalCurrentAssets,\n      total_assets: s.totalAssets\n    },\n    liabilities: {\n      total_current_liabilities: s.totalCurrentLiabilities,\n      short_term_debt: s.shortTermDebt,\n      long_term_debt: s.longTermDebt,\n      total_liabilities: s.totalLiabilities\n    },\n    debt: {\n      total_debt: s.totalDebt,\n      net_debt: s.netDebt\n    },\n    equity: {\n      total_equity: s.totalEquity\n    }\n  };\n});\n\nreturn [\n  {\n    json: {\n      balance_sheet: normalized\n    }\n  }\n];\n"},"typeVersion":2},{"id":"7473b880-a93d-4fcd-a41c-b3ce0d52d113","name":"Normalize Cash Flow Data","type":"n8n-nodes-base.code","position":[1280,208],"parameters":{"jsCode":"const items = $input.all();\n\nconst normalized = items.slice(0, 5).map(item => {\n  const s = item.json;\n  return {\n    fiscal_year: s.fiscalYear,\n    cash_generation: {\n      operating_cash_flow: s.operatingCashFlow,\n      free_cash_flow: s.freeCashFlow,\n      capital_expenditure: s.capitalExpenditure\n    },\n    earnings_to_cash: {\n      net_income: s.netIncome,\n      depreciation_and_amortization: s.depreciationAndAmortization,\n      change_in_working_capital: s.changeInWorkingCapital\n    },\n    capital_allocation: {\n      dividends_paid: s.netDividendsPaid,\n      stock_repurchased: s.commonStockRepurchased,\n      net_debt_issuance: s.netDebtIssuance\n    }\n  };\n});\n\nreturn [\n  {\n    json: {\n      cash_flow: normalized\n    }\n  }\n];\n"},"typeVersion":2},{"id":"5c365c91-e0c8-4268-bb17-edbcc6d98640","name":"Normalize Market News Data","type":"n8n-nodes-base.code","position":[1280,448],"parameters":{"jsCode":"// NewsAPI response structure: { status, totalResults, articles }\nconst articles = $json.articles || [];\n\n// Normalize and limit articles\nconst normalized = articles.slice(0, 5).map(a => ({\n  title: a.title,\n  summary: a.description,\n  source: a.source?.name || null,\n  published_at: a.publishedAt,\n  url: a.url\n}));\n\nreturn {\n  news: normalized\n};\n"},"typeVersion":2},{"id":"1b2300e2-164a-41ed-8702-b6746d4e2ad5","name":"Merge Financials and News","type":"n8n-nodes-base.merge","position":[1808,64],"parameters":{"mode":"combine","options":{},"combineBy":"combineByPosition","numberInputs":4},"typeVersion":3.2},{"id":"ef44be38-7acb-4e8b-a3a9-2b8bb5350ff4","name":"Compute Financial and Market Signals","type":"n8n-nodes-base.code","position":[2016,96],"parameters":{"jsCode":"const data = $json;\n\nconst income = data.income_statement;\nconst balance = data.balance_sheet;\nconst cash = data.cash_flow;\n\n// Latest vs oldest for trends\nconst latestIncome = income[0];\nconst oldestIncome = income[income.length - 1];\n\nconst revenueGrowth =\n  (latestIncome.revenue - oldestIncome.revenue) / oldestIncome.revenue;\n\nconst margin =\n  latestIncome.operating_income / latestIncome.revenue;\n\nconst latestBalance = balance[0];\nconst debtToEquity =\n  latestBalance.debt.total_debt / latestBalance.equity.total_equity;\n\nconst latestCash = cash[0];\nconst fcfMargin =\n  latestCash.cash_generation.free_cash_flow / latestIncome.revenue;\n\nreturn {\n  swot_signals: {\n    revenue_growth_5y: revenueGrowth,\n    operating_margin: margin,\n    debt_to_equity: debtToEquity,\n    fcf_margin: fcfMargin,\n    stock_buybacks: latestCash.capital_allocation.stock_repurchased,\n    news : data.news,\n    news_count: data.news.length\n  },\n  original_data: data\n};\n"},"typeVersion":2},{"id":"ed0d6bf4-3b0e-4efc-ac24-b3db27bd118f","name":"LLM – SWOT Analysis Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[2304,48],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"5Kzt6hGSZ1JHZqWN","name":"OpenAi account 2"}},"typeVersion":1.3},{"id":"e6bc944b-fbc4-4cc8-8997-53bbc8cf0086","name":"Generate SWOT Analysis","type":"@n8n/n8n-nodes-langchain.agent","position":[2304,-128],"parameters":{"text":"=You are an equity research analyst.\n\nInput :  {{ $json.toJsonString() }}\n\nInput contains:\n- Quantitative SWOT signals\n- Clean financial statements\n- Recent news headlines\n\nRules:\n- Use the signals to determine SWOT categories\n- Do NOT invent data\n- Base each point on either:\n  (a) a numeric signal\n  (b) a news item\n- Be concise and factual\n\nReturn ONLY valid JSON in this format:\n\n{\n  \"strengths\": [],\n  \"weaknesses\": [],\n  \"opportunities\": [],\n  \"threats\": []\n}\n","options":{},"promptType":"define"},"typeVersion":3},{"id":"f17c2007-0500-4b81-ad6e-28ce901ccb14","name":"Parse SWOT Output","type":"n8n-nodes-base.code","position":[2672,-128],"parameters":{"jsCode":"let raw = $json.output;\nlet parsed = {};\n\ntry {\n  parsed = JSON.parse(raw);\n} catch (e) {\n  parsed = {\n    strengths: [],\n    weaknesses: [],\n    opportunities: [],\n    threats: []\n  };\n}\n\nreturn [\n  {\n    json: parsed\n  }\n];\n"},"typeVersion":2},{"id":"afe5d9bd-8a0f-412c-996a-b9b8ada81223","name":"LLM – Risk and Growth Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[2320,400],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"5Kzt6hGSZ1JHZqWN","name":"OpenAi account 2"}},"typeVersion":1.3},{"id":"0b183d35-b6ad-4dc4-8ad5-b936f716c1da","name":"Generate Risks and Growth Outlook","type":"@n8n/n8n-nodes-langchain.agent","position":[2320,224],"parameters":{"text":"=You are an equity research analyst.\n\nSwot signals : {{ $json.swot_signals.toJsonString() }}\n\noriginal_data : {{ $json.original_data.toJsonString() }}\n\nInput contains:\n- Calculated financial signals under \"swot_signals\"\n- Full normalized financial and news data under \"original_data\"\n\nTasks:\n1. Identify key business and financial risks\n2. Provide a 12–24 month growth outlook\n\nRules:\n- Base analysis on the provided data only\n- Use signals where applicable (leverage, margins, cash flow)\n- Do not invent facts\n\nReturn ONLY valid JSON in this format:\n\n{\n  \"risks\": [],\n  \"growth_outlook\": \"\"\n}\n","options":{},"promptType":"define"},"typeVersion":3},{"id":"06fd7960-2806-4c4f-b595-f52fa79977d8","name":"Merge All AI Insights","type":"n8n-nodes-base.merge","position":[2992,96],"parameters":{"mode":"combine","options":{},"combineBy":"combineByPosition"},"typeVersion":3.2},{"id":"44902b8c-483f-44fd-83ac-a9ee67b7e0f7","name":"Render Research Report to PDF","type":"n8n-nodes-htmlcsstopdf.htmlcsstopdf","position":[3520,96],"parameters":{"html_content":"={{ $json.report_html }}"},"credentials":{"htmlcsstopdfApi":{"id":"OOyWJKQACYIfdD8y","name":"HTML to PDF account"}},"typeVersion":1},{"id":"c3f4e60c-9786-4153-9c41-c8519dab017b","name":"Validate PDF Generation","type":"n8n-nodes-base.if","position":[3728,96],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"8e7309e6-ef35-4ff5-abde-a1ee86f100aa","operator":{"type":"boolean","operation":"true","singleValue":true},"leftValue":"={{ $json.success }}","rightValue":true}]}},"typeVersion":2.3},{"id":"110a466a-abd8-4b4e-a69b-1b9c651effc8","name":"Log Report Metadata","type":"n8n-nodes-base.googleSheets","position":[4096,-48],"parameters":{"columns":{"value":{"Company":"={{ $('Iterate Companies').item.json.ticker }}","PDF URL":"={{$json.pdf_url}}","Timestamp":"={{$now}}","Expiry Date":"={{$json.file_deletion_date}}","Report Type":"AI Equity Research","File Size (KB)":"={{ Math.round($json.file_size_bytes / 1024) }}"},"schema":[{"id":"Timestamp","type":"string","display":true,"removed":false,"required":false,"displayName":"Timestamp","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Company","type":"string","display":true,"removed":false,"required":false,"displayName":"Company","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Report Type","type":"string","display":true,"removed":false,"required":false,"displayName":"Report Type","defaultMatch":false,"canBeUsedToMatch":true},{"id":"File Size (KB)","type":"string","display":true,"removed":false,"required":false,"displayName":"File Size (KB)","defaultMatch":false,"canBeUsedToMatch":true},{"id":"PDF URL","type":"string","display":true,"removed":false,"required":false,"displayName":"PDF URL","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Expiry Date","type":"string","display":true,"removed":false,"required":false,"displayName":"Expiry Date","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":1571135394,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1Mz-woYDtXtzF2bA9IqpdYh28IPA76nFx46WHgDJOZoI/edit#gid=1571135394","cachedResultName":"AI Equity Research Report"},"documentId":{"__rl":true,"mode":"list","value":"1Mz-woYDtXtzF2bA9IqpdYh28IPA76nFx46WHgDJOZoI","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1Mz-woYDtXtzF2bA9IqpdYh28IPA76nFx46WHgDJOZoI/edit?usp=drivesdk","cachedResultName":"NEWS IMPACT TRACKER"}},"credentials":{"googleSheetsOAuth2Api":{"id":"kpPEOLCGn963qpoh","name":"automations@techdome.ai"}},"typeVersion":4.7},{"id":"e90a99b4-3609-4d8d-8a69-186d1b011adb","name":"Send Email Equity Research Report","type":"n8n-nodes-base.gmail","position":[4080,224],"webhookId":"33597b65-16e8-4a55-9bd6-a9c49a98dac8","parameters":{"sendTo":"your_email_id","message":"=<p>Hello,</p>  <p>Your <strong>AI-generated Equity Research Report</strong> has been successfully generated.</p>  <p> <strong>Download PDF:</strong><br/> <a href=\"{{ $json.pdf_url }}\" target=\"_blank\"> View / Download Report </a> </p>  <p> <strong>File size:</strong> {{ Math.round($json.file_size_bytes / 1024) }} KB<br/> <strong>Link valid until:</strong> {{ $json.file_deletion_date }} </p>  <p> Regards,<br/> AI Equity Research Automation </p>","options":{"appendAttribution":false},"subject":"AI Equity Research Report – Ready for Review"},"credentials":{"gmailOAuth2":{"id":"gEIaWCTvGfYjMSb3","name":"Gmail credentials"}},"typeVersion":2.2},{"id":"a295329e-3444-43d4-8e71-9d640d2724e1","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-160,-1072],"parameters":{"width":512,"height":752,"content":"## Workflow Overview \n\n### How it works\n\nThis workflow automatically creates a professional equity research report for selected companies on a weekly basis. It begins by reading a list of companies from Google Sheets and checks which ones are enabled for analysis. Only enabled companies are processed, making it easy to control coverage without changing the workflow.\n\nFor each company, the workflow collects five years of financial data, including income statement, balance sheet, and cash flow information, from Financial Modeling Prep. At the same time, it pulls recent market-related news using NewsAPI. All raw data is cleaned and normalized so it follows a consistent and easy-to-analyze structure.\n\nOnce the data is prepared, key financial signals such as revenue growth, operating margins, free cash flow strength, and leverage ratios are calculated. These signals, along with recent news, are passed to AI models that generate a structured SWOT analysis, identify major risks, and provide a 12–24 month growth outlook. The AI is strictly guided to base its output only on the provided data.\n\nThe generated insights are compiled into a clean HTML equity research report, which is then converted into a PDF. If the PDF is created successfully, the workflow logs the report details in Google Sheets and sends an email containing the PDF download link.\n\n### Setup steps:\n\nAdd company tickers and an enabled column in Google Sheets\n\nConfigure Financial Modeling Prep, NewsAPI, and OpenAI API keys\n\nConnect Google Sheets and Gmail credentials"},"typeVersion":1},{"id":"2c6bb56b-b7c6-4586-9361-553bed73afdd","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-160,-176],"parameters":{"color":7,"width":896,"height":416,"content":"### Company Selection and Looping\n\nThese nodes load companies from Google Sheets, filters only enabled entries, and loops through each company one at a time. It ensures controlled execution and allows users to manage company coverage directly from the sheet."},"typeVersion":1},{"id":"57eaaf05-32fc-453e-90fb-2f041e9b482f","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[880,-400],"parameters":{"color":7,"width":816,"height":1024,"content":"### Financial and News Data Collection\n\nThese nodes fetch financial statements and recent market news from external APIs. Keeping data collection separate helps maintain clarity, simplifies troubleshooting, and ensures reliable inputs for later normalization and analysis steps."},"typeVersion":1},{"id":"b3e5364a-f0db-4b26-a0d4-0b1e3dc7041e","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[1728,-400],"parameters":{"color":7,"width":1408,"height":1024,"content":"### AI Analysis and Signal Generation\n\nThis group calculates financial signals and uses AI to generate SWOT insights, risks, and growth outlook. The AI relies only on computed metrics and recent news, avoiding assumptions or unsupported conclusions."},"typeVersion":1},{"id":"47343c7f-5a6b-47fb-bdae-0dfaf6844ad6","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[3200,-160],"parameters":{"color":7,"width":1200,"height":560,"content":"### Report Generation and Delivery \n\nThese nodes assemble the final report, convert it into a PDF, log key details in Google Sheets, and send the report link by email once generation is confirmed successful."},"typeVersion":1}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"cf197bd4-d253-4ffc-a8f7-827eed52ab7c","connections":{"Fetch Cash Flow":{"main":[[{"node":"Normalize Cash Flow Data","type":"main","index":0}]]},"Fetch Market Data":{"main":[[{"node":"Normalize Market News Data","type":"main","index":0}]]},"Iterate Companies":{"main":[[],[{"node":"Fetch Income Statement","type":"main","index":0},{"node":"Fetch Balance Sheet","type":"main","index":0},{"node":"Fetch Cash Flow","type":"main","index":0},{"node":"Fetch Market Data","type":"main","index":0}]]},"Parse SWOT Output":{"main":[[{"node":"Merge All AI Insights","type":"main","index":0}]]},"Fetch Company List":{"main":[[{"node":"Filter Enabled Companies","type":"main","index":0}]]},"Fetch Balance Sheet":{"main":[[{"node":"Normalize Balance Sheet Data","type":"main","index":0}]]},"Merge All AI Insights":{"main":[[{"node":"Build Equity Research Report","type":"main","index":0}]]},"Fetch Income Statement":{"main":[[{"node":"Normalize Income Statement Data","type":"main","index":0}]]},"Generate SWOT Analysis":{"main":[[{"node":"Parse SWOT Output","type":"main","index":0}]]},"Validate PDF Generation":{"main":[[{"node":"Log Report Metadata","type":"main","index":0},{"node":"Send Email Equity Research Report","type":"main","index":0}]]},"Filter Enabled Companies":{"main":[[{"node":"Iterate Companies","type":"main","index":0}]]},"Normalize Cash Flow Data":{"main":[[{"node":"Merge Financials and News","type":"main","index":2}]]},"Merge Financials and News":{"main":[[{"node":"Compute Financial and Market Signals","type":"main","index":0}]]},"Normalize Market News Data":{"main":[[{"node":"Merge Financials and News","type":"main","index":3}]]},"LLM – SWOT Analysis Model":{"ai_languageModel":[[{"node":"Generate SWOT Analysis","type":"ai_languageModel","index":0}]]},"Build Equity Research Report":{"main":[[{"node":"Render Research Report to PDF","type":"main","index":0}]]},"Normalize Balance Sheet Data":{"main":[[{"node":"Merge Financials and News","type":"main","index":1}]]},"LLM – Risk and Growth Model":{"ai_languageModel":[[{"node":"Generate Risks and Growth Outlook","type":"ai_languageModel","index":0}]]},"Parse Risks and Growth Output":{"main":[[{"node":"Merge All AI Insights","type":"main","index":1}]]},"Render Research Report to PDF":{"main":[[{"node":"Validate PDF Generation","type":"main","index":0}]]},"Weekly Equity Research Trigger":{"main":[[{"node":"Fetch Company List","type":"main","index":0}]]},"Normalize Income Statement Data":{"main":[[{"node":"Merge Financials and News","type":"main","index":0}]]},"Generate Risks and Growth Outlook":{"main":[[{"node":"Parse Risks and Growth Output","type":"main","index":0}]]},"Send Email Equity Research Report":{"main":[[{"node":"Iterate Companies","type":"main","index":0}]]},"Compute Financial and Market Signals":{"main":[[{"node":"Generate SWOT Analysis","type":"main","index":0},{"node":"Generate Risks and Growth Outlook","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":31,"nodeTypes":{"n8n-nodes-base.if":{"count":2},"n8n-nodes-base.code":{"count":8},"n8n-nodes-base.gmail":{"count":1},"n8n-nodes-base.merge":{"count":2},"n8n-nodes-base.stickyNote":{"count":5},"n8n-nodes-base.httpRequest":{"count":4},"n8n-nodes-base.googleSheets":{"count":2},"n8n-nodes-base.splitInBatches":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":2},"n8n-nodes-base.scheduleTrigger":{"count":1},"n8n-nodes-htmlcsstopdf.htmlcsstopdf":{"count":1},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":2}}},"status":"published","readyToDemo":null,"user":{"name":"Rahul Joshi","username":"rahul08","bio":"Rahul Joshi is a seasoned technology leader specializing in the n8n automation tool and AI-driven workflow automation. With deep expertise in building open-source workflow automation and self-hosted automation platforms, he helps organizations eliminate manual processes through intelligent n8n ai agent automation solutions.\n\n","verified":true,"links":["https://www.linkedin.com/in/callrahul/"],"avatar":"https://gravatar.com/avatar/b6cf57822463143589b36ada06fbf6cb1509223a740fae3160b28f1ce41ccc12?r=pg&d=retro&size=200"},"nodes":[{"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":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":24,"icon":"file:merge.svg","name":"n8n-nodes-base.merge","codex":{"data":{"alias":["Join","Concatenate","Wait"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-sync-data-between-two-systems/","icon":"🏬","label":"How to synchronize data between two systems (one-way vs. two-way sync"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.merge/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Merge"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTc3XzUxOCkiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNDhDMCAyMS40OTAzIDIxLjQ5MDMgMCA0OCAwSDExMkMxMzguNTEgMCAxNjAgMjEuNDkwMyAxNjAgNDhWNTZIMTk2LjI1MkMyNDAuNDM1IDU2IDI3Ni4yNTIgOTEuODE3MiAyNzYuMjUyIDEzNlYxOTJDMjc2LjI1MiAyMTQuMDkxIDI5NC4xNjEgMjMyIDMxNi4yNTIgMjMySDM1MlYyMjRDMzUyIDE5Ny40OSAzNzMuNDkgMTc2IDQwMCAxNzZINDY0QzQ5MC41MSAxNzYgNTEyIDE5Ny40OSA1MTIgMjI0VjI4OEM1MTIgMzE0LjUxIDQ5MC41MSAzMzYgNDY0IDMzNkg0MDBDMzczLjQ5IDMzNiAzNTIgMzE0LjUxIDM1MiAyODhWMjgwSDMxNi4yNTJDMjk0LjE2MSAyODAgMjc2LjI1MiAyOTcuOTA5IDI3Ni4yNTIgMzIwVjM3NkMyNzYuMjUyIDQyMC4xODMgMjQwLjQzNSA0NTYgMTk2LjI1MiA0NTZIMTYwVjQ2NEMxNjAgNDkwLjUxIDEzOC41MSA1MTIgMTEyIDUxMkg0OEMyMS40OTAzIDUxMiAwIDQ5MC41MSAwIDQ2NFY0MDBDMCAzNzMuNDkgMjEuNDkwMyAzNTIgNDggMzUySDExMkMxMzguNTEgMzUyIDE2MCAzNzMuNDkgMTYwIDQwMFY0MDhIMTk2LjI1MkMyMTMuOTI1IDQwOCAyMjguMjUyIDM5My42NzMgMjI4LjI1MiAzNzZWMzIwQzIyOC4yNTIgMjk0Ljc4NCAyMzguODU5IDI3Mi4wNDQgMjU1Ljg1MyAyNTZDMjM4Ljg1OSAyMzkuOTU2IDIyOC4yNTIgMjE3LjIxNiAyMjguMjUyIDE5MlYxMzZDMjI4LjI1MiAxMTguMzI3IDIxMy45MjUgMTA0IDE5Ni4yNTIgMTA0SDE2MFYxMTJDMTYwIDEzOC41MSAxMzguNTEgMTYwIDExMiAxNjBINDhDMjEuNDkwMyAxNjAgMCAxMzguNTEgMCAxMTJWNDhaTTEwNCA0OEMxMDguNDE4IDQ4IDExMiA1MS41ODE3IDExMiA1NlYxMDRDMTEyIDEwOC40MTggMTA4LjQxOCAxMTIgMTA0IDExMkg1NkM1MS41ODE3IDExMiA0OCAxMDguNDE4IDQ4IDEwNFY1NkM0OCA1MS41ODE3IDUxLjU4MTcgNDggNTYgNDhIMTA0Wk00NTYgMjI0QzQ2MC40MTggMjI0IDQ2NCAyMjcuNTgyIDQ2NCAyMzJWMjgwQzQ2NCAyODQuNDE4IDQ2MC40MTggMjg4IDQ1NiAyODhINDA4QzQwMy41ODIgMjg4IDQwMCAyODQuNDE4IDQwMCAyODBWMjMyQzQwMCAyMjcuNTgyIDQwMy41ODIgMjI0IDQwOCAyMjRINDU2Wk0xMTIgNDA4QzExMiA0MDMuNTgyIDEwOC40MTggNDAwIDEwNCA0MDBINTZDNTEuNTgxNyA0MDAgNDggNDAzLjU4MiA0OCA0MDhWNDU2QzQ4IDQ2MC40MTggNTEuNTgxNyA0NjQgNTYgNDY0SDEwNEMxMDguNDE4IDQ2NCAxMTIgNDYwLjQxOCAxMTIgNDU2VjQwOFoiIGZpbGw9IiM1NEI4QzkiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTc3XzUxOCI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Merge","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":39,"icon":"fa:sync","name":"n8n-nodes-base.splitInBatches","codex":{"data":{"alias":["Loop","Concatenate","Batch","Split","Split In Batches"],"resources":{"generic":[{"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/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"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Loop Over Items","color":"#007755"},"iconData":{"icon":"sync","type":"icon"},"displayName":"Loop Over Items (Split in Batches)","typeVersion":3,"nodeCategories":[{"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":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":1153,"icon":"file:openAiLight.svg","name":"@n8n/n8n-nodes-langchain.lmChatOpenAi","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="},"displayName":"OpenAI Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":32,"name":"Market Research"},{"id":49,"name":"AI Summarization"}],"image":[]}}