{"workflow":{"id":14808,"name":"Compare gold and equity performance with Google Sheets, Groq, QuickChart and Gmail","views":206,"recentViews":41,"totalViews":206,"createdAt":"2026-04-06T14:50:42.937Z","description":"# Gold vs Equity Performance Comparison Tracker with Visual Insights\n\nThis automated n8n workflow evaluates the historical performance of gold against equity markets. It extracts daily price data from Google Sheets, calculates comparative returns and uses an AI agent to generate actionable investment insights. Finally, it creates a visual performance chart and emails a smartly formatted HTML report—triggering a high-priority alert if the performance gap exceeds a defined threshold.\n\n\n### Quick Implementation Steps\n\n1. **Import the Workflow:** Upload the downloaded JSON file into your n8n workspace.\n2. **Connect Credentials:** Authenticate your Google Sheets, Gmail and Groq API accounts in their respective nodes.\n3. **Map Your Data:** Select your specific Google Sheet documents for both the Gold and Equity data fetching nodes.\n4. **Set Your Parameters:** Open the `Set Analysis Parameters` node to define your target date range and performance gap threshold.\n5. **Execute:** Click \"Test Workflow\" to generate and receive your first automated financial comparison report.\n\n\n## What It Does\n\nThis workflow acts as an automated financial analyst. It begins by pulling day-by-day pricing for two distinct assets—Gold and Equity—from standard Google Sheets. A custom script then merges this data, ensuring dates match up perfectly while filtering out any information outside of your target date window. Once the data is aligned, the workflow calculates the percentage returns for both assets and determines the exact performance difference.\n\nInstead of just presenting raw numbers, the workflow passes these calculated metrics to an advanced AI Agent powered by Llama-3. The AI is prompted to step into the role of an investment advisor, evaluating the numbers to declare a \"winner,\" providing realistic market context and suggesting a strategic portfolio allocation (e.g., 60% Equity / 40% Gold) based strictly on the provided data. \n\nTo wrap it all up, the system generates a dynamic line chart URL using QuickChart.io. It packages the chart, the raw numbers and the AI's written insights into a clean HTML email. If one asset drastically outperforms the other (based on a threshold you set), the system routes the email as a special \"ALERT\". Finally, it logs a summary of the report back into a fresh Google Sheet for long-term record keeping.\n\n\n## Who’s It For\n\nThis workflow is perfect for \n- financial analysts, \n- portfolio managers, \n- wealth advisors, \n- and self-directed investors \n\nwho want to automate their market tracking. It is highly beneficial for teams that need consistent, data-backed comparative reporting without the manual labor of crunching spreadsheet numbers and drafting summaries every week.\n\n\n## Requirements to Use This Workflow\n\n* An active **n8n instance** (compatible with self-hosted version 2.1.5 or newer).\n* A **Google Workspace account** to authenticate both Google Sheets and Gmail nodes.\n* A **Groq API account** to power the Llama-3 language model for AI insights.\n* A **Google Sheet** populated with daily historical prices for Gold and Equity.\n\n\n## How It Works & Set Up\n\n**1. Define Your Analysis Scope**\n\nStart at the `Set Analysis Parameters` node. Here, you will define the `startDate`, `endDate` and the `threshold` percentage. This threshold is the performance gap required to trigger an urgent alert rather than a standard report.\n\n**2. Ingest the Market Data**\n\nThe workflow branches into two Google Sheets nodes (`Fetch Gold Prices` and `Fetch Equity Prices`). You will need to select your Google account credentials and point these nodes to the specific worksheets containing your date and price columns.\n\n**3. Merge and Calculate**\n\nThe `Merge Market Data` node uses JavaScript to combine both data streams into a single timeline. The subsequent `Calculate Performance Metrics` node does the math, calculating the total percentage return for both assets over your chosen timeframe.\n\n**4. Generate AI Insights**\n\nThe `Generate AI Investment Insights` Langchain agent takes the calculated returns and sends them to the Groq language model. Make sure your Groq credentials are active in the attached `Insights` model node. The AI outputs a structured JSON response containing the market summary and allocation advice.\n\n**5. Charting and Delivery**\n\nWhile the AI processes text, the `Generate Chart` node transforms the price arrays into a QuickChart visual. Everything is combined in the `Generate Final Report` node, which builds the HTML structure. Finally, the `Check Performance Gap` node decides whether to trigger the `Send Report Email` or the `Send Alert Email`.\n\n\n## How To Customize Nodes\n\n* **Set Analysis Parameters:** \n\nUpdate this node before every manual run to target different weeks, months or quarters.\n\n* **Generate AI Investment Insights:** \n\nOpen the system prompt options in this node to change the AI's \"personality.\" You can ask it to be more conservative, aggressive or to focus strictly on macroeconomic trends.\n\n* **Generate Chart:** \n\nOpen the JavaScript code in this node to customize the aesthetics. You can change line colors, adjust the line tension or switch the chart type from `\"line\"` to `\"bar\"`.\n\n* **Email Nodes:** \n\nCustomize the HTML body or change the target email addresses. You can add CCs or BCCs for broader team distribution.\n\n\n## Add‑ons\n\n* **Slack / Discord Integration:** \n\nSwap the Gmail nodes for messaging app nodes to drop these reports directly into a company finance channel.\n\n* **Live Data APIs:** \n\nReplace the Google Sheets fetch nodes with direct HTTP requests to Yahoo Finance or Alpha Vantage to pull real-time market data on the fly.\n\n* **PDF Generation:** \n\nAdd a tool to convert the generated HTML payload into a polished PDF document, making it easier to attach to client emails.\n\n\n## Use Case Examples\n\n1.  **Weekly Wealth Management Reporting:** \n\nAutomatically send weekly asset comparison summaries to high-net-worth clients to keep them informed on their portfolio balances.\n\n2.  **Automated Wealth Plan Generator:** \n\nFeed the AI's allocation advice from this workflow directly into a broader wealth-planning system to calculate user eligibility and adjust debt-to-equity ratios.\n\n3.  **Market Volatility Alerts:** \n\nRun this workflow daily on a schedule. If safe-haven assets (Gold) suddenly spike in comparison to risk assets (Equity), your team receives an immediate warning to adjust trading strategies.\n\n4.  **Crypto vs. Traditional Markets:** \n\nRepurpose the workflow by simply changing the input sheets to compare Bitcoin performance against traditional S&P 500 index funds.\n\n5.  **Real Estate vs. Stocks:** \n\nAdjust the data sources to compare local housing market indices against stock market growth over a multi-year period.\n\n\n## Troubleshooting Guide\n\n| Issue | Possible Cause | Solution |\n| :--- | :--- | :--- |\n| **Workflow fails at \"Fetch Prices\" nodes** | Google Sheets credentials expired or Sheet ID is incorrect. | Re-authenticate your Google OAuth2 credentials and ensure you have selected the correct document and sheet tab from the node dropdowns. |\n| **\"Invalid JSON from AI\" error** | The Groq LLM returned conversational text (like \"Here is your data:\") instead of raw JSON. | Open the `Generate AI Investment Insights` node and ensure the system prompt strictly demands \"Output ONLY valid JSON.\" You may also need to adjust the temperature setting on the Llama model. |\n| **Chart image is broken in email** | The data arrays are empty or the QuickChart URL exceeded character limits. | Verify that the `Merge Market Data` node successfully matched dates for both assets. If comparing years of data, consider calculating weekly averages instead of daily to shorten the URL string. |\n| **No emails are being received** | Gmail node misconfigured or blocked by Google security. | Check the Gmail credential connection. Ensure the recipient email address is valid and check your spam folder. |\n| **Google Sheets history not updating** | The `Store Report History` node is mapping to the wrong column headers. | Ensure your destination Google Sheet has exact column headers for \"Date\", \"Winner\", \"Summary\" and \"Report\" as defined in the node's schema. |\n\n\n## Need Help?\n\nRunning into hurdles getting this workflow perfectly tuned for your specific financial datasets? Whether you need help configuring the Groq AI prompts, adjusting the custom JavaScript parsing logic or building out more advanced add-ons like dynamic API integrations, our [n8n automation team](https://www.weblineindia.com/hire-n8n-developers/) at WeblineIndia is here to assist. \n\nFeel free to reach out and [contact **WeblineIndia**](https://www.weblineindia.com/contact-us.html) for expert n8n consultation. We can help you troubleshoot, customize and build the perfect automation architecture tailored to your exact business needs.","workflow":{"id":"ttXnqdr96a8QyBU6","meta":{"instanceId":"9f24379abd1ca05a3f590fdaa874ca82fbc5e1188798d609d51d2a8f6bacb662"},"name":"Gold vs Equity Performance Comparison Tracker","tags":[],"nodes":[{"id":"16a00a3b-a760-4c26-ae35-a9d164a531e0","name":"Parse AI Output","type":"n8n-nodes-base.code","position":[656,256],"parameters":{"jsCode":"let raw = items[0].json.output;\n\ntry {\n  const parsed = JSON.parse(raw);\n  return [{ json: parsed }];\n} catch (e) {\n  return [{\n    json: {\n      error: \"Invalid JSON from AI\",\n      rawOutput: raw\n    }\n  }];\n}"},"typeVersion":2},{"id":"7e2bcf9a-e322-40c7-b883-370a60bfbcaa","name":"Check Performance Gap","type":"n8n-nodes-base.if","position":[1552,416],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"loose"},"combinator":"and","conditions":[{"id":"e86c4ce0-92b1-4fb9-8ea9-4bdb3c8a55bc","operator":{"type":"number","operation":"gt"},"leftValue":"={{Math.abs(Number($('Calculate Performance Metrics').first().json.difference))}}","rightValue":"={{ $('Set Analysis Parameters').first().json.threshold }}"}]},"looseTypeValidation":true},"typeVersion":2.3},{"id":"d54e3d99-4c85-4125-ad14-bc8bb1fc6601","name":"Run Report","type":"n8n-nodes-base.manualTrigger","position":[-1088,416],"parameters":{},"typeVersion":1},{"id":"d0735fac-a6f2-4f50-b523-9d5da49180f2","name":"Set Analysis Parameters","type":"n8n-nodes-base.set","position":[-896,416],"parameters":{"options":{},"assignments":{"assignments":[{"id":"6c7a77ee-197d-4bfc-ac6c-c41be689edce","name":"startDate","type":"string","value":"2026-03-01"},{"id":"d63b3ae8-7c13-407a-901b-d163273a24b5","name":"endDate","type":"string","value":"2026-03-10"},{"id":"acb42113-ccd5-4148-8f46-da86b416d19b","name":"threshold","type":"number","value":5}]}},"typeVersion":3.4},{"id":"b763b4a7-ba69-4b2e-9a38-6b29f84b742a","name":"Fetch Gold Prices","type":"n8n-nodes-base.googleSheets","position":[-688,416],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1ib5m4oUA__-HZvGMcRagCnOoiFmgKZPs8nBoCeoF3X0/edit#gid=0","cachedResultName":"Gold"},"documentId":{"__rl":true,"mode":"list","value":"1ib5m4oUA__-HZvGMcRagCnOoiFmgKZPs8nBoCeoF3X0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1ib5m4oUA__-HZvGMcRagCnOoiFmgKZPs8nBoCeoF3X0/edit?usp=drivesdk","cachedResultName":"Gold Data"}},"credentials":{"googleSheetsOAuth2Api":{"id":"YLNSloXJIWPMHBvp","name":"harshal chaudhari sheet acc"}},"executeOnce":true,"typeVersion":4.7},{"id":"01d47023-9b3e-4d8f-8d1f-6e43d8de1558","name":"Fetch Equity Prices","type":"n8n-nodes-base.googleSheets","position":[-448,416],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":1996490410,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1ib5m4oUA__-HZvGMcRagCnOoiFmgKZPs8nBoCeoF3X0/edit#gid=1996490410","cachedResultName":"Equity "},"documentId":{"__rl":true,"mode":"list","value":"1ib5m4oUA__-HZvGMcRagCnOoiFmgKZPs8nBoCeoF3X0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1ib5m4oUA__-HZvGMcRagCnOoiFmgKZPs8nBoCeoF3X0/edit?usp=drivesdk","cachedResultName":"Gold Data"}},"credentials":{"googleSheetsOAuth2Api":{"id":"YLNSloXJIWPMHBvp","name":"harshal chaudhari sheet acc"}},"executeOnce":true,"typeVersion":4.7},{"id":"414e6d7c-f2e3-4fc3-824c-3e1bf05077a2","name":"Merge Market Data","type":"n8n-nodes-base.code","position":[-208,416],"parameters":{"jsCode":"const seen = new Set();\n\nconst gold = $items(\"Fetch Gold Prices\");\nconst equity = items;\n\n// Get date parameters\nconst params = $(\"Set Analysis Parameters\").first().json;\nconst startDate = new Date(params.startDate);\nconst endDate = new Date(params.endDate);\n\nconst combined = [];\n\nfor (let i = 0; i < equity.length; i++) {\n  if (!gold[i]?.json?.Price || !equity[i]?.json?.Price) continue;\n\n  const cleanDate = gold[i].json.Date.replace(\",\", \"\").trim();\n  const currentDate = new Date(cleanDate);\n\n  if (seen.has(cleanDate)) continue;\n  seen.add(cleanDate);\n\n  if (currentDate < startDate || currentDate > endDate) continue;\n\n  combined.push({\n    json: {\n      date: cleanDate,\n      goldPrice: Number(gold[i].json.Price),\n      equityPrice: Number(equity[i].json.Price)\n    }\n  });\n}\n\n// Important safeguard\nif (combined.length === 0) {\n  return [{\n    json: {\n      error: \"No market data found in selected date range\"\n    }\n  }];\n}\n\nreturn combined;"},"typeVersion":2},{"id":"56f6f07f-ec62-4db8-b8c9-67ed81aa9922","name":"Calculate Performance Metrics","type":"n8n-nodes-base.code","position":[80,240],"parameters":{"jsCode":"if (!items.length || items[0].json.error) {\n  return [\n    {\n      json: {\n        error: items[0]?.json?.error || \"No data available for selected date range\"\n      }\n    }\n  ];\n}\n\nconst first = items[0].json;\nconst last = items[items.length - 1].json;\n\n// Calculate returns\nconst goldReturn =\n  ((last.goldPrice - first.goldPrice) / first.goldPrice) * 100;\n\nconst equityReturn =\n  ((last.equityPrice - first.equityPrice) / first.equityPrice) * 100;\n\n// Difference\nconst diff = goldReturn - equityReturn;\n\n// Decide winner\nlet winner = \"Equal\";\nif (diff > 0) winner = \"Gold\";\nelse if (diff < 0) winner = \"Equity\";\n\nreturn [\n  {\n    json: {\n      startDate: first.date,\n      endDate: last.date,\n      goldReturn: goldReturn.toFixed(2),\n      equityReturn: equityReturn.toFixed(2),\n      difference: diff.toFixed(2),\n      winner\n    }\n  }\n];"},"typeVersion":2},{"id":"c3c3b910-5e26-4d3a-88a6-3e9a33409080","name":"Generate AI Investment Insights","type":"@n8n/n8n-nodes-langchain.agent","position":[304,160],"parameters":{"text":"=Analyze the following asset performance:\n\nStart Date: {{ $json.startDate }}\nEnd Date: {{ $json.endDate }}\n\nGold Return: {{ $json.goldReturn }}%\nEquity Return: {{ $json.equityReturn }}%\nDifference: {{ $json.difference }}%","options":{"systemMessage":"You are a financial analyst and investment advisor.\n\nYour job:\n1. Compare gold vs equity performance\n2. Explain why one performed better\n3. Suggest portfolio allocation based on returns\n\nRules:\n- Use exact numbers provided\n- Do NOT give generic advice\n- Allocation must total 100%\n- Keep reasoning realistic and data-driven\n\nOutput ONLY valid JSON:\n\n{\n  \"summary\": \"clear comparison with numbers\",\n  \"winner\": \"Gold or Equity\",\n  \"reason\": \"why one outperformed\",\n  \"investmentAdvice\": \"specific actionable advice\",\n  \"goldAllocation\": \"percentage\",\n  \"equityAllocation\": \"percentage\",\n  \"strategy\": \"why this allocation makes sense\"\n}"},"promptType":"define"},"typeVersion":3.1},{"id":"4cf1120f-c476-4ef7-a180-1271df45bc87","name":"Combine AI + Chart Data","type":"n8n-nodes-base.merge","position":[960,416],"parameters":{},"typeVersion":3.2},{"id":"55bb3894-00d0-44d6-b998-a6257b6eca44","name":"Send Report Email","type":"n8n-nodes-base.gmail","position":[1776,320],"webhookId":"5a5f48c6-3d10-41af-8c38-c1c44af278fd","parameters":{"message":"={{ $json.html }}","options":{},"subject":"=Gold vs Equity Report ({{ $now }})"},"credentials":{"gmailOAuth2":{"id":"2bGhHtXnBefU5pfI","name":"harshal chaudhari gmail Acc"}},"typeVersion":2.2},{"id":"126c0c14-bb6d-4b9c-b038-1965577ecacf","name":"Send Alert Email","type":"n8n-nodes-base.gmail","position":[1776,512],"webhookId":"8dde3586-eb2f-4438-85de-b149abe2e3d4","parameters":{"message":"= Alert Triggered!\n\nA significant difference in asset performance detected.\n{{ $json.html }}","options":{},"subject":"=ALERT: Significant Performance Gap"},"credentials":{"gmailOAuth2":{"id":"2bGhHtXnBefU5pfI","name":"harshal chaudhari gmail Acc"}},"typeVersion":2.2},{"id":"0c8e904f-a026-42d9-8605-549f7bef540d","name":"Store Report History","type":"n8n-nodes-base.googleSheets","position":[2000,416],"parameters":{"columns":{"value":{"Date":"={{ $now }}","Report":"={{ $('Parse AI Output').first().json.reason }}","Winner":"={{ $('Parse AI Output').first().json.winner }}","Summary":"={{ $('Parse AI Output').first().json.summary }}"},"schema":[{"id":"Date","type":"string","display":true,"required":false,"displayName":"Date","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Winner","type":"string","display":true,"required":false,"displayName":"Winner","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Summary","type":"string","display":true,"required":false,"displayName":"Summary","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Report","type":"string","display":true,"required":false,"displayName":"Report","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":450031385,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1ib5m4oUA__-HZvGMcRagCnOoiFmgKZPs8nBoCeoF3X0/edit#gid=450031385","cachedResultName":"Sheet3"},"documentId":{"__rl":true,"mode":"list","value":"1ib5m4oUA__-HZvGMcRagCnOoiFmgKZPs8nBoCeoF3X0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1ib5m4oUA__-HZvGMcRagCnOoiFmgKZPs8nBoCeoF3X0/edit?usp=drivesdk","cachedResultName":"Gold Data"}},"credentials":{"googleSheetsOAuth2Api":{"id":"YLNSloXJIWPMHBvp","name":"harshal chaudhari sheet acc"}},"typeVersion":4.7},{"id":"28724d7d-0a8e-46c3-b0af-34ee4835d5e5","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-1680,128],"parameters":{"width":512,"height":656,"content":"# Gold vs Equity Performance Comparison Tracker with Visual Insights\n\nThis workflow automates financial performance analysis between gold and equity using historical market data. It fetches price data from Google Sheets, processes and compares returns, generates AI-driven investment insights, visualizes performance trends and sends a formatted report via email.\n\n## How it works:\nThe workflow starts with user-defined date parameters, **retrieves gold and equity data**, merges and cleans it and calculates returns. AI then analyzes performance and suggests portfolio allocation. A **chart is generated for visualization** and a final HTML report is prepared and emailed. Alerts are triggered if performance differences exceed a threshold.\n\n## Setup steps:\n1. Google SheetsConnect Google Sheets (Gold + Equity data)\n2. Configure Groq API for AI insights\n3. Set Gmail credentials for report delivery\n4. Adjust date range and threshold in parameters\n5. Execute workflow manually or via trigger\n"},"typeVersion":1},{"id":"698b4964-549e-4730-8a6d-d8457c181461","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-944,240],"parameters":{"color":7,"width":928,"height":384,"content":"## Setup & Market Data Ingestion\nThe workflow begins by setting the analysis parameters (start/end dates and threshold limits). It then connects to Google Sheets to fetch historical daily price data for both Gold and Equity. The data is merged and cleaned by date to ensure an accurate, day-by-day head-to-head comparison before moving to the analysis phase."},"typeVersion":1},{"id":"c9d1d6be-3dab-4719-bb65-ec828ccdd4c6","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[0,0],"parameters":{"color":7,"width":800,"height":448,"content":"## AI Insights & Data Parsing\nPerformance metrics are passed directly to a Groq-powered AI Agent which analyzes the financial returns. The AI evaluates the data to determine the winning asset, provide realistic market context and recommend a strategic portfolio allocation. The resulting raw text from the AI is then parsed into structured JSON, ensuring the generated insights can be seamlessly mapped into the final HTML email report."},"typeVersion":1},{"id":"37961394-b59f-4c9f-a33e-bf73368e2c89","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[176,560],"parameters":{"color":7,"width":432,"height":304,"content":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Chart Data & Visualization\nStructures Gold and Equity price data into arrays and generates a QuickChart line graph URL for performance comparison."},"typeVersion":1},{"id":"b31e4be0-a06b-4add-b7e0-a1b0bb2e17fd","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[832,208],"parameters":{"color":7,"width":656,"height":384,"content":"## Report Generation\nIt synchronizes the two separate data streams back together. It takes the structured JSON insights from the AI agent and the generated chart URL, combining them into a single data object. Finally, it injects this combined data into a stylized HTML template to build the final comparative report."},"typeVersion":1},{"id":"041b9977-6fb8-4ce0-b89b-f61fa42c0914","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[1504,160],"parameters":{"color":7,"width":720,"height":544,"content":"## Conditional Email Delivery & Auditing\n\nThis final section evaluates the calculated performance gap against a predefined threshold. Depending on the outcome, it branches to send either a standard \"Report Email\" or an urgent \"Alert Email\" via Gmail. After the notification is dispatched, the workflow appends the AI's summary, the winning asset and the execution date into a Google Sheet to maintain a historical log of the generated reports."},"typeVersion":1},{"id":"3aee49eb-6ad1-4286-a360-2358c46c23d0","name":"Insights","type":"@n8n/n8n-nodes-langchain.lmChatGroq","position":[304,320],"parameters":{"model":"llama-3.3-70b-versatile","options":{"temperature":0.7}},"credentials":{"groqApi":{"id":"yW0n4l0FjwBVJcJ8","name":"PT - Gaurav Patil Groq account"}},"typeVersion":1},{"id":"8ded1c1b-7547-4994-8d1e-6ba6c5dabd39","name":"Generate Final Report","type":"n8n-nodes-base.code","position":[1216,416],"parameters":{"jsCode":"const ai = items[0].json;\nconst chart = items[1].json;\n\n// Merge both streams\nconst d = {\n  ...ai,\n  chartUrl: chart.url || chart.chartUrl\n};\n\n// Create final HTML report\nconst html = `\n<div style=\"font-family: Arial, sans-serif; background:#f5f7fa; padding:20px;\">\n  \n  <div style=\"max-width:700px; margin:auto; background:white; border-radius:10px; padding:20px; box-shadow:0 4px 10px rgba(0,0,0,0.1);\">\n    \n    <h1 style=\"text-align:center; color:#2c3e50;\"> Gold vs Equity Report</h1>\n\n    <h2 style=\"text-align:center; color:${d.winner === 'Gold' ? '#d4af37' : '#3498db'};\">\n       Winner: ${d.winner}\n    </h2>\n\n    <hr/>\n\n    <h3> Summary</h3>\n    <p>${d.summary}</p>\n\n    <h3> Market Insight</h3>\n    <p>${d.reason}</p>\n\n    <h3> Investment Advice</h3>\n    <p>${d.investmentAdvice}</p>\n\n    <hr/>\n\n    <h3> Portfolio Allocation</h3>\n    <div style=\"display:flex; justify-content:space-between;\">\n      <div style=\"background:#f1c40f; padding:10px; border-radius:8px; width:45%; text-align:center;\">\n        <b>Gold</b><br/>${d.goldAllocation}%\n      </div>\n      <div style=\"background:#3498db; color:white; padding:10px; border-radius:8px; width:45%; text-align:center;\">\n        <b>Equity</b><br/>${d.equityAllocation}%\n      </div>\n    </div>\n\n    <h3 style=\"margin-top:20px;\"> Strategy</h3>\n    <p>${d.strategy}</p>\n\n    <hr/>\n\n    <h3> Performance Chart</h3>\n    <div style=\"text-align:center;\">\n      <img src=\"${d.chartUrl}\" style=\"width:100%; border-radius:8px;\" />\n    </div>\n\n    <p style=\"text-align:center; color:gray; font-size:12px; margin-top:20px;\">\n      Auto-generated financial insights report\n    </p>\n\n  </div>\n</div>\n`;\n\nreturn [\n  {\n    json: {\n      ...d,\n      html\n    }\n  }\n];"},"typeVersion":2},{"id":"b912394c-8703-4015-9824-1b146f8c7237","name":"Generate Chart","type":"n8n-nodes-base.code","position":[320,608],"parameters":{"jsCode":"if (!items.length || items[0].json.error) {\n  return [\n    {\n      json: {\n        chartUrl: \"\",\n        error: items[0]?.json?.error || \"No chart data available\"\n      }\n    }\n  ];\n}\n\nconst labels = items.map(i => i.json.date);\nconst gold = items.map(i => i.json.goldPrice);\nconst equity = items.map(i => i.json.equityPrice);\n\nconst chartConfig = {\n  type: \"line\",\n  data: {\n    labels,\n    datasets: [\n      {\n        label: \"Gold\",\n        data: gold,\n        borderColor: \"#D4AF37\",\n        backgroundColor: \"rgba(212,175,55,0.15)\",\n        borderWidth: 3,\n        fill: true,\n        tension: 0.45\n      },\n      {\n        label: \"Equity\",\n        data: equity,\n        borderColor: \"#2E86DE\",\n        backgroundColor: \"rgba(46,134,222,0.15)\",\n        borderWidth: 3,\n        fill: true,\n        tension: 0.45\n      }\n    ]\n  }\n};\n\nconst chartUrl =\n  \"https://quickchart.io/chart?width=900&height=450&backgroundColor=white&c=\" +\n  encodeURIComponent(JSON.stringify(chartConfig));\n\nreturn [\n  {\n    json: {\n      labels,\n      gold,\n      equity,\n      chartUrl\n    }\n  }\n];"},"typeVersion":2}],"active":false,"pinData":{},"settings":{"availableInMCP":false,"executionOrder":"v1"},"versionId":"e9ea7c53-6611-43a6-bdf9-5152feb58fbe","connections":{"Insights":{"ai_languageModel":[[{"node":"Generate AI Investment Insights","type":"ai_languageModel","index":0}]]},"Run Report":{"main":[[{"node":"Set Analysis Parameters","type":"main","index":0}]]},"Generate Chart":{"main":[[{"node":"Combine AI + Chart Data","type":"main","index":1}]]},"Parse AI Output":{"main":[[{"node":"Combine AI + Chart Data","type":"main","index":0}]]},"Send Alert Email":{"main":[[{"node":"Store Report History","type":"main","index":0}]]},"Fetch Gold Prices":{"main":[[{"node":"Fetch Equity Prices","type":"main","index":0}]]},"Merge Market Data":{"main":[[{"node":"Calculate Performance Metrics","type":"main","index":0},{"node":"Generate Chart","type":"main","index":0}]]},"Send Report Email":{"main":[[{"node":"Store Report History","type":"main","index":0}]]},"Fetch Equity Prices":{"main":[[{"node":"Merge Market Data","type":"main","index":0}]]},"Check Performance Gap":{"main":[[{"node":"Send Report Email","type":"main","index":0}],[{"node":"Send Alert Email","type":"main","index":0}]]},"Generate Final Report":{"main":[[{"node":"Check Performance Gap","type":"main","index":0}]]},"Combine AI + Chart Data":{"main":[[{"node":"Generate Final Report","type":"main","index":0}]]},"Set Analysis Parameters":{"main":[[{"node":"Fetch Gold Prices","type":"main","index":0}]]},"Calculate Performance Metrics":{"main":[[{"node":"Generate AI Investment Insights","type":"main","index":0}]]},"Generate AI Investment Insights":{"main":[[{"node":"Parse AI Output","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":22,"nodeTypes":{"n8n-nodes-base.if":{"count":1},"n8n-nodes-base.set":{"count":1},"n8n-nodes-base.code":{"count":5},"n8n-nodes-base.gmail":{"count":2},"n8n-nodes-base.merge":{"count":1},"n8n-nodes-base.stickyNote":{"count":6},"n8n-nodes-base.googleSheets":{"count":3},"n8n-nodes-base.manualTrigger":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":1},"@n8n/n8n-nodes-langchain.lmChatGroq":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"WeblineIndia","username":"weblineindia","bio":"A Leading Software Engineering, Consulting & Outsourcing Services Company in USA & India serving Clients Globally since 1999.","verified":true,"links":["https://www.weblineindia.com/hire-n8n-developers/"],"avatar":"https://gravatar.com/avatar/a229d43aefca4588581583c58bb37b4773aebbdf4c1fef86a08bb1d38eae91fa?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":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":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"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/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting 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/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/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/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/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/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"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/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/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.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","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":838,"icon":"fa:mouse-pointer","name":"n8n-nodes-base.manualTrigger","codex":{"data":{"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.manualworkflowtrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\"]","defaults":{"name":"When clicking ‘Execute workflow’","color":"#909298"},"iconData":{"icon":"mouse-pointer","type":"icon"},"displayName":"Manual Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1263,"icon":"file:groq.svg","name":"@n8n/n8n-nodes-langchain.lmChatGroq","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatgroq/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"Groq Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgaWQ9IkxheWVyXzIiCiAgIHZpZXdCb3g9IjAgMCA0OTkuOTk5OTkgNDk5Ljk5OTk5IgogICB2ZXJzaW9uPSIxLjEiCiAgIHdpZHRoPSI1MDAiCiAgIGhlaWdodD0iNTAwIgogICB4bWw6c3BhY2U9InByZXNlcnZlIgogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzCiAgICAgaWQ9ImRlZnM0IiAvPjxnCiAgICAgaWQ9IlBBR0VTIj48Y2lyY2xlCiAgICAgICBzdHlsZT0iZmlsbDojZjU0ZjM1O2ZpbGwtb3BhY2l0eToxO3N0cm9rZS13aWR0aDoxLjEzNjIyIgogICAgICAgaWQ9InBhdGg0IgogICAgICAgY3g9IjI1MCIKICAgICAgIGN5PSIyNTAiCiAgICAgICByPSIyNTAiIC8+PHBhdGgKICAgICAgIGQ9Ik0gMjUwLjUzNjY0LDk3LjEyMjk5NCBDIDE5Mi43MTkzMSw5Ni41ODg2MzggMTQ1LjQ4MjIyLDE0Mi45NzA3NSAxNDQuOTQ3ODYsMjAwLjc4ODA4IGMgLTAuNTM0MzQsNTcuODE3MzMgNDUuODQ3NzcsMTA1LjA1NDQyIDEwMy42NjUxLDEwNS41ODg3NyBoIDM2LjMzNjIxIHYgLTM5LjIyMTc0IGggLTM0LjQxMjUzIGMgLTM2LjEyMjQ4LDAuNDI3NSAtNjUuNzI1OCwtMjguNTM0NjIgLTY2LjE1MzI5LC02NC42NTcwOCAtMC40Mjc0OSwtMzYuMTIyNDggMjguNTM0NjMsLTY1LjcyNTgxIDY0LjY1NzA4LC02Ni4xNTMzIGggMS40OTYyMSBjIDM2LjEyMjQ4LDAgNjUuNDA1MiwyOS4yODI3MiA2NS41MTIwNyw2NS40MDUyIHYgMCA5Ni4zOTc4MyAwIGMgMCwzNS44MDE4NyAtMjkuMTc1ODUsNjQuOTc3NzMgLTY0Ljg3MDgzLDY1LjQwNTIxIC0xNy4wOTk0MSwtMC4xMDY4OCAtMzMuNDUwNzEsLTcuMDUzNTEgLTQ1LjUyNzE3LC0xOS4xMjk5NSBsIC0yNy43ODY1LDI3Ljc4NjUxIGMgMTkuMjM2ODEsMTkuMzQzNyA0NS4zMTMzOSwzMC4zNTE0MyA3Mi41NjU1NiwzMC42NzIwNSBoIDEuMzg5MzMgYyA1Ny4wNjkyNCwtMC44NTQ5NyAxMDIuOTE3LC00Ny4xMzAyMiAxMDMuMjM3NiwtMTA0LjE5OTQ1IFYgMTk5LjI5MTg5IEMgMzUzLjY2NzM5LDE0Mi40MzYzOSAzMDcuMjg1MjcsOTcuMTIyOTk0IDI1MC41MzY2NCw5Ny4xMjI5OTQgWiIKICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjBweCIKICAgICAgIGlkPSJwYXRoMS0zIiAvPjwvZz48L3N2Zz4K"},"displayName":"Groq Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":44,"name":"Crypto Trading"},{"id":49,"name":"AI Summarization"}],"image":[]}}