{"workflow":{"id":13092,"name":"Convert emailed timesheets into QuickBooks invoices with OCR, AI, Gmail and Sheets","views":73,"recentViews":0,"totalViews":73,"createdAt":"2026-01-29T10:20:51.795Z","description":"##   AI-Powered Timesheet → Invoice Automation (Gmail + OCR + AI + Google Sheets + QuickBooks) \n\n&gt; **Note:** This workflow uses **sticky notes extensively** to document each logical section of the automation. Sticky notes are mandatory and already included to explain OCR, AI parsing, folder logic, duplicate handling, and QuickBooks steps.\n\nThis workflow automates the full lifecycle of timesheet-based invoicing — from emailed timesheets to structured Google Sheets records and finalized invoices in QuickBooks Online.\n\nIt is designed for real-world billing scenarios, including split weeks across months, zero-hour months, duplicate prevention, and first-week-of-year edge cases.\n\n---\n\n##  What This Workflow Does\n\n- Listens to Gmail for timesheet emails with attachments  \n- Splits and processes each attachment independently  \n- Extracts text using OCR (no hardcoded API keys)  \n- Uses AI to parse **month-wise billable hours**  \n- Correctly splits weeks spanning multiple months  \n- Looks up Customer and PO details from Google Sheets  \n- Organizes files in **Client → Employee → Year** folders in Google Drive  \n- Reuses existing invoice sheets or creates new ones  \n- Prevents duplicate invoice rows  \n- Automatically finds or creates customers in QuickBooks  \n- Creates invoices in QuickBooks using validated data  \n\n---\n\n##  High-Level Workflow Stages\n\n1. Gmail Intake and Attachment Loop  \n2. OCR Text Extraction  \n3. AI-Based Timesheet Parsing  \n4. Month Normalization and Validation  \n5. Customer & PO Lookup  \n6. Drive Folder Discovery and Creation  \n7. Invoice Sheet Reuse or Creation  \n8. Duplicate and Edge-Case Handling  \n9. Append Invoice Rows to Google Sheets  \n10. Create / Update Customers in QuickBooks  \n11. Create Invoices in QuickBooks  \n\nEach of these stages is clearly documented with **sticky notes inside the workflow canvas**.\n\n---\n\n##  Quick Setup Instructions\n\n1. Import the workflow JSON into your n8n instance  \n2. Configure credentials for:\n   - Gmail  \n   - Google Drive  \n   - Google Sheets  \n   - OpenAI or Google Gemini  \n   - QuickBooks Online  \n3. Verify the OCR HTTP node:\n   - Default URL: `https://universal-file-to-text-extractor.vercel.app/extract`\n   -  No hardcoded API keys are used  \n4. Configure **Get Customer Info From PO Sheet**:\n   - Spreadsheet ID  \n   - Sheet name and column mappings  \n5. Ensure the **Client Invoices** root folder exists in Google Drive  \n6. Send a test timesheet email  \n7. Execute the workflow once manually  \n8. Activate the workflow  \n\n---\n\n##  Who This Workflow Is For\n\n- Agencies and consultancies billing from emailed timesheets  \n- Finance and operations teams using Google Workspace + QuickBooks  \n- Staffing firms with monthly or bi-weekly contractor billing  \n- Teams that want a fully auditable, zero-manual invoice process  \n\n---\n\n##  Requirements\n\n- n8n instance  \n- Gmail account receiving timesheet emails  \n- Google Drive and Google Sheets  \n- OpenAI or Google Gemini API  \n- OCR API endpoint (configurable)  \n- QuickBooks Online account  \n- Customer PO Google Sheet containing:\n  - Email  \n  - Customer Name  \n  - Company Name  \n  - Customer Account Number  \n  - PO Number  \n  - Item  \n  - Folder Name  \n  - Invoice range  \n  - Due Date Calculation  \n\n---\n\n##  How It Works (Detailed)\n\n### 1. Email Intake and Attachment Loop\n\n- Gmail Trigger polls for timesheet emails  \n- Attachments are split so each file is processed independently  \n- Sticky notes explain the intake and loop logic  \n\n---\n\n### 2. OCR Extraction\n\n- Each attachment is sent to the OCR API  \n- PDFs and images are converted to plain text  \n- OCR logic is documented via sticky notes  \n\n---\n\n### 3. AI Timesheet Parsing (Month-Wise)\n\n- AI extracts data **only** from BILLABLE HOURS sections  \n- Outputs strict JSON:\n  - Employee Name  \n  - Client Name  \n  - Month  \n  - Year  \n  - Week Start Date  \n  - Week End Date  \n  - Total Billable Hours  \n\n**Special handling included:**\n- Split weeks across months  \n- Zero-hour months still included  \n- No guessed or inferred dates  \n\n---\n\n### 4. Month Normalization and Validation\n\n- AI output is normalized into a month array  \n- Each month is processed independently  \n- Invalid or zero-hour entries are skipped  \n\n---\n\n### 5. Customer and PO Lookup\n\n- Sender email is matched in the PO sheet  \n- Retrieved values drive:\n  - Folder structure  \n  - Invoice logic  \n  - Due date calculation  \n\n---\n\n### 6. Google Drive Folder Structure\n\nThe workflow enforces a strict hierarchy:\n\nClient Invoices\n└── Client\n└── Employee\n└── Year\n\n\nMissing folders are created automatically.\n\n---\n\n### 7. Invoice Sheet Naming and Search\n\n- Sheet names are generated using:\n  - Employee Name  \n  - Month  \n  - Year  \n- Existing sheets are reused when found  \n- Supports monthly and 15-day billing cycles  \n\n---\n\n### 8. Duplicate Prevention and Edge Cases\n\n- Duplicate invoice rows are detected and skipped  \n- January first-week edge case is handled explicitly  \n- Safe re-runs are supported  \n\n---\n\n### 9. Google Sheets Invoice Rows\n\nEach appended row includes:\n\n- Customer Account Number  \n- Invoice Date  \n- Due Date  \n- PO Number  \n- Item Name  \n- Quantity (Total Hours)  \n- Period description  \n\n---\n\n### 10. QuickBooks Integration\n\n- Searches for existing customers in QuickBooks  \n- Creates customers automatically if missing  \n- Creates invoices using:\n  - Customer reference  \n  - Item  \n  - Quantity  \n  - Invoice date  \n  - Due date  \n\nAll QuickBooks logic is documented with sticky notes.\n\n---\n\n##  How To Customize\n\n- Swap AI model (OpenAI ↔ Gemini)  \n- Extend prompts to extract:\n  - Project  \n  - Cost center  \n  - Approval status  \n- Add tax codes, currency, or unit pricing  \n- Modify folder naming rules  \n- Insert approval steps before invoice creation  \n\n---\n\n##  Common Use Cases\n\n- Monthly contractor invoicing  \n- Agency billing across multiple clients  \n- Finance automation with audit-ready records  \n- Eliminating manual timesheet-to-invoice work  \n\n---\n\n##  Troubleshooting\n\n| Issue | Likely Cause |\n|------|-------------|\n| No invoices created | Gmail filter mismatch or email already read |\n| OCR output empty | Unsupported file or OCR endpoint issue |\n| Wrong month split | Review AI prompt and month logic |\n| Duplicate rows | Duplicate detection conditions |\n| Invoice missing in QuickBooks | Customer or item configuration issue |\n\n---\n\n##  Notes on Community Guidelines\n\n-  Sticky notes are used throughout the workflow  \n-  No hardcoded API keys are present  \n-  Markdown is used (no HTML tags)  \n-  This workflow is original and not copied  \n\n---\n\n##  Need Help or Customization?\n\n**Digital Biz Tech** can help tailor this workflow to your business.\n\nWe offer **free setup support**, including credential configuration and deployment.\n\nContact: [rajeet.nair@digitalbiz.tech](mailto:rajeet.nair@digitalbiz.tech)  \nWebsite: [https://www.digitalbiz.tech](https://www.digitalbiz.tech)  \nLinkedIn: [https://www.linkedin.com/company/digital-biz-tech/](https://www.linkedin.com/company/digital-biz-tech/)  \nYou can also DM us on LinkedIn for any help.\n \n\nYou can also DM us on LinkedIn.","workflow":{"meta":{"instanceId":"e4680277d6b9c8b80748f71c2c1d0f9a640576175738ea2675967f762eeaf9df"},"nodes":[{"id":"63cf5c9c-4716-4df7-ae3b-78b842fb9790","name":"QuickBooks Find Customer","type":"n8n-nodes-base.quickbooks","position":[800,560],"parameters":{"filters":{"query":"=WHERE DisplayName = '{{ $json[\"Customer Name\"] }}'"},"operation":"getAll","returnAll":"={{ $('Get row(s) in sheet').item.json[\"Customer Account Number\"] }}"},"credentials":{"quickBooksOAuth2Api":{"id":"xm0M17aV9m8oIJtz","name":"QuickBooks Online account"}},"typeVersion":1,"alwaysOutputData":true},{"id":"824b8f79-2364-4ac9-9d5c-bc224643f887","name":"If Customer Exists?","type":"n8n-nodes-base.if","position":[1040,560],"parameters":{"conditions":{"string":[{"value1":"={{ $('Get row(s) in sheet').item.json[\"Customer Account Number\"] }}","operation":"isEmpty"}],"boolean":[]}},"typeVersion":1},{"id":"5631c100-ef88-403a-8377-05490a67bf20","name":"QuickBooks Create Customer","type":"n8n-nodes-base.quickbooks","position":[1200,640],"parameters":{"operation":"create","displayName":"={{ $('Get row(s) in sheet').item.json[\"Customer Name\"] }}","additionalFields":{"CompanyName":"={{ $('Get row(s) in sheet').item.json[\"Company Name\"] }}","PrimaryEmailAddr":"={{ $('Get row(s) in sheet').item.json.Email }}"}},"credentials":{"quickBooksOAuth2Api":{"id":"xm0M17aV9m8oIJtz","name":"QuickBooks Online account"}},"typeVersion":1},{"id":"9baef671-798f-4609-b449-6571e6475ab2","name":"QuickBooks Create Invoice","type":"n8n-nodes-base.quickbooks","position":[1440,544],"parameters":{"Line":[{"Amount":"={{ $('Get row(s) in sheet').item.json.Quantity }}","itemId":"2","DetailType":"SalesItemLineDetail","Description":"={{ $('Get row(s) in sheet').item.json.Decription }}"}],"resource":"invoice","operation":"create","CustomerRef":"66","additionalFields":{"DueDate":"={{ $('Get row(s) in sheet').item.json[\"Due Date\"] }}","TxnDate":"={{ $('Get row(s) in sheet').item.json[\"Invoice Date\"] }}","TotalAmt":"={{ $('Get row(s) in sheet').item.json.Quantity }}","CustomFields":{"Field":[{"StringValue":"={{ $('Get row(s) in sheet').item.json[\"Customer Account Number\"] }}","DefinitionId":"=Customer Account Number"},{"StringValue":"={{ $('Get row(s) in sheet').item.json[\"PO Number\"] }}","DefinitionId":"=PO Number"}]}}},"credentials":{"quickBooksOAuth2Api":{"id":"xm0M17aV9m8oIJtz","name":"QuickBooks Online account"}},"typeVersion":1},{"id":"af5746bc-4efe-41b6-a97b-88cd82bb4179","name":"When clicking ‘Execute workflow’","type":"n8n-nodes-base.manualTrigger","position":[336,576],"parameters":{},"typeVersion":1},{"id":"d26d1afe-2855-45d7-8a7f-b64a3bbdec59","name":"Get row(s) in sheet","type":"n8n-nodes-base.googleSheets","position":[544,576],"parameters":{"sheetName":{"__rl":true,"mode":"list","value":"","cachedResultUrl":"","cachedResultName":""},"documentId":{"__rl":true,"mode":"id","value":"="}},"credentials":{"googleSheetsOAuth2Api":{"id":"LQLGajPqQsn4hG8L","name":"Google Sheets account 10"}},"typeVersion":4.7},{"id":"6f45dbb4-1214-406f-83b4-4b35deddd048","name":"Google Sheets2","type":"n8n-nodes-base.googleSheets","position":[-336,1008],"parameters":{"columns":{"value":{},"schema":[{"id":"Customer Account Number","type":"string","display":true,"removed":false,"required":false,"displayName":"Customer Account Number","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Invoice Date","type":"string","display":true,"removed":false,"required":false,"displayName":"Invoice Date","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Due Date","type":"string","display":true,"removed":false,"required":false,"displayName":"Due Date","defaultMatch":false,"canBeUsedToMatch":true},{"id":"PO Number","type":"string","display":true,"removed":false,"required":false,"displayName":"PO Number","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Item Column Title","type":"string","display":true,"removed":false,"required":false,"displayName":"Item Column Title","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Quantity Column","type":"string","display":true,"removed":false,"required":false,"displayName":"Quantity Column","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Item Name","type":"string","display":true,"removed":false,"required":false,"displayName":"Item Name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Quantity","type":"string","display":true,"removed":false,"required":false,"displayName":"Quantity","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Unit Price","type":"string","display":true,"removed":false,"required":false,"displayName":"Unit Price","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Decription","type":"string","display":true,"removed":false,"required":false,"displayName":"Decription","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"autoMapInputData","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"id","value":"={{ $('Google Sheets: Create Sheet').item.json.sheets[0].properties.sheetId }}"},"documentId":{"__rl":true,"mode":"id","value":"={{ $('Google Sheets: Create Sheet').item.json.spreadsheetId }}"}},"credentials":{"googleSheetsOAuth2Api":{"id":"LQLGajPqQsn4hG8L","name":"Google Sheets account 10"}},"executeOnce":true,"typeVersion":4.5,"alwaysOutputData":false},{"id":"ddc3111d-d7d6-4584-aa5a-ca7dbbd8be43","name":"Set: Spreadsheet  (ID & Name)","type":"n8n-nodes-base.set","position":[-176,1008],"parameters":{"options":{},"assignments":{"assignments":[{"id":"89af4fa2-04e9-4e86-90cd-805437cb96c4","name":"id","type":"string","value":"={{ $('Google Sheets: Create Sheet').item.json.spreadsheetId }}"},{"id":"6625391b-df04-4775-976d-baeb91ff083c","name":"name","type":"string","value":"={{ $('Google Sheets: Create Sheet').item.json.properties.title }}"}]}},"typeVersion":3.4},{"id":"6bed8bcb-6e1a-4beb-8cd1-789f2e9307d3","name":"Split Binary Attachments","type":"n8n-nodes-base.code","position":[-6016,976],"parameters":{"jsCode":"const newItems = [];\n\nconst binary = items[0].binary;\n\nfor (const key in binary) {\n  newItems.push({\n    json: {},\n    binary: {\n      [key]: binary[key]\n    }\n  });\n}\n\nreturn newItems;\n"},"typeVersion":2},{"id":"9eeae953-2664-4563-852f-79ef504e74be","name":"Loop: Process Each Attachment","type":"n8n-nodes-base.splitInBatches","position":[-5824,976],"parameters":{"options":{"reset":false}},"typeVersion":3,"alwaysOutputData":false},{"id":"00bf8cd1-98b1-45df-be2a-d072b30e58ed","name":"Wait1","type":"n8n-nodes-base.wait","position":[-3776,1104],"webhookId":"fb2df726-1ef6-469a-97ca-0735e2bbd051","parameters":{"amount":2},"typeVersion":1.1},{"id":"d550e8ef-80b3-45d1-a33a-da14d69bf7c6","name":"Split Each Month","type":"n8n-nodes-base.splitOut","position":[-4528,1008],"parameters":{"options":{},"fieldToSplitOut":"months"},"typeVersion":1},{"id":"f7fbe95e-06e7-4987-859e-7c50bdbc3044","name":"Map Timesheet Fields","type":"n8n-nodes-base.set","position":[-3552,976],"parameters":{"options":{},"assignments":{"assignments":[{"id":"44bad27c-2c1d-46c7-9c60-d3a32b494a14","name":"Employee Name","type":"string","value":"={{$('AI Agent').item.json.output.parseJson()['Employee Name'] }}"},{"id":"d5a52d08-8226-45bd-904a-82e03d1d2dba","name":"Month","type":"string","value":"={{ $json.month }}\n"},{"id":"d0210ffe-0b19-4d18-9209-06257c9ab373","name":"Total Hours","type":"string","value":"={{ $json['Total Hours'] }}\n"},{"id":"b5a64a37-8d6a-4040-bd07-b51fd15ba95b","name":"Week Starting Date","type":"string","value":"={{ $json['Week Starting Date'] }}"},{"id":"c2ad96d6-deea-4869-995a-f5c580dbff76","name":"Week Ending Date","type":"string","value":"={{ $json['Week Ending Date'] }}"},{"id":"00c459ba-b762-4337-8258-63d6fe56e370","name":"Year","type":"string","value":"={{ $json.year }}"},{"id":"79c4a9c7-c6b6-49bb-a0da-764b64ab11c7","name":"Client Name","type":"string","value":"={{ $('AI Agent').item.json.output.parseJson().Client}}"}]}},"typeVersion":3.4},{"id":"79340f4e-1b4c-4ef2-9ed8-43078f44cee9","name":"Check for Duplicate Entry","type":"n8n-nodes-base.googleSheets","position":[-848,656],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"=Week ending date {{ $('Map Timesheet Fields').all()[0].json['Week Ending Date'] }}","lookupColumn":"Decription"}]},"sheetName":{"__rl":true,"mode":"name","value":"Sheet1"},"documentId":{"__rl":true,"mode":"id","value":"={{ $json.id }}"}},"credentials":{"googleSheetsOAuth2Api":{"id":"LQLGajPqQsn4hG8L","name":"Google Sheets account 10"}},"typeVersion":4.5,"alwaysOutputData":true},{"id":"ca4d60a4-0ac4-4c96-a90f-3cbf5416d9f5","name":"Skip If Duplicate Found","type":"n8n-nodes-base.if","position":[-416,304],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"b04fdc75-0d03-41b8-be76-7ed057d2087e","operator":{"type":"string","operation":"exists","singleValue":true},"leftValue":"={{ $json.Decription }}","rightValue":""}]}},"typeVersion":2.2},{"id":"c58f4511-32e8-4927-931c-d04dd3b13e0d","name":"Create Sheet Name + Invoice Date","type":"n8n-nodes-base.set","position":[-3376,976],"parameters":{"options":{},"assignments":{"assignments":[{"id":"ec172078-ec0e-4c75-b7aa-945b0a6259d8","name":"Sheet Name","type":"string","value":"={{$('Map Timesheet Fields').item.json['Employee Name'].trim().replace(/\\s/g, \"\") + \"_\" + $('Map Timesheet Fields').item.json.Month.trim().replace(/\\s/g, \"\") + \"_\" + new Date().getFullYear() }}\n\n\n"},{"id":"525e1d85-c316-4cee-90b8-21859c33633d","name":"last date of current month","type":"string","value":"={{ \n  (() => {\n    const monthMap = {\n      January: 0, February: 1, March: 2, April: 3, May: 4, June: 5,\n      July: 6, August: 7, September: 8, October: 9, November: 10, December: 11,\n    };\n    const rawMonth = $json['month'] || $json['Month'] || '';\n    const monthStr = rawMonth.toString().trim().replace(/\\s+/g, ' ');\n    const rawYear = $json['year'] || $json['Year'] || '';\n    const year = Number(rawYear);\n    const monthIndex = monthMap[monthStr];\n\n    if (monthIndex === undefined || isNaN(year)) {\n      return `Invalid input: month='${monthStr}', year='${rawYear}'`;\n    }\n\n    // Use Date.UTC to calculate last day reliably\n    const lastDay = new Date(Date.UTC(year, monthIndex + 1, 0));\n    return lastDay.toISOString().split('T')[0];\n  })() \n}}\n"}]}},"typeVersion":3.4},{"id":"cf4dbbbc-da9e-4fb6-bf6c-fde9551cdd1a","name":"Google Sheets: Create Sheet","type":"n8n-nodes-base.googleSheets","position":[-912,1008],"parameters":{"title":"={{ $('Create Sheet Name + Invoice Date').all()[0].json['Sheet Name'] }}","options":{},"resource":"spreadsheet","sheetsUi":{"sheetValues":[{"title":"=Sheet1"}]}},"credentials":{"googleSheetsOAuth2Api":{"id":"LQLGajPqQsn4hG8L","name":"Google Sheets account 10"}},"typeVersion":4.5,"alwaysOutputData":true},{"id":"299e9fe2-4e19-4a2a-b5d5-27379df97ee3","name":"Move Sheet to Invoice Folder","type":"n8n-nodes-base.googleDrive","position":[-752,1008],"parameters":{"fileId":{"__rl":true,"mode":"id","value":"={{ $json.spreadsheetId }}"},"driveId":{"__rl":true,"mode":"list","value":"My Drive","cachedResultUrl":"https://drive.google.com/drive/my-drive","cachedResultName":"My Drive"},"folderId":{"__rl":true,"mode":"id","value":"={{ $('Check if Year Folder Exists').item.json.id || $('Create Current Year Folder').item.json.id }}"},"operation":"move"},"credentials":{"googleDriveOAuth2Api":{"id":"xS6kSuLaEkasxHtm","name":"Google Drive account 6 rn dbt"}},"typeVersion":3},{"id":"6ae2aa39-41bd-4cca-9ea6-2647e9457828","name":"Prepare Default Invoice Row","type":"n8n-nodes-base.set","position":[-576,1008],"parameters":{"mode":"raw","options":{"dotNotation":false},"jsonOutput":"{\n  \"Customer Account Number\": \"\",\n   \"Invoice Date\": \"\",\n  \"Due Date\": \"\",\n   \"PO Number\": \"\",\n  \"Item Column Title\":\"\",\n  \"Quantity Column\":\"\",\n  \"Item Name\":\"\",\n  \"Quantity\" :\"\",\n  \"Unit Price\":\"\",\n  \"Decription\" :\"\"\n  \n  }\n"},"executeOnce":true,"typeVersion":3.4},{"id":"545e30b1-4364-4b40-80fe-62b4c3ca1154","name":"If- File is Exist","type":"n8n-nodes-base.if","position":[-1152,896],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"768e3b62-b460-4845-abce-3e2058826a7a","operator":{"type":"string","operation":"exists","singleValue":true},"leftValue":"={{ $json.id }}","rightValue":"=\n"}]}},"executeOnce":false,"typeVersion":2.2,"alwaysOutputData":false},{"id":"c45ee3be-8041-4bf0-b5d2-96a8d1c9c11b","name":"If1","type":"n8n-nodes-base.if","position":[-4288,1008],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"loose"},"combinator":"and","conditions":[{"id":"aa59ebe3-e51a-45ae-a3e0-2dfee0fba40c","operator":{"type":"string","operation":"notEquals"},"leftValue":"={{ $json['Total Hours'] }}","rightValue":"0"},{"id":"0a8ff7ab-4a71-4e83-b5e1-a99516b63846","operator":{"type":"string","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json.month }}","rightValue":""}]},"looseTypeValidation":true},"typeVersion":2.2},{"id":"01043fa6-1302-4d27-81f3-47da4ce1b354","name":"Search: Client Invoices Folder","type":"n8n-nodes-base.googleDrive","position":[-2816,976],"parameters":{"filter":{"driveId":{"mode":"list","value":"My Drive"}},"options":{},"resource":"fileFolder","returnAll":true,"queryString":"=01-ClientInvoices"},"credentials":{"googleDriveOAuth2Api":{"id":"xS6kSuLaEkasxHtm","name":"Google Drive account 6 rn dbt"}},"typeVersion":3,"alwaysOutputData":true},{"id":"b49931f5-da60-4a6d-a30d-b745c90c58f3","name":"Search: Employee Name Folder","type":"n8n-nodes-base.googleDrive","position":[-2624,976],"parameters":{"filter":{"driveId":{"mode":"list","value":"My Drive"},"folderId":{"__rl":true,"mode":"id","value":"={{ $json.id }}"},"whatToSearch":"folders"},"options":{},"resource":"fileFolder","returnAll":true,"queryString":"={{ $('Map Timesheet Fields').item.json['Employee Name'] }}"},"credentials":{"googleDriveOAuth2Api":{"id":"xS6kSuLaEkasxHtm","name":"Google Drive account 6 rn dbt"}},"typeVersion":3,"alwaysOutputData":true},{"id":"7c165cf2-e64e-4791-97be-d00f61b90865","name":"Check Employee Name Folder","type":"n8n-nodes-base.if","position":[-2384,960],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"e4d2d3f6-4fff-473b-9dd6-27bb19e8ce67","operator":{"type":"string","operation":"exists","singleValue":true},"leftValue":"={{ $json.id }}","rightValue":""}]}},"typeVersion":2.2},{"id":"578cd5d9-9076-4d24-9484-29a85ffc86ae","name":"Search: Inside folders in Employee Name Folder","type":"n8n-nodes-base.googleDrive","position":[-2192,752],"parameters":{"filter":{"driveId":{"mode":"list","value":"My Drive"},"folderId":{"__rl":true,"mode":"id","value":"={{ $json.id }}"},"whatToSearch":"folders"},"options":{},"resource":"fileFolder","returnAll":true,"queryString":"="},"credentials":{"googleDriveOAuth2Api":{"id":"xS6kSuLaEkasxHtm","name":"Google Drive account 6 rn dbt"}},"typeVersion":3,"alwaysOutputData":true},{"id":"881e94d5-7603-4760-bc81-267ceece9a0d","name":"Search: Year Folder ","type":"n8n-nodes-base.googleDrive","position":[-1856,752],"parameters":{"filter":{"folderId":{"__rl":true,"mode":"id","value":"={{ $('Search: Inside folders in Employee Name Folder').first().json.id }}"},"whatToSearch":"folders"},"options":{},"resource":"fileFolder","returnAll":true,"queryString":"={{ $('Map Timesheet Fields').item.json.Year }}"},"credentials":{"googleDriveOAuth2Api":{"id":"xS6kSuLaEkasxHtm","name":"Google Drive account 6 rn dbt"}},"typeVersion":3,"alwaysOutputData":true},{"id":"c846f0de-015b-4326-88dc-b96a9da139d6","name":"Search: folder name","type":"n8n-nodes-base.googleDrive","position":[-2016,752],"parameters":{"filter":{"folderId":{"__rl":true,"mode":"id","value":"={{ $json.id }}"}},"options":{},"resource":"fileFolder","returnAll":true,"queryString":"={{ $('Get Customer Info From PO Sheet').item.json['Folder Name'] }}"},"credentials":{"googleDriveOAuth2Api":{"id":"xS6kSuLaEkasxHtm","name":"Google Drive account 6 rn dbt"}},"typeVersion":3,"alwaysOutputData":true},{"id":"64a8e2e8-20ec-406c-8ec9-d656239be9a0","name":"Check if Year Folder Exists","type":"n8n-nodes-base.if","position":[-1648,912],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"daebe4a7-edcf-4902-a5d7-6c6b4ad995c8","operator":{"type":"string","operation":"exists","singleValue":true},"leftValue":"={{ $json.id }}","rightValue":""}]},"looseTypeValidation":"={{ false }}"},"typeVersion":2.2},{"id":"d61eefea-4d26-4e1f-b728-f497088fa9bb","name":"Create Current Year Folder","type":"n8n-nodes-base.googleDrive","position":[-1488,1104],"parameters":{"name":"={{ $('Map Timesheet Fields').item.json.Year }}","driveId":{"__rl":true,"mode":"list","value":"My Drive"},"options":{},"folderId":{"__rl":true,"mode":"id","value":"={{ $('Search: folder name').item.json.id  }}"},"resource":"folder"},"credentials":{"googleDriveOAuth2Api":{"id":"xS6kSuLaEkasxHtm","name":"Google Drive account 6 rn dbt"}},"typeVersion":3},{"id":"5ab2c35e-ee0c-41b7-9ed3-419e97eb9373","name":"Create Employee Name Folder","type":"n8n-nodes-base.googleDrive","position":[-2192,1088],"parameters":{"name":"={{ $('Map Timesheet Fields').item.json['Employee Name'] }}","driveId":{"__rl":true,"mode":"list","value":"My Drive"},"options":{},"folderId":{"__rl":true,"mode":"id","value":"={{ $('Search: Client Invoices Folder').item.json.id }}"},"resource":"folder"},"credentials":{"googleDriveOAuth2Api":{"id":"xS6kSuLaEkasxHtm","name":"Google Drive account 6 rn dbt"}},"typeVersion":3},{"id":"a061431a-a11f-4f4a-a4a1-30efbca9a210","name":"Google Drive","type":"n8n-nodes-base.googleDrive","position":[-1328,896],"parameters":{"filter":{"driveId":{"mode":"list","value":"My Drive"},"folderId":{"__rl":true,"mode":"id","value":"={{ $json.id }}"}},"options":{},"resource":"fileFolder","returnAll":true,"queryString":"={{ $('Create Sheet Name + Invoice Date').all()[0].json['Sheet Name']}}"},"credentials":{"googleDriveOAuth2Api":{"id":"xS6kSuLaEkasxHtm","name":"Google Drive account 6 rn dbt"}},"typeVersion":3,"alwaysOutputData":true},{"id":"a41d897b-d740-4ab7-93c5-7b70670fe053","name":"Get Customer Info From PO Sheet","type":"n8n-nodes-base.googleSheets","position":[-3104,976],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"={{ $('Gmail Trigger').item.json.from.value[0].address }}","lookupColumn":"Email"}]},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/11iUiyjpjaz6pNtSSncU3hwPvBzI5y2Gp8Tvuamjkd98/edit#gid=0","cachedResultName":"Sheet1"},"documentId":{"__rl":true,"mode":"url","value":"="}},"credentials":{"googleSheetsOAuth2Api":{"id":"LQLGajPqQsn4hG8L","name":"Google Sheets account 10"}},"typeVersion":4.5,"alwaysOutputData":true},{"id":"98b4e74d-201a-4ef0-a3fd-04cfb33dc04f","name":"Create  Folder Name","type":"n8n-nodes-base.googleDrive","position":[-2000,1088],"parameters":{"name":"={{ $('Get Customer Info From PO Sheet').item.json['Folder Name']}}","driveId":{"__rl":true,"mode":"list","value":"My Drive"},"options":{},"folderId":{"__rl":true,"mode":"id","value":"={{ $json.id }}"},"resource":"folder"},"credentials":{"googleDriveOAuth2Api":{"id":"xS6kSuLaEkasxHtm","name":"Google Drive account 6 rn dbt"}},"typeVersion":3,"alwaysOutputData":true},{"id":"ccaf9ebe-7669-4e85-b6f7-aa71f80e2f04","name":"Create: Year Folder","type":"n8n-nodes-base.googleDrive","position":[-1808,1088],"parameters":{"name":"={{ $('Map Timesheet Fields').item.json.Year }}","driveId":{"__rl":true,"mode":"list","value":"My Drive"},"options":{},"folderId":{"__rl":true,"mode":"id","value":"={{ $json.id }}"},"resource":"folder"},"credentials":{"googleDriveOAuth2Api":{"id":"xS6kSuLaEkasxHtm","name":"Google Drive account 6 rn dbt"}},"typeVersion":3,"alwaysOutputData":true},{"id":"5247b9d6-2020-43cc-8aab-2841b46959ac","name":"Prepare Month array","type":"n8n-nodes-base.set","position":[-4720,1008],"parameters":{"options":{"ignoreConversionErrors":true},"assignments":{"assignments":[{"id":"6a337e56-3cd4-46c4-aeb9-a9273bd34a3e","name":"months","type":"array","value":"={{ JSON.stringify([ $json.output.parseJson().month1, $json.output.parseJson().month2 ]) }}"},{"id":"3d2cb537-6a4c-4ed1-b8cc-8b1d02af794d","name":"Target month1","type":"string","value":"={{ $json.output.parseJson().month1['Week Starting Date'].split(\"/\")[0] }}\n"}]}},"typeVersion":3.4},{"id":"96f8a4a0-74f0-4560-8715-ca8e65d24cee","name":"Gmail Trigger","type":"n8n-nodes-base.gmailTrigger","position":[-6208,976],"parameters":{"simple":false,"filters":{"q":"=has:attachment (subject:\"Casper timesheet\" OR subject:\"Timesheets\")\n\n","readStatus":"read"},"options":{"downloadAttachments":true},"pollTimes":{"item":[{"mode":"everyMinute"}]}},"credentials":{"gmailOAuth2":{"id":"GjmgJcRU3g4v3mEv","name":"Gmail account 5"}},"typeVersion":1.2},{"id":"d37d5a91-7b2d-4413-93f2-40d38ebb1ea7","name":"Wait","type":"n8n-nodes-base.wait","position":[-5600,992],"webhookId":"7bbe4025-cd13-4ac9-8c02-4eeb10699ab2","parameters":{"amount":3},"typeVersion":1.1},{"id":"086786c5-2c56-4825-b13d-ec21e1bfe27f","name":"Extract Text ","type":"n8n-nodes-base.httpRequest","position":[-5408,992],"parameters":{"url":"https://universal-file-to-text-extractor.vercel.app/extract","method":"POST","options":{},"sendBody":true,"contentType":"multipart-form-data","bodyParameters":{"parameters":[{"name":"mode","value":"single"},{"name":"output_type","value":"text"},{"name":"files","parameterType":"formBinaryData","inputDataFieldName":"={{ Object.keys($binary)[0] }}"}]}},"typeVersion":4.2},{"id":"fbc92283-dbe1-41bb-8b2f-3425269c21c9","name":"Skip January First Time","type":"n8n-nodes-base.if","position":[-640,656],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"loose"},"combinator":"and","conditions":[{"id":"e01b225a-7c1a-499d-9fbd-ad7e61de8af1","operator":{"type":"number","operation":"equals"},"leftValue":"={{ parseInt($json[\"Invoice Date\"].split(\"-\")[0].trim()) }}\n","rightValue":"=1"}]},"looseTypeValidation":true},"typeVersion":2.2},{"id":"f937eb18-5d75-4eab-82b3-234a9e3e4191","name":"Delete Exiting Row","type":"n8n-nodes-base.googleSheets","position":[-448,640],"parameters":{"operation":"delete","sheetName":{"__rl":true,"mode":"name","value":"Sheet1"},"documentId":{"__rl":true,"mode":"id","value":"={{ $('If- File is Exist').item.json.id }}"}},"credentials":{"googleSheetsOAuth2Api":{"id":"LQLGajPqQsn4hG8L","name":"Google Sheets account 10"}},"typeVersion":4.5},{"id":"2ae397aa-f08d-47f7-8a85-f4f3a5302f43","name":"OpenAI Chat Model1","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-5408,1280],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4","cachedResultName":"gpt-4"},"options":{}},"typeVersion":1.2},{"id":"ef7c089b-bfc0-408d-b02a-9561c70c01c4","name":"AI Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[-5120,1008],"parameters":{"text":"=Extract data **only** from the BILLABLE HOURS or DAYS section.\n\nIgnore:\n- “Period Ending”, signature dates, headers, or footers\n- NON-BILLABLE, HOLIDAY, LEAVE, or any other unrelated sections\n\n- extract billable hours data and working hours **month by month**, with the following fields:\n\nFor each month found in the BILLABLE HOURS row, return:\n- \"month\": Full month name (e.g., July)\n- \"year\": 4-digit year\n- \"Week Starting Date\": First date in that month from the BILLABLE HOURS row (even if hours = 0), format: MM/DD/YYYY\n- \"Week Ending Date\": Last date in that month from the BILLABLE HOURS row (even if hours = 0), format: MM/DD/YYYY\n- \"Total Hours\": Sum of billable hours for that month (use only the “Total Billable hours/days” row)\n\nSpecial Handling for Split Weeks:\n- If a week includes dates across two months (e.g., Jun-30 to Jul-6), split them by month.\n- Each month should contain **only its own dates and billable hours**.\n\n Do not skip a month just because hours are 0 — still include the correct week start/end dates and `\"Total Hours\": 0`.\n\n Do not guess or assume any dates not clearly listed in the BILLABLE HOURS section.\n\n---\n\nExample:\nIf the BILLABLE HOURS row shows:  \n`Jun-30 Jul-1 Jul-2 Jul-3 Jul-4 Jul-5 Jul-6`  \nAnd only Jun-30 has hours:\n\nReturn:\n\n{\n  \"Employee Name\": \"Ravi Katta\",\n \"Manager Name\": \"\",\n \"Client\": \"\",\n  \"month1\": {\n    \"month\": \"June\",\n    \"year\": 2025,\n    \"Week Starting Date\": \"06/30/2025\",\n    \"Week Ending Date\": \"06/30/2025\",\n    \"Total Hours\": \n  },\n  \"month2\": {\n    \"month\": \"July\",\n    \"year\": 2025,\n    \"Week Starting Date\": \"07/01/2025\",\n    \"Week Ending Date\": \"07/06/2025\",\n    \"Total Hours\": \n  }\n}\n\nRemember this most importantly, Return only valid JSON. Do not wrap the JSON in markdown code fences (no ```json) or no use of ``` in the output.\n\n{{ $json.data[0].text }}","options":{},"promptType":"define"},"typeVersion":1.9},{"id":"7c696a0c-e31d-4531-b9c4-3d02d2127d3c","name":"Google Gemini Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","position":[-5136,1264],"parameters":{"options":{"temperature":0.2}},"credentials":{"googlePalmApi":{"id":"B9ddrzjSHIWASzvB","name":"Google Gemini(PaLM) Api account 2"}},"typeVersion":1},{"id":"0e4a28e4-5647-4aaf-b361-45378123a7a5","name":" Sheets: Append Row1","type":"n8n-nodes-base.googleSheets","position":[96,96],"parameters":{"columns":{"value":{"Due Date":"={{ $('Create Sheet Name + Invoice Date').all()[0].json['last date of current month'].trim().toDateTime().plus($('Get Customer Info From PO Sheet').all()[0].json['Due Date Calculation'],'days').format('MM-dd-yyyy') }}","Quantity":"={{ $('Loop Over Items').item.json['Total Hours']}}","Item Name":"={{ $('Get Customer Info From PO Sheet').item.json.Item }}","PO Number":"={{ $('Get Customer Info From PO Sheet').item.json['PO Number'] }}","Invoice Date":"={{ $('Create Sheet Name + Invoice Date').all()[0].json['last date of current month'].toDateTime().format('MM-dd-yyyy') }}","Quantity Column":"Hours","Item Column Title":"Items","Customer Account Number":"={{ $('Get Customer Info From PO Sheet').item.json['Customer Account Number'] }}"},"schema":[{"id":"Customer Account Number","type":"string","display":true,"removed":false,"required":false,"displayName":"Customer Account Number","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Invoice Date","type":"string","display":true,"removed":false,"required":false,"displayName":"Invoice Date","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Due Date","type":"string","display":true,"removed":false,"required":false,"displayName":"Due Date","defaultMatch":false,"canBeUsedToMatch":true},{"id":"PO Number","type":"string","display":true,"removed":false,"required":false,"displayName":"PO Number","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Item Column Title","type":"string","display":true,"removed":false,"required":false,"displayName":"Item Column Title","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Quantity Column","type":"string","display":true,"removed":false,"required":false,"displayName":"Quantity Column","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Item Name","type":"string","display":true,"removed":false,"required":false,"displayName":"Item Name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Quantity","type":"string","display":true,"removed":false,"required":false,"displayName":"Quantity","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Unit Price","type":"string","display":true,"removed":false,"required":false,"displayName":"Unit Price","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Decription","type":"string","display":true,"removed":false,"required":false,"displayName":"Decription","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"name","value":"Sheet1"},"documentId":{"__rl":true,"mode":"id","value":"={{ $json.id ||$('If- File is Exist').item.json.id }}"}},"credentials":{"googleSheetsOAuth2Api":{"id":"LQLGajPqQsn4hG8L","name":"Google Sheets account 10"}},"typeVersion":4.5,"alwaysOutputData":false},{"id":"667a45ae-b9c7-40f5-8521-524267e29ccd","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-5488,848],"parameters":{"color":7,"width":272,"height":304,"content":"## OCR extraction\nSends each attachment to the OCR API and returns plain text. This turns PDFs and images into machine readable text before AI parsing.\n"},"typeVersion":1},{"id":"2b5a9a12-f3c4-4215-8eb2-040b60735ad6","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-960,880],"parameters":{"color":7,"width":512,"height":320,"content":"## Build invoice dates\nCalculates the invoice date and due date using the timesheet's week end date and PO due date rules. Outputs clean fields used to name and populate the invoice sheet.\n"},"typeVersion":1},{"id":"4c4eb027-fc39-4092-88f9-127a70dc1a35","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-1584,1040],"parameters":{"color":7,"width":304,"height":224,"content":"## create new year folder"},"typeVersion":1},{"id":"96c97c10-93c6-40ad-95a2-8577fad99708","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-4752,864],"parameters":{"color":7,"width":400,"height":336,"content":"## normalize and extract timesheet month\nPrepare Month array and extract month number and split based on month\n\n"},"typeVersion":1},{"id":"8b01a523-8db2-423c-9552-2db9864b0f75","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[-6256,864],"parameters":{"color":7,"width":624,"height":320,"content":"## Email intake and loop\nListens to Gmail for unread timesheet emails, splits all attachments, and processes each one in a loop so multiple timesheets in the same email are handled independently.\n"},"typeVersion":1},{"id":"659bc6b3-b974-422b-9da3-db6b9bb1cfda","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[-7408,304],"parameters":{"width":976,"height":992,"content":"## How it works\n\nThe workflow automates extracting timesheet data, organizing files, and syncing invoices to QuickBooks.\n\n1. Text extraction\nSplits attachments and sends them to an OCR API to convert PDFs or images into raw text.\n\n2. AI parsing\nGoogle Gemini analyzes the text to extract:\nEmployee and Client names\nTotal billable hours\nWeek start and end dates\nLogic to split weeks spanning two months\n\n3. Data lookup\nReferences your Customer POs Sheet to retrieve:\nPO and Account numbers\nItem details\nInvoice due date rules\n\n4. Drive folder logic\nLocates or creates a strict hierarchy inside 01-ClientInvoices:\nClient folder\nEmployee folder\nYear folder\n\n5. Sheet handling\nValidates data against existing records to prevent duplicates.\nAppends rows to existing monthly sheets, or\nCreates, names, and moves new sheets if necessary.\n\n6. QuickBooks sync\nFinalizes the process by:\nFinding or creating the Customer profile\nGenerating the Invoice with mapped fields\n\n## Setup steps\n\nConnect Drive, Sheets, Gmail, QuickBooks, and Gemini.\n\nUpdate the Master Sheet ID.\n\nCreate the 01-ClientInvoices root folder.\n\nVerify the OCR API URL.\n\nTest the duplicate check logic.\n"},"typeVersion":1},{"id":"5e8281df-c3d9-4b6e-8ae2-ce62a29494a7","name":"Sticky Note8","type":"n8n-nodes-base.stickyNote","position":[-3200,784],"parameters":{"color":7,"width":304,"height":352,"content":"## Customer and PO lookup\nLooks up the sender in the Customer POs sheet and pulls account number, PO number, item name, folder name, invoice range, and due date offset that drive the invoice logic.\n"},"typeVersion":1},{"id":"1dba7598-ddb3-4042-9ac1-8aceacb63082","name":"Sticky Note9","type":"n8n-nodes-base.stickyNote","position":[-5184,848],"parameters":{"color":7,"width":352,"height":304,"content":"## AI timesheet parsing\nOpenAI reads the timesheet text and extracts employee name, client name, week start and end dates, total hours, and current year into clean JSON fields for later use.\n"},"typeVersion":1},{"id":"42f7105c-2a3c-45d8-8c5c-5ba5f65715b9","name":"Sticky Note10","type":"n8n-nodes-base.stickyNote","position":[-2864,800],"parameters":{"color":7,"width":384,"height":336,"content":"## Client folder discovery\nSearch Client Invoices folder, finds or creates the client level folder based on the timesheet client name and PO configuration.\n"},"typeVersion":1},{"id":"df6ef1e4-208d-405c-a24e-a23ef85bddfd","name":"Sticky Note11","type":"n8n-nodes-base.stickyNote","position":[-2256,656],"parameters":{"color":7,"width":592,"height":272,"content":"## ## File naming and search\n searches Drive for existing sheets with the employee and if it exist get that year's folder"},"typeVersion":1},{"id":"8fb091c3-7411-46a9-a8c8-d224868e0626","name":"Sticky Note12","type":"n8n-nodes-base.stickyNote","position":[-2224,1008],"parameters":{"color":7,"width":528,"height":224,"content":"## Create new \ncreate new client name, employee and year named folder\n"},"typeVersion":1},{"id":"fc930765-6cc7-4f8b-b765-4bd6bff0c615","name":"Sticky Note14","type":"n8n-nodes-base.stickyNote","position":[-912,512],"parameters":{"color":7,"width":432,"height":304,"content":"## check for duplicate and  Skip January First Time  (first week of the year)\n\n"},"typeVersion":1},{"id":"30152731-a8f7-4e47-a20a-f137292d4b1e","name":"Sticky Note15","type":"n8n-nodes-base.stickyNote","position":[-496,176],"parameters":{"color":7,"width":272,"height":288,"content":"## skip if duplicate is found \n"},"typeVersion":1},{"id":"b49aa34b-7bfb-485b-9a27-804fcf2df6ba","name":"Sticky Note16","type":"n8n-nodes-base.stickyNote","position":[0,0],"parameters":{"color":7,"width":272,"height":288,"content":"## add extracted data to sheets\n"},"typeVersion":1},{"id":"de96bd29-001c-4246-9de0-582591cbdc05","name":"Sticky Note17","type":"n8n-nodes-base.stickyNote","position":[-368,880],"parameters":{"color":7,"width":304,"height":288,"content":"## add extracted data to sheets\n"},"typeVersion":1},{"id":"4be99b7f-8240-4bfd-b8dc-123a02acf23e","name":"Sticky Note19","type":"n8n-nodes-base.stickyNote","position":[480,400],"parameters":{"color":7,"height":336,"content":"## get data from sheets\nextracted data  from sheets\n"},"typeVersion":1},{"id":"b0438dc1-aff9-41ba-b5bb-2109eddbade9","name":"Sticky Note20","type":"n8n-nodes-base.stickyNote","position":[736,400],"parameters":{"color":7,"height":368,"content":"## quickbooks customer info \nfrom quickbooks find customer info that match customer name in sheets\n"},"typeVersion":1},{"id":"e372d633-d563-49b2-b3d5-1e3124d47ff1","name":"Sticky Note21","type":"n8n-nodes-base.stickyNote","position":[1024,400],"parameters":{"color":7,"width":304,"height":384,"content":"## check if customer exists\n\nif exists continue else add new customer  info\n"},"typeVersion":1},{"id":"3999e083-c5aa-4137-9de9-548600dccd8b","name":"Sticky Note22","type":"n8n-nodes-base.stickyNote","position":[1360,400],"parameters":{"color":7,"width":304,"height":384,"content":"## add data into Quickbooks\nadd data from sheets into Quickbooks invoice "},"typeVersion":1},{"id":"886452e2-7474-43ff-9ae4-dedaffd60096","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-4032,832],"parameters":{"color":7,"width":784,"height":384,"content":"## check occurrence than map the data\ncheck  If: First Time This Month? and than map the extracted data   and create sheet +invoice date\n"},"typeVersion":1},{"id":"4f92a871-716d-4247-be9f-d30f1f80c56f","name":"If: First Time This Month?","type":"n8n-nodes-base.if","position":[-4000,992],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"54fd631e-bb84-4d4d-a59f-325325d99a5a","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json['Week Starting Date'].split(\"/\")[0] }}\n","rightValue":"={{ $('Prepare Month array').item.json['Target month1'] }}"}]}},"typeVersion":2.2}],"pinData":{"AI Agent":[{"output":"{\n  \"Employee Name\": \"Lekhya Reddy Mudda\",\n  \"Manager Name\": \"Vish Aiyah\",\n  \"Client\": \"Wine Direct\",\n  \"month1\": {\n    \"month\": \"July\",\n    \"year\": 2025,\n    \"Week Starting Date\": \"07/16/2025\",\n    \"Week Ending Date\": \"07/31/2025\",\n    \"Total Hours\": 96.00\n  }\n}"}]},"connections":{"If1":{"main":[[{"node":"If: First Time This Month?","type":"main","index":0}]]},"Wait":{"main":[[{"node":"Extract Text ","type":"main","index":0}]]},"Wait1":{"main":[[{"node":"Map Timesheet Fields","type":"main","index":0}]]},"AI Agent":{"main":[[{"node":"Prepare Month array","type":"main","index":0}]]},"Google Drive":{"main":[[{"node":"If- File is Exist","type":"main","index":0}]]},"Extract Text ":{"main":[[{"node":"AI Agent","type":"main","index":0}]]},"Gmail Trigger":{"main":[[{"node":"Split Binary Attachments","type":"main","index":0}]]},"Google Sheets2":{"main":[[{"node":"Set: Spreadsheet  (ID & Name)","type":"main","index":0}]]},"Split Each Month":{"main":[[{"node":"If1","type":"main","index":0}]]},"If- File is Exist":{"main":[[{"node":"Check for Duplicate Entry","type":"main","index":0}],[{"node":"Google Sheets: Create Sheet","type":"main","index":0}]]},"Delete Exiting Row":{"main":[[{"node":" Sheets: Append Row1","type":"main","index":0}]]},"Create  Folder Name":{"main":[[{"node":"Create: Year Folder","type":"main","index":0}]]},"Create: Year Folder":{"main":[[{"node":"Check if Year Folder Exists","type":"main","index":0}]]},"Get row(s) in sheet":{"main":[[{"node":"QuickBooks Find Customer","type":"main","index":0}]]},"If Customer Exists?":{"main":[[{"node":"QuickBooks Create Invoice","type":"main","index":0}],[{"node":"QuickBooks Create Customer","type":"main","index":0}]]},"Prepare Month array":{"main":[[{"node":"Split Each Month","type":"main","index":0}]]},"Search: folder name":{"main":[[{"node":"Search: Year Folder ","type":"main","index":0}]]}," Sheets: Append Row1":{"main":[[{"node":"Loop: Process Each Attachment","type":"main","index":0}]]},"Map Timesheet Fields":{"main":[[{"node":"Create Sheet Name + Invoice Date","type":"main","index":0}]]},"Search: Year Folder ":{"main":[[{"node":"Check if Year Folder Exists","type":"main","index":0}]]},"Skip If Duplicate Found":{"main":[[{"node":"Loop: Process Each Attachment","type":"main","index":0}],[{"node":" Sheets: Append Row1","type":"main","index":0}]]},"Skip January First Time":{"main":[[{"node":"Delete Exiting Row","type":"main","index":0}],[{"node":"Skip If Duplicate Found","type":"main","index":0}]]},"Google Gemini Chat Model":{"ai_languageModel":[[{"node":"AI Agent","type":"ai_languageModel","index":0}]]},"QuickBooks Find Customer":{"main":[[{"node":"If Customer Exists?","type":"main","index":0}]]},"Split Binary Attachments":{"main":[[{"node":"Loop: Process Each Attachment","type":"main","index":0}]]},"Check for Duplicate Entry":{"main":[[{"node":"Skip January First Time","type":"main","index":0}]]},"Check Employee Name Folder":{"main":[[{"node":"Search: Inside folders in Employee Name Folder","type":"main","index":0}],[{"node":"Create Employee Name Folder","type":"main","index":0}]]},"Create Current Year Folder":{"main":[[{"node":"Google Drive","type":"main","index":0}]]},"If: First Time This Month?":{"main":[[{"node":"Map Timesheet Fields","type":"main","index":0}],[{"node":"Wait1","type":"main","index":0}]]},"QuickBooks Create Customer":{"main":[[{"node":"QuickBooks Create Invoice","type":"main","index":0}]]},"Check if Year Folder Exists":{"main":[[{"node":"Google Drive","type":"main","index":0}],[{"node":"Create Current Year Folder","type":"main","index":0}]]},"Create Employee Name Folder":{"main":[[{"node":"Create  Folder Name","type":"main","index":0}]]},"Google Sheets: Create Sheet":{"main":[[{"node":"Move Sheet to Invoice Folder","type":"main","index":0}]]},"Prepare Default Invoice Row":{"main":[[{"node":"Google Sheets2","type":"main","index":0}]]},"Move Sheet to Invoice Folder":{"main":[[{"node":"Prepare Default Invoice Row","type":"main","index":0}]]},"Search: Employee Name Folder":{"main":[[{"node":"Check Employee Name Folder","type":"main","index":0}]]},"Loop: Process Each Attachment":{"main":[[],[{"node":"Wait","type":"main","index":0}]]},"Set: Spreadsheet  (ID & Name)":{"main":[[{"node":" Sheets: Append Row1","type":"main","index":0}]]},"Search: Client Invoices Folder":{"main":[[{"node":"Search: Employee Name Folder","type":"main","index":0}]]},"Get Customer Info From PO Sheet":{"main":[[{"node":"Search: Client Invoices Folder","type":"main","index":0}]]},"Create Sheet Name + Invoice Date":{"main":[[{"node":"Get Customer Info From PO Sheet","type":"main","index":0}]]},"When clicking ‘Execute workflow’":{"main":[[{"node":"Get row(s) in sheet","type":"main","index":0}]]},"Search: Inside folders in Employee Name Folder":{"main":[[{"node":"Search: folder name","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":65,"nodeTypes":{"n8n-nodes-base.if":{"count":8},"n8n-nodes-base.set":{"count":5},"n8n-nodes-base.code":{"count":1},"n8n-nodes-base.wait":{"count":2},"n8n-nodes-base.splitOut":{"count":1},"n8n-nodes-base.quickbooks":{"count":3},"n8n-nodes-base.stickyNote":{"count":20},"n8n-nodes-base.googleDrive":{"count":11},"n8n-nodes-base.httpRequest":{"count":1},"n8n-nodes-base.gmailTrigger":{"count":1},"n8n-nodes-base.googleSheets":{"count":7},"n8n-nodes-base.manualTrigger":{"count":1},"n8n-nodes-base.splitInBatches":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":1},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":1},"@n8n/n8n-nodes-langchain.lmChatGoogleGemini":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"DIGITAL BIZ TECH","username":"dbt","bio":"Digital Biz Tech builds practical AI systems that turn knowledge and workflows into real results. We deliver enterprise RAG platforms, automated social media engines, and reliable process automation that helps teams work faster and make smarter decisions.\nConsulting: shilpa.raju@digitalbiz.tech\n\nWebsite: digitalbiz.tech\nLinkedIn: linkedin.com/company/digital-biz-tech","verified":true,"links":["https://www.digitalbiz.tech/contact-us"],"avatar":"https://gravatar.com/avatar/8dd13ddf821292db80beb02e1b5d52dc93401f1947ec78d9a2447047e1402bcb?r=pg&d=retro&size=200"},"nodes":[{"id":18,"icon":"file:googleSheets.svg","name":"n8n-nodes-base.googleSheets","codex":{"data":{"alias":["CSV","Sheet","Spreadsheet","GS"],"resources":{"generic":[{"url":"https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/","icon":"❤️","label":"Love at first sight: Ricardo’s n8n journey"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/","icon":"⏲","label":"Creating triggers for n8n workflows using polling"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/","icon":"🍔","label":"How Honest Burgers Use Automation to Save $100k per year"},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Data & Storage","Productivity"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\",\"output\"]","defaults":{"name":"Google Sheets"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="},"displayName":"Google Sheets","typeVersion":5,"nodeCategories":[{"id":3,"name":"Data & Storage"},{"id":4,"name":"Productivity"}]},{"id":19,"icon":"file:httprequest.svg","name":"n8n-nodes-base.httpRequest","codex":{"data":{"alias":["API","Request","URL","Build","cURL"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/","icon":"🎨","label":"Automate Designs with Bannerbear and n8n"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/","icon":"🧰","label":"How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"output\"]","defaults":{"name":"HTTP Request","color":"#0004F5"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="},"displayName":"HTTP Request","typeVersion":4,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":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":39,"icon":"fa:sync","name":"n8n-nodes-base.splitInBatches","codex":{"data":{"alias":["Loop","Concatenate","Batch","Split","Split In Batches"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Loop Over Items","color":"#007755"},"iconData":{"icon":"sync","type":"icon"},"displayName":"Loop Over Items (Split in Batches)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":58,"icon":"file:googleDrive.svg","name":"n8n-nodes-base.googleDrive","codex":{"data":{"resources":{"generic":[{"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/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/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.googledrive/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Data & Storage"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\"]","defaults":{"name":"Google Drive"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgODEgNzMiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzAwNjZkYSIgZD0ibTYuMDQ4IDYxLjI2IDMuNTI4IDYuMDk0Yy43MzMgMS4yODMgMS43ODcgMi4yOTEgMy4wMjQgMy4wMjRsMTIuNi0yMS44MUgwYTguMyA4LjMgMCAwIDAgMS4xIDQuMTI0eiIvPjxwYXRoIGZpbGw9IiMwMGFjNDciIGQ9Ik00MCAyMi45MSAyNy40IDEuMWMtMS4yMzcuNzMzLTIuMjkxIDEuNzQxLTMuMDI0IDMuMDI0TDEuMSA0NC40NDVBOC4zIDguMyAwIDAgMCAwIDQ4LjU2OGgyNS4yeiIvPjxwYXRoIGZpbGw9IiNlYTQzMzUiIGQ9Ik02Ny40IDcwLjM3OGMxLjIzNy0uNzMzIDIuMjkxLTEuNzQxIDMuMDI0LTMuMDI0bDEuNDY2LTIuNTIgNy4wMS0xMi4xNDJhOC4zIDguMyAwIDAgMCAxLjEtNC4xMjRINTQuNzk4bDUuMzYzIDEwLjUzOHoiLz48cGF0aCBmaWxsPSIjMDA4MzJkIiBkPSJNNDAgMjIuOTEgNTIuNiAxLjFDNTEuMzYzLjM2NyA0OS45NDMgMCA0OC40NzcgMEgzMS41MjRjLTEuNDY2IDAtMi44ODcuNDEyLTQuMTI0IDEuMXoiLz48cGF0aCBmaWxsPSIjMjY4NGZjIiBkPSJNNTQuNzk5IDQ4LjU2OEgyNS4ybC0xMi42IDIxLjgxYzEuMjM3LjczMyAyLjY1NyAxLjEgNC4xMjQgMS4xaDQ2LjU1MmMxLjQ2NiAwIDIuODg3LS40MTIgNC4xMjQtMS4xeiIvPjxwYXRoIGZpbGw9IiNmZmJhMDAiIGQ9Ik02Ny4yNjIgMjQuMjg0IDU1LjYyNCA0LjEyNEM1NC44OTEgMi44NDEgNTMuODM3IDEuODMzIDUyLjYgMS4xTDQwIDIyLjkxbDE0LjggMjUuNjU5aDI1LjE1NWE4LjMgOC4zIDAgMCAwLTEuMS00LjEyNHoiLz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Google Drive","typeVersion":3,"nodeCategories":[{"id":3,"name":"Data & Storage"}]},{"id":455,"icon":"file:quickbooks.svg","name":"n8n-nodes-base.quickbooks","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.quickbooks/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/quickbooks/"}]},"categories":["Finance & Accounting"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"transform\"]","defaults":{"name":"QuickBooks Online"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTAwIDI1MDAiPjxjaXJjbGUgY3g9IjEyNTAiIGN5PSIxMjUwIiByPSIxMjUwIiBmaWxsPSIjMmNhMDFjIi8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTMwMS4zIDEyNDkuNmMuMSAyODIuNiAyMjggNTEyLjQgNTEwLjYgNTE0LjloNzIuM3YtMTg4LjloLTcyLjNjLTE3NS4yIDQ3LjgtMzU1LjktNTUuNS00MDMuNi0yMzAuNy0uNC0xLjQtLjctMi44LTEuMS00LjItNDkuMS0xNzcuNSA1My43LTM2MS40IDIzMC42LTQxMi41aDM2LjFhMzIyIDMyMiAwIDAgMSAxMzcuNSAwSDk4N3YxMDAyLjljLS45IDEwNi4xIDg0LjQgMTkyLjkgMTkwLjUgMTkzLjlWNzI5LjZIODEzYy0yODQuNiAxLjUtNTE0IDIzMy40LTUxMi41IDUxOHYuMXptMTM4Ny41LTUxOS44aC03Mi4zdjE5OC45aDcyLjNjMTc0LjgtNDcuNyAzNTUuMSA1NS4zIDQwMi44IDIzMCAuNCAxLjMuNyAyLjcgMS4xIDQgNDguOCAxNzYuOS01My43IDM2MC4xLTIyOS45IDQxMS4xaC0zNi4xYTMyMiAzMjIgMCAwIDEtMTM3LjUgMGgtMTc1LjZWNTcxYy45LTEwNi4xLTg0LjQtMTkyLjktMTkwLjUtMTkzLjl2MTM5Ny40aDM2NC41YzI4Ny4xLTQuNSA1MTYuMi0yNDAuOCA1MTEuOC01MjcuOS00LjQtMjgwLjgtMjMwLjktNTA3LjQtNTExLjgtNTExLjh6Ii8+PC9zdmc+"},"displayName":"QuickBooks Online","typeVersion":1,"nodeCategories":[{"id":8,"name":"Finance & Accounting"}]},{"id":514,"icon":"fa:pause-circle","name":"n8n-nodes-base.wait","codex":{"data":{"alias":["pause","sleep","delay","timeout"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.wait/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Wait","color":"#804050"},"iconData":{"icon":"pause-circle","type":"icon"},"displayName":"Wait","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":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":824,"icon":"file:gmail.svg","name":"n8n-nodes-base.gmailTrigger","codex":{"data":{"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/trigger-nodes/n8n-nodes-base.gmailtrigger/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Communication"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\"]","defaults":{"name":"Gmail Trigger"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMTkzIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZmlsbD0iIzQyODVGNCIgZD0iTTU4LjE4MiAxOTIuMDVWOTMuMTRMMjcuNTA3IDY1LjA3NyAwIDQ5LjUwNHYxMjUuMDkxYzAgOS42NTggNy44MjUgMTcuNDU1IDE3LjQ1NSAxNy40NTV6Ii8+PHBhdGggZmlsbD0iIzM0QTg1MyIgZD0iTTE5Ny44MTggMTkyLjA1aDQwLjcyN2M5LjY1OSAwIDE3LjQ1NS03LjgyNiAxNy40NTUtMTcuNDU1VjQ5LjUwNWwtMzEuMTU2IDE3LjgzNy0yNy4wMjYgMjUuNzk4eiIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im01OC4xODIgOTMuMTQtNC4xNzQtMzguNjQ3IDQuMTc0LTM2Ljk4OUwxMjggNjkuODY4bDY5LjgxOC01Mi4zNjQgNC42NyAzNC45OTItNC42NyA0MC42NDRMMTI4IDE0NS41MDR6Ii8+PHBhdGggZmlsbD0iI0ZCQkMwNCIgZD0iTTE5Ny44MTggMTcuNTA0VjkzLjE0TDI1NiA0OS41MDRWMjYuMjMxYzAtMjEuNTg1LTI0LjY0LTMzLjg5LTQxLjg5LTIwLjk0NXoiLz48cGF0aCBmaWxsPSIjQzUyMjFGIiBkPSJtMCA0OS41MDQgMjYuNzU5IDIwLjA3TDU4LjE4MiA5My4xNFYxNy41MDRMNDEuODkgNS4yODZDMjQuNjEtNy42NiAwIDQuNjQ2IDAgMjYuMjN6Ii8+PC9zdmc+"},"displayName":"Gmail Trigger","typeVersion":1,"nodeCategories":[{"id":6,"name":"Communication"}]},{"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":1153,"icon":"file:openAiLight.svg","name":"@n8n/n8n-nodes-langchain.lmChatOpenAi","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="},"displayName":"OpenAI Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"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":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":34,"name":"Invoice Processing"},{"id":49,"name":"AI Summarization"}],"image":[]}}