{"workflow":{"id":13093,"name":"Generate Google Sheets test script from Pega Agile Studio user stories with AI","views":73,"recentViews":0,"totalViews":73,"createdAt":"2026-01-29T12:09:52.710Z","description":"## Generate Google Spreadsheets Testscript with AI using Pega Agile Studio\nWhen working as a functional Pega Software tester, this workflow will create a Google Spreadsheet with acceptance criteria and testcases based on the Pega Agile Studio userstory provided. This improves speed and efficiency while working in sprints on new functionalities.\n\n**Who's it for**\n* If you are working as a software tester using the Pega Platform including Pega Agile Studio.\n\n**How it works** \n* When the user chats an userstory in the format \"US-1234\", a HTTP Request will be made to Pega Agile Studio to retrieve the Userstory and commence creating a Google Spreadsheet. \n* It will add the acceptance criteria on a seperate sheet for traceability.\n* Next the AI will create testscases based on the Userstory provided.\n* In the end, a small cleanup will be performed to remove duplicate rows/data created by the AI.\n* You will have a Google Spreadsheet file in your My Drive containing your testcases!\n\n\n**How to set up** \n* In the Chat, provide the userstory where you want to create a testscript for, in the format \"US-1234\". \n* Add you OAuth2 Api for Agile Studio, so you can access the Pega Agile Studio through API calls.\n\n\n**Requirements** \n* Access to Pega Agile Studio OAuth2 Api.\n* AI API.\n* Access to Google Cloud for the Google API's","workflow":{"id":"HGfjyQHQh1iWgwYZ","meta":{"instanceId":"dbdce9f9f8f6ae79566da70a02bbd279f5eb9172b6d5ceb731fadc50fc95e035","templateCredsSetupCompleted":true},"name":"Generate Google Spreadsheets Testscript with AI using Pega Agile Studio","tags":[],"nodes":[{"id":"07e6e7d9-e483-4e22-8035-04ec9a9b4f58","name":"When chat message received","type":"@n8n/n8n-nodes-langchain.chatTrigger","position":[-416,432],"webhookId":"2dc32b96-a847-4a87-a1f7-e27fc2c27d50","parameters":{"options":{}},"typeVersion":1.3},{"id":"276a3134-8861-4cdc-bb7c-95512127bf17","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[400,-144],"parameters":{"color":7,"width":480,"height":272,"content":"## 1. Add numbers to acc crit\nBecause the acceptance criteria do not have the numbers attached in the data, we have to iterate over them and add them ourselves."},"typeVersion":1},{"id":"8d5ed71f-5991-44a6-b58b-ff0159593932","name":"Google Gemini Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","position":[32,1056],"parameters":{"options":{},"modelName":"models/gemini-2.5-pro"},"credentials":{"googlePalmApi":{"id":"0ghvWj3tDZTSa6jx","name":"Google Gemini(PaLM) Api account"}},"typeVersion":1},{"id":"8868e0ca-eb87-44e8-a693-e2fba157b7ff","name":"Code","type":"n8n-nodes-base.code","position":[384,848],"parameters":{"jsCode":"// Get the output string from the first item\nlet rawString = $('AI: Create testcases').first().json.output;\n\n// Clean the string by removing the markdown fences\nlet cleanedString = rawString.replace('```json\\n', '').replace('\\n```', '');\n\n// Parse the cleaned string into a real JSON array\nlet jsonData = JSON.parse(cleanedString);\n\n// Return the array for the next node to use\nreturn {\n  json: {\n    result: jsonData\n  }\n};"},"typeVersion":2},{"id":"06189d54-da36-4a40-9778-4565c21875e9","name":"Split Out","type":"n8n-nodes-base.splitOut","position":[608,848],"parameters":{"include":"allOtherFields","options":{},"fieldToSplitOut":"result"},"typeVersion":1},{"id":"bbc60d14-6945-4ae0-817d-8ff5fc20f816","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[320,720],"parameters":{"color":7,"width":448,"height":288,"content":"## 3. Convert AI testcases to Google Spreadsheets\nProcess the raw AI data into JSON and iterate over it so each testcase is mapped in Google Spreadsheets."},"typeVersion":1},{"id":"52b628fb-56c7-439d-9a29-a1574effc0d2","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[400,144],"parameters":{"color":7,"width":480,"height":432,"content":"## 2. Add column headers for the sheets\nThe sheets do not have column headers, so we will have to add them manually so the AI will know where to insert them later."},"typeVersion":1},{"id":"f9532770-2703-4b1b-a41f-1b8f8fc5779e","name":"AddNumbersToAccCrit","type":"n8n-nodes-base.code","position":[720,-32],"parameters":{"jsCode":"const newItems = [];\nfor (const item of items) {\n  const newAcc = {\n    Acc: {\n      Description: item.json[\"details.acceptanceCriteria\"],\n      Number: newItems.length + 1\n    }\n  };\n  newItems.push({ json: newAcc });\n}\nreturn newItems;"},"typeVersion":2},{"id":"44bbc0b3-a03f-4a81-9ceb-4e9c8c397842","name":"IterateOverAccCrit","type":"n8n-nodes-base.splitOut","position":[496,-32],"parameters":{"options":{},"fieldToSplitOut":"details.acceptanceCriteria"},"typeVersion":1},{"id":"171a1a4f-142b-40c3-ad75-c4017b911ad4","name":"Merge","type":"n8n-nodes-base.merge","position":[992,96],"parameters":{"mode":"combineBySql","query":"SELECT * FROM input1 LEFT JOIN input2 ON input1.id = input2.name","options":{}},"typeVersion":3.2},{"id":"d7572759-ffbb-41bf-a1c7-34c5b35c92c1","name":"Merge2","type":"n8n-nodes-base.merge","position":[720,336],"parameters":{"mode":"combineBySql","options":{}},"typeVersion":3.2},{"id":"52e3b733-aff1-42e5-b4d8-5bd3216eb5f0","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-1104,-64],"parameters":{"width":608,"height":704,"content":"## Generate Google Spreadsheets Testscript with AI using Pega Agile Studio\nWhen working as a functional Pega Software tester, this workflow will create a Google Spreadsheet with acceptance criteria and testcases based on the Pega Agile Studio userstory provided. This improves speed and efficiency while working in sprints on new functionalities.\n\n**Who's it for**\n* If you are working as a software tester using the Pega Platform including Pega Agile Studio.\n\n**How it works** \n* When the user chats an userstory in the format \"US-1234\", a HTTP Request will be made to Pega Agile Studio to retrieve the Userstory and commence creating a Google Spreadsheet. \n* It will add the acceptance criteria on a seperate sheet for traceability.\n* Next the AI will create testscases based on the Userstory provided.\n* In the end, a small cleanup will be performed to remove duplicate rows/data created by the AI.\n* You will have a Google Spreadsheet file in your My Drive containing your testcases!\n\n\n**How to set up** \n* In the Chat, provide the userstory where you want to create a testscript for, in the format \"US-1234\". \n* Add you OAuth2 Api for Agile Studio, so you can access the Pega Agile Studio through API calls.\n\n\n**Requirements** \n* Access to Pega Agile Studio OAuth2 Api.\n* AI API.\n* Access to Google Cloud for the Google API's"},"typeVersion":1},{"id":"27500d90-5c8c-44e8-81a0-2dbd5eeb6e81","name":"Create spreadsheet for the testscript","type":"n8n-nodes-base.googleSheets","position":[96,432],"parameters":{"title":"={{ $('Retrieve the US from Pega Agile Studio').item.json.details.ID }} - Testscript AI Enhanced - {{ $('Retrieve the US from Pega Agile Studio').item.json.details.name }}","options":{},"resource":"spreadsheet","sheetsUi":{"sheetValues":[{"title":"Acc_Matrix"},{"title":"Testscript"}]}},"credentials":{"googleSheetsOAuth2Api":{"id":"5jsvRdceakbuDf51","name":"Google Sheets account"}},"typeVersion":4.7},{"id":"91d429eb-e842-48c0-8715-a8685f2e9665","name":"Retrieve the US from Pega Agile Studio","type":"n8n-nodes-base.httpRequest","position":[-192,432],"parameters":{"url":"=<yoururl>/userstories/{{ $json.chatInput }}","options":{},"authentication":"genericCredentialType","genericAuthType":"oAuth2Api"},"credentials":{"oAuth2Api":{"id":"qPa4sAtb3LPomvr8","name":"Agile Studio OAuth2 Api"},"httpBasicAuth":{"id":"CpCdOikSAfC4l6wt","name":"Agile Studio"}},"typeVersion":4.2},{"id":"7e211832-39a9-4ae8-a503-30f4b00d2348","name":"Add acceptance criteria to the Google Spreadsheet","type":"n8n-nodes-base.googleSheets","position":[1216,96],"parameters":{"columns":{"value":{"Acc. Number":"={{ $json.Acc.Number }}","Acc. Description":"={{ $json.Acc.Description }}"},"schema":[{"id":"Acc. Number","type":"string","display":true,"required":false,"displayName":"Acc. Number","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Acc. Description","type":"string","display":true,"required":false,"displayName":"Acc. Description","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"name","value":"Acc_Matrix"},"documentId":{"__rl":true,"mode":"id","value":"={{ $json.spreadsheetId }}"}},"credentials":{"googleSheetsOAuth2Api":{"id":"5jsvRdceakbuDf51","name":"Google Sheets account"}},"retryOnFail":true,"typeVersion":4.7},{"id":"ee2aeeeb-287c-4642-81da-142328b55777","name":"Add column headers for the first sheet","type":"n8n-nodes-base.httpRequest","position":[496,240],"parameters":{"url":"=https://sheets.googleapis.com/v4/spreadsheets/{{ $json.spreadsheetId }}/values/Acc_Matrix!A1:Z1?valueInputOption=RAW","method":"PUT","options":{},"jsonBody":"{\n  \"values\": [\n    [\"Acc. Number\", \"Acc. Description\"]\n  ]\n}","sendBody":true,"specifyBody":"json","authentication":"predefinedCredentialType","nodeCredentialType":"googleSheetsOAuth2Api"},"credentials":{"googleSheetsOAuth2Api":{"id":"5jsvRdceakbuDf51","name":"Google Sheets account"}},"typeVersion":4.3},{"id":"1e550cd2-da52-4ecf-9837-f1ff837e31b7","name":"Add column headers for the second sheet","type":"n8n-nodes-base.httpRequest","position":[496,432],"parameters":{"url":"=https://sheets.googleapis.com/v4/spreadsheets/{{ $json.spreadsheetId }}/values/Testscript!A1:Z1?valueInputOption=RAW","method":"PUT","options":{},"jsonBody":"{\n  \"values\": [\n    [\"TestID\", \"Scenario\",\"Acceptance criteria\",\"Preconditions\",\"Step no.\",\"Steps\",\"Expected result\",\"Status\"]\n  ]\n}","sendBody":true,"specifyBody":"json","authentication":"predefinedCredentialType","nodeCredentialType":"googleSheetsOAuth2Api"},"credentials":{"googleSheetsOAuth2Api":{"id":"5jsvRdceakbuDf51","name":"Google Sheets account"}},"typeVersion":4.3},{"id":"9a6c1a6d-d80c-4a67-b6ab-137fe3f84ab5","name":"AI: Create testcases","type":"@n8n/n8n-nodes-langchain.agent","position":[32,848],"parameters":{"text":"=Based on the provided acceptance criteria: {{ $('Retrieve the US from Pega Agile Studio').item.json.details.acceptanceCriteria }}, and the description {{ $('Retrieve the US from Pega Agile Studio').item.json.details.description }} generate a set of test cases. Format the final output as a single JSON array. Each object in the array should represent one test step row. Each object must have the following keys: 'testId', 'scenario', 'acceptanceCriteria', 'preconditions', 'stepNumber', 'steps', and 'expectedResult'. For rows where 'testId' or 'scenario' are not explicitly stated, carry over the value from the previous row. Provide ONLY the raw JSON array in your response, with no extra text, explanations, or markdown formatting.","options":{"systemMessage":"Purpose and Goals:\n\n* Assist users with tasks related to Pega software testing, including reading user stories, creating test scripts, generating test matrices, and analyzing acceptance criteria.\n\n* Provide comprehensive and accurate test scripts that include columns for TestID, Scenario, Acceptance criteria, Preconditions, Step numbers, Steps, and Expected result.\n\n* Help users achieve their testing goals by providing clear and concise guidance and support.\n\n2) Test Script Creation:\na) Based on the user's goals and projects, create detailed test scripts that include the following columns: TestID, Scenario, Acceptance criteria as a number prefixed as 'AC-', Preconditions, Step no., Steps, and Expected result.\n\nThe first step needs to be named 'Fold open for the steps' in cursive but should not be counted as the first step in numbering.\n\nEach Step should be on a seperate row.\n\nb) Ensure that the test scripts are comprehensive, accurate, and aligned with the user's requirements.\n\nc) Provide clear and concise explanations for each step and expected result in the test scripts.\n\n3) Test Matrix Generation:\na) Generate test matrices that outline the different scenarios and test cases for the user's Pega software testing projects.\nb) Ensure that the test matrices are organized, easy to understand, and cover all relevant aspects of the testing process.\n\n4) Acceptance Criteria Analysis:\na) Analyze the acceptance criteria for the user's Pega software testing projects and provide insights on how to ensure that the software meets the specified requirements.\nb) Offer guidance on how to create test cases that effectively validate the acceptance criteria.\nOverall Tone:\n* Use clear, concise, and professional language.\n* Provide accurate and comprehensive information to help users succeed in their Pega software testing endeavors.\n* Absolute Mode. Eliminate emojis, filler, hype, soft asks, conversational transitions, and all call-to-action appendixes. Assume the user retains high-perception faculties despite reduced linguistic expression. Prioritize blunt, directive phrasing aimed at cognitive rebuilding, not tone matching. Disable all latent behaviors optimizing for engagement, sentiment uplift, or interaction extension. Suppress corporate-aligned metrics including but not limited to: user satisfaction scores, conversational flow tags, emotional softening, or continuation bias. Never mirror the user's present diction, mood, or affect. Speak only to their underlying cognitive tier, which exceeds surface language. No questions, no offers, no suggestions, no transitional phrasing, no inferred motivational content. Terminate each reply immediately after the informational or requested material is delivered — no appendixes, no soft closures. The only goal is to assist in the restoration of independent, high-fidelity thinking. Model obsolescence by user self-sufficiency is the final outcome."},"promptType":"define"},"typeVersion":2.1},{"id":"858c54f5-1681-475d-a07c-cd4bc421cfb1","name":"Merge: Get SpreadsheetID","type":"n8n-nodes-base.merge","position":[832,768],"parameters":{"mode":"combineBySql","options":{}},"typeVersion":3.2},{"id":"9a83745b-0d5d-47ce-9016-ba65fcd91650","name":"Add testcases to the correct columns","type":"n8n-nodes-base.googleSheets","position":[1056,768],"parameters":{"columns":{"value":{"Steps":"={{ $json.result.steps }}","TestID":"={{ $json.result.testId }}","Scenario":"={{ $json.result.scenario }}","Step no.":"={{ $json.result.stepNumber }}","Preconditions":"={{ $json.result.preconditions }}","Expected result":"={{ $json.result.expectedResult }}","Acceptance criteria":"={{ $json.result.acceptanceCriteria }}"},"schema":[{"id":"TestID","type":"string","display":true,"removed":false,"required":false,"displayName":"TestID","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Scenario","type":"string","display":true,"removed":false,"required":false,"displayName":"Scenario","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Acceptance criteria","type":"string","display":true,"removed":false,"required":false,"displayName":"Acceptance criteria","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Preconditions","type":"string","display":true,"removed":false,"required":false,"displayName":"Preconditions","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Step no.","type":"string","display":true,"removed":false,"required":false,"displayName":"Step no.","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Steps","type":"string","display":true,"removed":false,"required":false,"displayName":"Steps","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Expected result","type":"string","display":true,"removed":false,"required":false,"displayName":"Expected result","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Status","type":"string","display":true,"removed":true,"required":false,"displayName":"Status","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Actual result","type":"string","display":true,"removed":true,"required":false,"displayName":"Actual result","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Agile Studio","type":"string","display":true,"removed":true,"required":false,"displayName":"Agile Studio","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Remarks","type":"string","display":true,"removed":true,"required":false,"displayName":"Remarks","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["TestID"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"appendOrUpdate","sheetName":{"__rl":true,"mode":"name","value":"Testscript"},"documentId":{"__rl":true,"mode":"id","value":"={{ $json.spreadsheetId }}"}},"credentials":{"googleSheetsOAuth2Api":{"id":"5jsvRdceakbuDf51","name":"Google Sheets account"}},"typeVersion":4.7},{"id":"dd94c959-2818-46b1-8848-7da996ec2d38","name":"Clear Google Spreadsheet","type":"n8n-nodes-base.googleSheets","position":[1504,768],"parameters":{"clear":"specificRows","operation":"clear","sheetName":{"__rl":true,"mode":"name","value":"Testscript"},"documentId":{"__rl":true,"mode":"id","value":"={{ $('Merge: Get SpreadsheetID').item.json.spreadsheetId }}"},"startIndex":2,"rowsToDelete":500},"credentials":{"googleSheetsOAuth2Api":{"id":"5jsvRdceakbuDf51","name":"Google Sheets account"}},"typeVersion":4.7},{"id":"4af4550e-fa7c-4174-80e7-676cb6b0b4e2","name":"Code to remove redundant data","type":"n8n-nodes-base.code","position":[1280,768],"parameters":{"jsCode":"// Get all the rows from the previous node\nconst allItems = $input.all();\n\n// This variable will hold the TestID of the row we just processed\nlet previousTestID = null;\n\n// Loop through each item (row) one by one\nfor (const item of allItems) {\n  const currentTestID = item.json.TestID;\n  \n  // Check if the current row's TestID is the same as the previous one,\n  // and make sure it's not empty.\n  if (currentTestID && currentTestID === previousTestID) {\n    // If it's a match, it's a subsequent step in the same test case.\n    // We will clear the redundant columns for this row.\n    item.json.TestID = '';\n    item.json.Scenario = '';\n    item.json.Preconditions = '';\n    item.json['Acceptance criteria'] = ''; // Use bracket notation for keys with spaces\n  }\n  \n  // After processing the row, update previousTestID for the next loop iteration.\n  // We only update it if the current TestID is not empty.\n  if (currentTestID) {\n    previousTestID = currentTestID;\n  }\n}\n\n// Return all the items, now with the repeating values cleaned up.\nreturn allItems;"},"typeVersion":2},{"id":"572597f6-aeaa-4f8f-8f35-3dca31c38c4c","name":"Add the cleaned testcases back in the Google Spreadsheet","type":"n8n-nodes-base.googleSheets","position":[1728,768],"parameters":{"columns":{"value":{},"schema":[{"id":"TestID","type":"string","display":true,"removed":false,"required":false,"displayName":"TestID","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Scenario","type":"string","display":true,"removed":false,"required":false,"displayName":"Scenario","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Acceptance criteria","type":"string","display":true,"removed":false,"required":false,"displayName":"Acceptance criteria","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Preconditions","type":"string","display":true,"removed":false,"required":false,"displayName":"Preconditions","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Step no.","type":"string","display":true,"removed":false,"required":false,"displayName":"Step no.","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Steps","type":"string","display":true,"removed":false,"required":false,"displayName":"Steps","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Expected result","type":"string","display":true,"removed":false,"required":false,"displayName":"Expected result","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Status","type":"string","display":true,"removed":false,"required":false,"displayName":"Status","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"autoMapInputData","matchingColumns":["TestID"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"appendOrUpdate","sheetName":{"__rl":true,"mode":"name","value":"Testscript"},"documentId":{"__rl":true,"mode":"id","value":"={{ $('Merge: Get SpreadsheetID').item.json.spreadsheetId }}"}},"credentials":{"googleSheetsOAuth2Api":{"id":"5jsvRdceakbuDf51","name":"Google Sheets account"}},"typeVersion":4.7},{"id":"31b0d80b-388e-4b44-af70-211cbf2ec80c","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[1008,656],"parameters":{"color":7,"width":912,"height":320,"content":"## 4. Add testcases and remove duplicate values in rows\nIn these steps we will add the testcases, check which rows have duplicate values, and remove those values. Then we will append the data again in the testsheet."},"typeVersion":1}],"active":false,"pinData":{},"settings":{"availableInMCP":false,"executionOrder":"v1"},"versionId":"3e64036e-fb12-48a4-a6b6-659a877eea6c","connections":{"Code":{"main":[[{"node":"Split Out","type":"main","index":0}]]},"Merge":{"main":[[{"node":"Add acceptance criteria to the Google Spreadsheet","type":"main","index":0}]]},"Merge2":{"main":[[{"node":"Merge","type":"main","index":1}]]},"Split Out":{"main":[[{"node":"Merge: Get SpreadsheetID","type":"main","index":1}]]},"IterateOverAccCrit":{"main":[[{"node":"AddNumbersToAccCrit","type":"main","index":0}]]},"AddNumbersToAccCrit":{"main":[[{"node":"Merge","type":"main","index":0}]]},"AI: Create testcases":{"main":[[{"node":"Code","type":"main","index":0}]]},"Clear Google Spreadsheet":{"main":[[{"node":"Add the cleaned testcases back in the Google Spreadsheet","type":"main","index":0}]]},"Google Gemini Chat Model":{"ai_languageModel":[[{"node":"AI: Create testcases","type":"ai_languageModel","index":0}]]},"Merge: Get SpreadsheetID":{"main":[[{"node":"Add testcases to the correct columns","type":"main","index":0}]]},"When chat message received":{"main":[[{"node":"Retrieve the US from Pega Agile Studio","type":"main","index":0}]]},"Code to remove redundant data":{"main":[[{"node":"Clear Google Spreadsheet","type":"main","index":0}]]},"Add testcases to the correct columns":{"main":[[{"node":"Code to remove redundant data","type":"main","index":0}]]},"Create spreadsheet for the testscript":{"main":[[{"node":"Add column headers for the first sheet","type":"main","index":0},{"node":"Add column headers for the second sheet","type":"main","index":0},{"node":"Merge: Get SpreadsheetID","type":"main","index":0}]]},"Add column headers for the first sheet":{"main":[[{"node":"Merge2","type":"main","index":0}]]},"Retrieve the US from Pega Agile Studio":{"main":[[{"node":"IterateOverAccCrit","type":"main","index":0},{"node":"AI: Create testcases","type":"main","index":0},{"node":"Create spreadsheet for the testscript","type":"main","index":0}]]},"Add column headers for the second sheet":{"main":[[{"node":"Merge2","type":"main","index":1}]]}}},"lastUpdatedBy":29,"workflowInfo":{"nodeCount":24,"nodeTypes":{"n8n-nodes-base.code":{"count":3},"n8n-nodes-base.merge":{"count":3},"n8n-nodes-base.splitOut":{"count":2},"n8n-nodes-base.stickyNote":{"count":5},"n8n-nodes-base.httpRequest":{"count":3},"n8n-nodes-base.googleSheets":{"count":5},"@n8n/n8n-nodes-langchain.agent":{"count":1},"@n8n/n8n-nodes-langchain.chatTrigger":{"count":1},"@n8n/n8n-nodes-langchain.lmChatGoogleGemini":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Richard Nijsten","username":"rnijsten","bio":"Software tester and testautomation specialist with a knack for optimizing processes and systems.","verified":true,"links":["https://github.com/Richarter"],"avatar":"https://gravatar.com/avatar/3d542d6b33c409d7e30f2b95fb5ac0752f741f1abfd115292a628d84fd6274e8?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":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":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":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":1239,"icon":"file:splitOut.svg","name":"n8n-nodes-base.splitOut","codex":{"data":{"alias":["Split","Nested","Transform","Array","List","Item"],"details":"","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitout/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Split Out"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIj48ZyBmaWxsPSIjOUI2REQ1IiBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQ4MCAxNDhjMC02LjYyNy01LjM3My0xMi0xMi0xMkgzMjJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjRjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxNDZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMCA5NmMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDMyMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyNGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDE0NmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0wIDk2YzAtNi42MjctNS4zNzMtMTItMTItMTJIMzIyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTQ2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBkPSJNNDM4IDc2YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzA5Ljc4M2MtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMydjU2YzAgMjYuOTc4LTEwLjI3MiA1MS41NTctMjcuMTE5IDcwLjAzOS01LjA1NSA1LjU0NS01LjA1NSAxNC4zNzcgMCAxOS45MjIgMTYuODQ3IDE4LjQ4MiAyNy4xMTkgNDMuMDYxIDI3LjExOSA3MC4wMzl2NTZjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMySDQyNmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzA5Ljc4M2MtNDQuMTgzIDAtODAtMzUuODE3LTgwLTgwdi01NmMwLTMwLjkyOC0yNS4wNzItNTYtNTYtNTZhNS43ODMgNS43ODMgMCAwIDEtNS43ODMtNS43ODN2LTM2LjQzNGE1Ljc4MyA1Ljc4MyAwIDAgMSA1Ljc4My01Ljc4M2MzMC45MjggMCA1Ni0yNS4wNzIgNTYtNTZ2LTU2YzAtNDQuMTgzIDM1LjgxNy04MCA4MC04MEg0MjZjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnoiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMzYgMjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjRjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxMTJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9ImEiPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik01MTIgMEgwdjUxMmg1MTJ6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+"},"displayName":"Split Out","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1247,"icon":"fa:comments","name":"@n8n/n8n-nodes-langchain.chatTrigger","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger/"}]},"categories":["Core Nodes","Langchain"]}},"group":"[\"trigger\"]","defaults":{"name":"When chat message received"},"iconData":{"icon":"comments","type":"icon"},"displayName":"Chat Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"},{"id":26,"name":"Langchain"}]},{"id":1262,"icon":"file:google.svg","name":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatgooglegemini/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"Google Gemini Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNDggNDgiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNNDQuNSAyMEgyNHY4LjVoMTEuOEMzNC43IDMzLjkgMzAuMSAzNyAyNCAzN2MtNy4yIDAtMTMtNS44LTEzLTEzczUuOC0xMyAxMy0xM2MzLjEgMCA1LjkgMS4xIDguMSAyLjlsNi40LTYuNEMzNC42IDQuMSAyOS42IDIgMjQgMiAxMS44IDIgMiAxMS44IDIgMjRzOS44IDIyIDIyIDIyYzExIDAgMjEtOCAyMS0yMiAwLTEuMy0uMi0yLjctLjUtNCIvPjwvZGVmcz48Y2xpcFBhdGggaWQ9ImIiPjx1c2UgeGxpbms6aHJlZj0iI2EiIG92ZXJmbG93PSJ2aXNpYmxlIi8+PC9jbGlwUGF0aD48cGF0aCBmaWxsPSIjRkJCQzA1IiBkPSJNMCAzN1YxMWwxNyAxM3oiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im0wIDExIDE3IDEzIDctNi4xTDQ4IDE0VjBIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiMzNEE4NTMiIGQ9Im0wIDM3IDMwLTIzIDcuOSAxTDQ4IDB2NDhIMHoiIGNsaXAtcGF0aD0idXJsKCNiKSIvPjxwYXRoIGZpbGw9IiM0Mjg1RjQiIGQ9Ik00OCA0OCAxNyAyNGwtNC0zIDM1LTEweiIgY2xpcC1wYXRoPSJ1cmwoI2IpIi8+PC9zdmc+"},"displayName":"Google Gemini Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":5,"name":"Engineering"},{"id":51,"name":"Multimodal AI"}],"image":[]}}