Workflow: develop a modular n8n workflow that supports Filter Manual Send Triggered
Integrations: filter, if, manualTrigger, markdown, merge, microsoftOutlook, set, splitInBatches, stickyNote, switch

{"meta": {"instanceId": "67d4d33d8b0ad4e5e12f051d8ad92fc35893d7f48d7f801bc6da4f39967b3592"}, "nodes": [{"id": "30f5203b-469d-4f0c-8493-e8f08e14e4fe", "name": "When clicking \u2018Test workflow\u2019", "type": "n8n-nodes-base.manualTrigger", "position": [-560, 440], "parameters": {}, "typeVersion": 1}, {"id": "d16f59dd-f54e-487b-9aac-67f109ba9869", "name": "Sticky Note8", "type": "n8n-nodes-base.stickyNote", "position": [1000, -280], "parameters": {"color": 7, "width": 727.9032097745135, "height": 110.58643966444157, "content": "# Auto Categorise Outlook Emails with AI\nBuilt by [Wayne Simpson](https://www.linkedin.com/in/simpsonwayne/) at [nocodecreative.io](https://nocodecreative.io)"}, "typeVersion": 1}, {"id": "4e110412-8530-4322-bc5c-7f9df2b63bcb", "name": "Sticky Note9", "type": "n8n-nodes-base.stickyNote", "position": [1100, -120], "parameters": {"color": 7, "width": 506.8102696237577, "height": 337.24177957113216, "content": "### Watch Set Up Video \ud83d\udc47\n[![Auto Categorise Outlook Emails with AI](https://vdyfnvnstovfxpabhdjc.supabase.co/storage/v1/object/public/images/Thumbnails/auto-categories-emails.png?t=2024-10-11T09%3A56%3A37.961Z#full-width)](https://www.youtube.com/watch?v=EhRBkkjv_3c)\n\n"}, "typeVersion": 1}, {"id": "9d79875f-148e-46ef-967a-95c07298456d", "name": "Ollama Chat Model1", "type": "@n8n/n8n-nodes-langchain.lmChatOllama", "position": [1129, 684], "parameters": {"model": "qwen2.5:14b", "options": {"temperature": 0.2}}, "typeVersion": 1}, {"id": "bcf92a71-ff5f-46a7-bec3-cedb5be2bf98", "name": "Microsoft Outlook10", "type": "n8n-nodes-base.microsoftOutlook", "position": [3020, 8], "parameters": {"folderId": {"__rl": true, "mode": "list", "value": "AQMkAGE3ZTU5MGMzLTFkNGItNGQ5Zi04MDQ1LThmNGFlMTVhYjMwYgAuAAAD8UhruVwm402lgPBG2Tj-aQEAnz-IOcWBGE2lrVuQgAF6zAAAAgFJAAAA", "cachedResultUrl": "https://outlook.office365.com/mail/AQMkAGE3ZTU5MGMzLTFkNGItNGQ5Zi04MDQ1LThmNGFlMTVhYjMwYgAuAAAD8UhruVwm402lgPBG2Tj%2FaQEAnz%2FIOcWBGE2lrVuQgAF6zAAAAgFJAAAA", "cachedResultName": "Junk Email"}, "messageId": {"__rl": true, "mode": "id", "value": "={{ $('varID & Category1').item.json.id }}"}, "operation": "move"}, "typeVersion": 2}, {"id": "100db1cb-3819-43c7-a74b-5c087ad4f2da", "name": "Microsoft Outlook12", "type": "n8n-nodes-base.microsoftOutlook", "position": [2700, 8], "parameters": {"messageId": {"__rl": true, "mode": "id", "value": "={{ $('varID & Category1').item.json.id }}"}, "operation": "update", "updateFields": {"categories": "={{ \n [$('varJSON1').first().json.output.category, $('varJSON1').first().json.output.subCategory]\n .filter(item => item && item.trim() !== \"\")\n .map(item => item.charAt(0).toUpperCase() + item.slice(1))\n}}"}}, "typeVersion": 2}, {"id": "d4969259-a3ae-473d-82ef-0c9f7933c899", "name": "Loop Over Items1", "type": "n8n-nodes-base.splitInBatches", "position": [160, 448], "parameters": {"options": {}}, "typeVersion": 3}, {"id": "524f6be3-7708-4aae-b9ab-e0ef8180a627", "name": "Microsoft Outlook13", "type": "n8n-nodes-base.microsoftOutlook", "position": [2700, 188], "parameters": {"messageId": {"__rl": true, "mode": "id", "value": "={{ $('varID & Category1').item.json.id }}"}, "operation": "update", "updateFields": {"categories": "={{ \n [$('varJSON1').first().json.output.category, $('varJSON1').first().json.output.subCategory]\n .filter(item => item && item.trim() !== \"\")\n .map(item => item.charAt(0).toUpperCase() + item.slice(1))\n}}"}}, "typeVersion": 2}, {"id": "72cb54f3-4e4e-4ad2-8845-11a38fc29f1a", "name": "Microsoft Outlook15", "type": "n8n-nodes-base.microsoftOutlook", "position": [3020, 188], "parameters": {"folderId": {"__rl": true, "mode": "list", "value": "AQMkAGE3ZTU5MGMzLTFkNGItNGQ5Zi04MDQ1LThmNGFlMTVhYjMwYgAuAAAD8UhruVwm402lgPBG2Tj-aQEAnz-IOcWBGE2lrVuQgAF6zAADLJmrBwAAAA==", "cachedResultUrl": "https://outlook.office365.com/mail/AQMkAGE3ZTU5MGMzLTFkNGItNGQ5Zi04MDQ1LThmNGFlMTVhYjMwYgAuAAAD8UhruVwm402lgPBG2Tj%2FaQEAnz%2FIOcWBGE2lrVuQgAF6zAADLJmrBwAAAA%3D%3D", "cachedResultName": "Receipt"}, "messageId": {"__rl": true, "mode": "id", "value": "={{ $('varID & Category1').item.json.id }}"}, "operation": "move"}, "typeVersion": 2}, {"id": "e4446e84-c05e-4d04-b415-7608e39024ee", "name": "Microsoft Outlook16", "type": "n8n-nodes-base.microsoftOutlook", "position": [2709, 504], "parameters": {"messageId": {"__rl": true, "mode": "id", "value": "={{ $('varID & Category1').item.json.id }}"}, "operation": "update", "updateFields": {"categories": "={{ \n [$('varJSON1').first().json.output.category, $('varJSON1').first().json.output.subCategory]\n .filter(item => item && item.trim() !== \"\")\n .map(item => item.charAt(0).toUpperCase() + item.slice(1))\n}}"}}, "typeVersion": 2}, {"id": "3ee05cfe-a528-472e-aa3d-c890fd88b6c4", "name": "Microsoft Outlook17", "type": "n8n-nodes-base.microsoftOutlook", "position": [3020, 508], "parameters": {"folderId": {"__rl": true, "mode": "list", "value": "AQMkAGE3ZTU5MGMzLTFkNGItNGQ5Zi04MDQ1LThmNGFlMTVhYjMwYgAuAAAD8UhruVwm402lgPBG2Tj-aQEAnz-IOcWBGE2lrVuQgAF6zAADLJmrCAAAAA==", "cachedResultUrl": "https://outlook.office365.com/mail/AQMkAGE3ZTU5MGMzLTFkNGItNGQ5Zi04MDQ1LThmNGFlMTVhYjMwYgAuAAAD8UhruVwm402lgPBG2Tj%2FaQEAnz%2FIOcWBGE2lrVuQgAF6zAADLJmrCAAAAA%3D%3D", "cachedResultName": "Community"}, "messageId": {"__rl": true, "mode": "id", "value": "={{ $('varID & Category1').item.json.id }}"}, "operation": "move"}, "typeVersion": 2}, {"id": "2fcecd9e-95cc-489a-b874-699c54518e44", "name": "Microsoft Outlook18", "type": "n8n-nodes-base.microsoftOutlook", "position": [2709, 344], "parameters": {"messageId": {"__rl": true, "mode": "id", "value": "={{ $('varID & Category1').item.json.id }}"}, "operation": "update", "updateFields": {"categories": "={{ \n [$('varJSON1').first().json.output.category, $('varJSON1').first().json.output.subCategory]\n .filter(item => item && item.trim() !== \"\")\n .map(item => item.charAt(0).toUpperCase() + item.slice(1))\n}}"}}, "typeVersion": 2}, {"id": "41a39309-1a94-461f-9308-63dd5b9a94a7", "name": "Microsoft Outlook19", "type": "n8n-nodes-base.microsoftOutlook", "position": [3020, 348], "parameters": {"folderId": {"__rl": true, "mode": "list", "value": "AQMkAGE3ZTU5MGMzLTFkNGItNGQ5Zi04MDQ1LThmNGFlMTVhYjMwYgAuAAAD8UhruVwm402lgPBG2Tj-aQEAnz-IOcWBGE2lrVuQgAF6zAADLJmrCQAAAA==", "cachedResultUrl": "https://outlook.office365.com/mail/AQMkAGE3ZTU5MGMzLTFkNGItNGQ5Zi04MDQ1LThmNGFlMTVhYjMwYgAuAAAD8UhruVwm402lgPBG2Tj%2FaQEAnz%2FIOcWBGE2lrVuQgAF6zAADLJmrCQAAAA%3D%3D", "cachedResultName": "SaaS"}, "messageId": {"__rl": true, "mode": "id", "value": "={{ $('varID & Category1').item.json.id }}"}, "operation": "move"}, "typeVersion": 2}, {"id": "ebf606f9-099c-4218-b23b-66e2487262d0", "name": "Markdown1", "type": "n8n-nodes-base.markdown", "notes": "Converts the body of the email to markdown", "position": [420, 468], "parameters": {"html": "={{ $('Loop Over Items1').item.json.body.content }}", "options": {}}, "notesInFlow": true, "typeVersion": 1}, {"id": "ff447dd5-3ef6-4a02-8453-3489af8bf6b5", "name": "varEmal1", "type": "n8n-nodes-base.set", "notes": "Set email fields", "position": [620, 468], "parameters": {"options": {}, "assignments": {"assignments": [{"id": "edb304e1-3e9f-4a77-918c-25646addbc53", "name": "subject", "type": "string", "value": "={{ $json.subject }}"}, {"id": "57a3ef3a-2701-40d9-882f-f43a7219f148", "name": "importance", "type": "string", "value": "={{ $json.importance }}"}, {"id": "d8317f4f-aa0e-4196-89af-cb016765490a", "name": "sender", "type": "object", "value": "={{ $json.sender.emailAddress }}"}, {"id": "908716c8-9ff7-4bdc-a1a3-64227559635e", "name": "from", "type": "object", "value": "={{ $json.from.emailAddress }}"}, {"id": "ce007329-e221-4c5a-8130-2f8e9130160f", "name": "body", "type": "string", "value": "={{ $json.data\n .replace(/<[^>]*>/g, '') // Remove HTML tags\n .replace(/\\[(.*?)\\]\\((.*?)\\)/g, '') // Remove Markdown links like [text](link)\n .replace(/!\\[.*?\\]\\(.*?\\)/g, '') // Remove Markdown images like ![alt](image-link)\n .replace(/\\|/g, '') // Remove table separators \"|\"\n .replace(/-{3,}/g, '') // Remove horizontal rule \"---\"\n .replace(/\\n+/g, ' ') // Remove multiple newlines\n .replace(/([^\\w\\s.,!?@])/g, '') // Remove special characters except essential ones\n .replace(/\\s{2,}/g, ' ') // Replace multiple spaces with a single space\n .trim() // Trim leading/trailing whitespace\n}}\n"}]}}, "typeVersion": 3.4}, {"id": "198524cb-c9f0-4261-8c38-7c878efe7457", "name": "Microsoft Outlook20", "type": "n8n-nodes-base.microsoftOutlook", "position": [2700, 668], "parameters": {"messageId": {"__rl": true, "mode": "id", "value": "={{ $('varID & Category1').item.json.id }}"}, "operation": "update", "updateFields": {"categories": "={{ \n [$('varJSON1').first().json.output.category, $('varJSON1').first().json.output.subCategory]\n .filter(item => item && item.trim() !== \"\")\n .map(item => item.charAt(0).toUpperCase() + item.slice(1))\n}}"}}, "typeVersion": 2}, {"id": "ec73629c-59ac-4f0e-a432-2c06934952ab", "name": "Microsoft Outlook21", "type": "n8n-nodes-base.microsoftOutlook", "position": [2709, 1044], "parameters": {"messageId": {"__rl": true, "mode": "id", "value": "={{ $('varID & Category1').item.json.id }}"}, "operation": "update", "updateFields": {"categories": "={{ \n [$('varJSON1').first().json.output.category, $('varJSON1').first().json.output.subCategory]\n .filter(item => item && item.trim() !== \"\")\n .map(item => item.charAt(0).toUpperCase() + item.slice(1))\n}}"}}, "typeVersion": 2}, {"id": "0a19d15c-0cd3-4f26-9be2-4914522751fb", "name": "Filter1", "type": "n8n-nodes-base.filter", "position": [-100, 448], "parameters": {"options": {}, "conditions": {"options": {"version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict"}, "combinator": "and", "conditions": [{"id": "c8cd6917-f94e-4fb7-8601-b8ed8f1aa8bf", "operator": {"type": "array", "operation": "empty", "singleValue": true}, "leftValue": "={{ $json.categories }}", "rightValue": ""}]}}, "typeVersion": 2.2}, {"id": "96e6e31c-6306-44a8-a57a-2b5216636b00", "name": "If1", "type": "n8n-nodes-base.if", "notes": "Checks if the email has been read", "position": [3320, 668], "parameters": {"options": {}, "conditions": {"options": {"version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict"}, "combinator": "and", "conditions": [{"id": "f8cf2a56-cea8-4150-b7a0-048dbda20f2f", "operator": {"type": "boolean", "operation": "true", "singleValue": true}, "leftValue": "={{ $json.isRead }}", "rightValue": ""}]}}, "typeVersion": 2.2}, {"id": "8a6e0118-abe3-45e2-aefc-94640348b2ec", "name": "Microsoft Outlook22", "type": "n8n-nodes-base.microsoftOutlook", "position": [2709, 864], "parameters": {"messageId": {"__rl": true, "mode": "id", "value": "={{ $('varID & Category1').item.json.id }}"}, "operation": "update", "updateFields": {"categories": "={{ \n [$('varJSON1').first().json.output.category, $('varJSON1').first().json.output.subCategory]\n .filter(item => item && item.trim() !== \"\")\n .map(item => item.charAt(0).toUpperCase() + item.slice(1))\n}}"}}, "typeVersion": 2}, {"id": "e2d8e7b5-4447-4327-9f4e-b8d52765667e", "name": "Catch Errors1", "type": "n8n-nodes-base.set", "position": [1760, 608], "parameters": {"options": {}, "assignments": {"assignments": [{"id": "0dc6d439-60fb-49f6-b4d5-f5cce6f030ad", "name": "error", "type": "string", "value": "={{ $json }}"}]}}, "typeVersion": 3.4}, {"id": "17f6ac43-51e4-4bee-b0d8-13deb3bf3cc9", "name": "varJSON1", "type": "n8n-nodes-base.set", "onError": "continueErrorOutput", "position": [1540, 468], "parameters": {"options": {"ignoreConversionErrors": true}, "assignments": {"assignments": [{"id": "0c52f57f-74eb-4385-ac6b-f3e5f4f50e73", "name": "output", "type": "object", "value": "={{ $json.output.replace(/^.*?({.*}).*$/s, '$1') }}"}]}}, "typeVersion": 3.4}, {"id": "82dd9631-a34b-4d54-be28-6f8dcc3548f0", "name": "Sticky Note10", "type": "n8n-nodes-base.stickyNote", "position": [-360, 220], "parameters": {"width": 411.91693012378937, "height": 401.49417117683515, "content": "## Outlook Business with filters\nFilters:\n```\nflag/flagStatus eq 'notFlagged' and not categories/any()\n```\n\nThese filters ensure we do not process flagged emails or email that already have a category set."}, "typeVersion": 1}, {"id": "0583e196-37a5-43db-8c0a-aa624029c926", "name": "Microsoft Outlook23", "type": "n8n-nodes-base.microsoftOutlook", "position": [-300, 448], "parameters": {"limit": 1, "fields": ["flag", "from", "importance", "replyTo", "sender", "subject", "toRecipients", "body", "categories", "isRead"], "output": "fields", "options": {}, "filtersUI": {"values": {"filters": {"custom": "flag/flagStatus eq 'notFlagged' and not categories/any()", "foldersToInclude": ["AQMkAGE3ZTU5MGMzLTFkNGItNGQ5Zi04MDQ1LThmNGFlMTVhYjMwYgAuAAAD8UhruVwm402lgPBG2Tj-aQEAnz-IOcWBGE2lrVuQgAF6zAAAAgEMAAAA"]}}}, "operation": "getAll"}, "typeVersion": 2}, {"id": "a9540e6b-929b-4460-8972-93e4d19cd934", "name": "varID & Category1", "type": "n8n-nodes-base.set", "position": [900, 468], "parameters": {"options": {}, "assignments": {"assignments": [{"id": "de2ad4f2-7381-4715-a3f4-59611e161b74", "name": "id", "type": "string", "value": "={{ $('Microsoft Outlook23').item.json.id }}"}, {"id": "458c7a89-e4a3-46d0-8b38-72d87748e306", "name": "category", "type": "string", "value": "\"action\", \"junk\", \"receipt\", \"SaaS\", \"community\", \"business\" or \"other\""}]}}, "typeVersion": 3.4}, {"id": "e6b3b41e-d7d3-4c9b-8189-a005c748ff18", "name": "Sticky Note11", "type": "n8n-nodes-base.stickyNote", "position": [360, 348], "parameters": {"color": 6, "width": 418.7820408163265, "height": 301.40952380952365, "content": "## Sanitise Email \nRemoves HTML and useless information in preparation for the AI Agent"}, "typeVersion": 1}, {"id": "f9787a75-526c-4ef1-b0a7-0db7d890ab3f", "name": "Sticky Note12", "type": "n8n-nodes-base.stickyNote", "position": [820, 348], "parameters": {"color": 6, "width": 256.16108843537415, "height": 298.37931972789124, "content": "## Modify Categories \nEdit this to customise category selection"}, "typeVersion": 1}, {"id": "50223a01-34cf-4191-9dd7-3dac02a9e945", "name": "Sticky Note13", "type": "n8n-nodes-base.stickyNote", "position": [1480, 328], "parameters": {"color": 5, "width": 441.003537414966, "height": 463.0204081632651, "content": "## Convert to JSON\n* Ensures the Agent output to converted to JSON\n* Catches any errors and continues processing"}, "typeVersion": 1}, {"id": "4580c532-96a6-46b4-8922-d79316d1cc01", "name": "Sticky Note14", "type": "n8n-nodes-base.stickyNote", "position": [2120, 328], "parameters": {"color": 5, "width": 311.71482993197264, "height": 454.93986394557805, "content": "## Switch Categories\nEnsure your categories match the **varID & Category** Edit Fields node"}, "typeVersion": 1}, {"id": "b51a7c34-2a5e-4670-81a4-d1582711c69a", "name": "Sticky Note15", "type": "n8n-nodes-base.stickyNote", "position": [2629, -76], "parameters": {"color": 4, "width": 251.3480889735252, "height": 1289.0156245602684, "content": "## Set Categories\n"}, "typeVersion": 1}, {"id": "3a7ede7b-539b-49d2-8803-153ca6c9eb69", "name": "Sticky Note16", "type": "n8n-nodes-base.stickyNote", "position": [2949, -76], "parameters": {"color": 4, "width": 251.3480889735252, "height": 770.995811762121, "content": "## Move to Folders\n"}, "typeVersion": 1}, {"id": "ee9a9d78-8c07-470a-9d1b-ceddfc8875ca", "name": "Sticky Note17", "type": "n8n-nodes-base.stickyNote", "position": [3260, 553], "parameters": {"color": 4, "height": 293.65527013262994, "content": "## Check if email has been read\n\n"}, "typeVersion": 1}, {"id": "c75b9d38-79a7-4be2-a90b-a99da1bbd745", "name": "Microsoft Outlook Move Message1", "type": "n8n-nodes-base.microsoftOutlook", "position": [3609, 604], "parameters": {"folderId": {"__rl": true, "mode": "list", "value": "AQMkAGE3ZTU5MGMzLTFkNGItNGQ5Zi04MDQ1LThmNGFlMTVhYjMwYgAuAAAD8UhruVwm402lgPBG2Tj-aQEAnz-IOcWBGE2lrVuQgAF6zAADLJmrCwAAAA==", "cachedResultUrl": "https://outlook.office365.com/mail/AQMkAGE3ZTU5MGMzLTFkNGItNGQ5Zi04MDQ1LThmNGFlMTVhYjMwYgAuAAAD8UhruVwm402lgPBG2Tj%2FaQEAnz%2FIOcWBGE2lrVuQgAF6zAADLJmrCwAAAA%3D%3D", "cachedResultName": "Actioned"}, "messageId": {"__rl": true, "mode": "id", "value": "={{ $('varID & Category1').item.json.id }}"}, "operation": "move"}, "typeVersion": 2}, {"id": "85ff0348-16dc-46e6-bf70-48a10fe0ded8", "name": "AI Agent1", "type": "@n8n/n8n-nodes-langchain.agent", "position": [1160, 468], "parameters": {"text": "=Categorise the following email\n<email>\n{{ $('varEmal1').first().json.toJsonString() }}\n</email>\n\nEnsure your final output is valid JSON with no additional text or token in the following format:\n\n{\n \"subject\": \"SUBJECT_LINE\",1\n \"category\": \"CATEGORY\",\n \"subCategory\": \"SUBCATEGORY\", //use sparingly\n \"analysis\": \"ANALYSIS_REASONING\"\n}\n\nRemember you can only use ONE of the following categories {{ $json.category }}. No other categories can be used. Use the subcategory for additional context, for example, if a SaaS email requires action, or if a business email requires action. Do not create any additional subcategories, you can only use ONE of the following {{ $json.category }}.", "options": {"systemMessage": "=You're an AI assistant for a freelance developer, categorizing emails as {{ $json.category }}. Email info is in <email> tags.\n\nCategorization priority:\n\nAction: Needs response or action (includes some SaaS emails), avoid sales email but include enquires.\nJunk: Ads, sales, newsletters, promotions, daily digests, (emojis often indicate junk), phishing, scams, discounts etc.\nReceipt: Any purchase confirmation.\nSaaS: Account/security updates, unless action required, generic SaaS information, usually from a non-personal email address.\nCommunity: Updates, events, forums, everything related to \"community\".\nBusiness: Any communication related to freelance work, usually from a humans email address\nOther: Doesn't fit into any other category.\n\nKey points:\n\nSaaS emails needing action are \"SaaS\" and subcategory \"action\".\nAnalyze the subject, body, email addresses and other data.\nLook for specific keywords and phrases for each category.\nEmail can have 2 categories, primary and sub, for example, \"action\" and \"SaaS\" or \"action\" and \"business\".\nEmails from business development executives are often junk.\n\n\nOutput in valid JSON format:\n{\n\"subject\": \"SUBJECT_LINE\",\n\"category\": \"PRIMARY CATEGORY\",\n\"subCategory\": \"SUBCATEGORY\", //use sparingly\n\"analysis\": \"Brief 1-2 sentence explanation of category choice\"\n}\nNo additional text or tokens outside the JSON.\n\nYou may only use the following categories and subcategories, do not create any more categories or subcategories: {{ $json.category }}"}, "promptType": "define", "hasOutputParser": true}, "typeVersion": 1.6}, {"id": "93e7be79-9035-4b58-9a83-b9182a0515f8", "name": "Merge1", "type": "n8n-nodes-base.merge", "position": [3989, 564], "parameters": {"numberInputs": 7}, "typeVersion": 3}, {"id": "cbaeaed1-cb09-4614-93f1-3fe349cd0e4e", "name": "Switch1", "type": "n8n-nodes-base.switch", "position": [2220, 488], "parameters": {"rules": {"values": [{"outputKey": "junk", "conditions": {"options": {"version": 2, "leftValue": "", "caseSensitive": false, "typeValidation": "strict"}, "combinator": "and", "conditions": [{"operator": {"type": "string", "operation": "equals"}, "leftValue": "={{ $json.output.category }}", "rightValue": "junk"}]}, "renameOutput": true}, {"outputKey": "receipt", "conditions": {"options": {"version": 2, "leftValue": "", "caseSensitive": false, "typeValidation": "strict"}, "combinator": "and", "conditions": [{"id": "0c61c7a8-e8b4-49c5-a96c-402d5eae7089", "operator": {"name": "filter.operator.equals", "type": "string", "operation": "equals"}, "leftValue": "={{ $json.output.category }}", "rightValue": "receipt"}]}, "renameOutput": true}, {"outputKey": "SaaS", "conditions": {"options": {"version": 2, "leftValue": "", "caseSensitive": false, "typeValidation": "strict"}, "combinator": "and", "conditions": [{"id": "703f65c8-cf4a-47fe-ad1a-a5f6e0412ae7", "operator": {"name": "filter.operator.equals", "type": "string", "operation": "equals"}, "leftValue": "={{ $json.output.category }}", "rightValue": "SaaS"}]}, "renameOutput": true}, {"outputKey": "community", "conditions": {"options": {"version": 2, "leftValue": "", "caseSensitive": false, "typeValidation": "strict"}, "combinator": "and", "conditions": [{"id": "b074d5cd-9215-40df-8877-5df904edc000", "operator": {"name": "filter.operator.equals", "type": "string", "operation": "equals"}, "leftValue": "={{ $json.output.category }}", "rightValue": "community"}]}, "renameOutput": true}, {"outputKey": "action", "conditions": {"options": {"version": 2, "leftValue": "", "caseSensitive": false, "typeValidation": "strict"}, "combinator": "and", "conditions": [{"id": "bece338a-e0c5-43b5-b8cc-41229a374213", "operator": {"name": "filter.operator.equals", "type": "string", "operation": "equals"}, "leftValue": "={{ $json.output.category }}", "rightValue": "action"}]}, "renameOutput": true}, {"outputKey": "business", "conditions": {"options": {"version": 2, "leftValue": "", "caseSensitive": false, "typeValidation": "strict"}, "combinator": "and", "conditions": [{"id": "d6c9751f-0ffa-4041-a579-6957bb9c9296", "operator": {"name": "filter.operator.equals", "type": "string", "operation": "equals"}, "leftValue": "={{ $json.output.category }}", "rightValue": "business"}]}, "renameOutput": true}]}, "options": {"ignoreCase": true, "fallbackOutput": "extra"}}, "typeVersion": 3.2}], "pinData": {}, "connections": {"If1": {"main": [[{"node": "Microsoft Outlook Move Message1", "type": "main", "index": 0}], [{"node": "Merge1", "type": "main", "index": 5}]]}, "Merge1": {"main": [[{"node": "Loop Over Items1", "type": "main", "index": 0}]]}, "Filter1": {"main": [[{"node": "Loop Over Items1", "type": "main", "index": 0}]]}, "Switch1": {"main": [[{"node": "Microsoft Outlook12", "type": "main", "index": 0}], [{"node": "Microsoft Outlook13", "type": "main", "index": 0}], [{"node": "Microsoft Outlook18", "type": "main", "index": 0}], [{"node": "Microsoft Outlook16", "type": "main", "index": 0}], [{"node": "Microsoft Outlook20", "type": "main", "index": 0}], [{"node": "Microsoft Outlook22", "type": "main", "index": 0}], [{"node": "Microsoft Outlook21", "type": "main", "index": 0}]]}, "varEmal1": {"main": [[{"node": "varID & Category1", "type": "main", "index": 0}]]}, "varJSON1": {"main": [[{"node": "Switch1", "type": "main", "index": 0}], [{"node": "Catch Errors1", "type": "main", "index": 0}]]}, "AI Agent1": {"main": [[{"node": "varJSON1", "type": "main", "index": 0}]]}, "Markdown1": {"main": [[{"node": "varEmal1", "type": "main", "index": 0}]]}, "Catch Errors1": {"main": [[{"node": "Loop Over Items1", "type": "main", "index": 0}]]}, "Loop Over Items1": {"main": [null, [{"node": "Markdown1", "type": "main", "index": 0}]]}, "varID & Category1": {"main": [[{"node": "AI Agent1", "type": "main", "index": 0}]]}, "Ollama Chat Model1": {"ai_languageModel": [[{"node": "AI Agent1", "type": "ai_languageModel", "index": 0}]]}, "Microsoft Outlook10": {"main": [[{"node": "Merge1", "type": "main", "index": 0}]]}, "Microsoft Outlook12": {"main": [[{"node": "Microsoft Outlook10", "type": "main", "index": 0}]]}, "Microsoft Outlook13": {"main": [[{"node": "Microsoft Outlook15", "type": "main", "index": 0}]]}, "Microsoft Outlook15": {"main": [[{"node": "Merge1", "type": "main", "index": 1}]]}, "Microsoft Outlook16": {"main": [[{"node": "Microsoft Outlook17", "type": "main", "index": 0}]]}, "Microsoft Outlook17": {"main": [[{"node": "Merge1", "type": "main", "index": 3}]]}, "Microsoft Outlook18": {"main": [[{"node": "Microsoft Outlook19", "type": "main", "index": 0}]]}, "Microsoft Outlook19": {"main": [[{"node": "Merge1", "type": "main", "index": 2}]]}, "Microsoft Outlook20": {"main": [[{"node": "If1", "type": "main", "index": 0}]]}, "Microsoft Outlook21": {"main": [[{"node": "Merge1", "type": "main", "index": 6}]]}, "Microsoft Outlook22": {"main": [[{"node": "If1", "type": "main", "index": 0}]]}, "Microsoft Outlook23": {"main": [[{"node": "Filter1", "type": "main", "index": 0}]]}, "Microsoft Outlook Move Message1": {"main": [[{"node": "Merge1", "type": "main", "index": 4}]]}, "When clicking \u2018Test workflow\u2019": {"main": [[{"node": "Microsoft Outlook23", "type": "main", "index": 0}]]}}}