{
  "name": "LAB-H-informatic-wu.ac.th copy copy",
  "nodes": [
    {
      "parameters": {
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "typeVersion": 1.1,
      "position": [
        -1080,
        220
      ],
      "id": "2a1c5f30-8bf5-43e2-887f-9c82d8b177d0",
      "name": "When chat message received"
    },
    {
      "parameters": {
        "contextWindowLength": 2
      },
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "typeVersion": 1.3,
      "position": [
        -340,
        440
      ],
      "id": "66e9c4c6-3bf4-46db-9336-4a2ccc424163",
      "name": "Simple Memory"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "2966067a-7bb6-4316-8ad9-2b7681c7e0b9",
              "leftValue": "={{$json[\"output\"]}}",
              "rightValue": "",
              "operator": {
                "type": "string",
                "operation": "equals",
                "name": "filter.operator.equals"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [
        0,
        0
      ],
      "id": "4449be77-62c8-4da2-b119-936082f9d703",
      "name": "If"
    },
    {
      "parameters": {
        "jsCode": "const staticData = $getWorkflowStaticData('global');\n\n// \u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e27\u0e48\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e23\u0e2d\u0e1a\u0e41\u0e23\u0e01\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48\nif (!staticData.current_session_data) {\n    // \u0e23\u0e2d\u0e1a\u0e41\u0e23\u0e01: \u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e08\u0e32\u0e01 input\n    staticData.current_session_data = {\n        original_question: $json[\"chatInput\"],\n        sessionId: $json[\"userId\"] || \"default-session\",\n        startTime: new Date().toISOString()\n    };\n}\n\n// \u0e2a\u0e48\u0e07\u0e2d\u0e2d\u0e01\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e04\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e17\u0e38\u0e01\u0e23\u0e2d\u0e1a\nreturn [{\n    sessionId: staticData.current_session_data.sessionId,\n    original_question: staticData.current_session_data.original_question\n}];\n"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        -780,
        220
      ],
      "id": "476406d6-a532-4c97-bd6d-264db5c14015",
      "name": "Question memorizer"
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "openai/gpt-oss-120b",
          "mode": "list",
          "cachedResultName": "openai/gpt-oss-120b"
        },
        "options": {
          "maxTokens": 8000
        }
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        -520,
        440
      ],
      "id": "fc9ee872-d1f8-4580-ba8c-ff9a46ee8d45",
      "name": "OpenAI Chat Model by OpenRouter",
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "qwen/qwen-max",
          "mode": "list",
          "cachedResultName": "qwen/qwen-max"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        100,
        300
      ],
      "id": "effe030c-3ee4-477e-8a8e-be895ce6dc12",
      "name": "OpenAI Chat Model by OpenRouter-1",
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "descriptionType": "manual",
        "toolDescription": "\u0e41\u0e2a\u0e14\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e23\u0e38\u0e1b\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25",
        "connectionType": "sse",
        "operation": "executeTool",
        "toolName": "get_database_info_tool"
      },
      "type": "n8n-nodes-mcp.mcpClientTool",
      "typeVersion": 1,
      "position": [
        -460,
        640
      ],
      "id": "6adfe475-e33f-4fd0-af6b-2e7584fd35a6",
      "name": "get_database_info_tool",
      "credentials": {
        "mcpClientSseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "descriptionType": "manual",
        "toolDescription": "Execute a read-only SQL query and return the results",
        "connectionType": "sse",
        "operation": "executeTool",
        "toolName": "execute_query_tool",
        "toolParameters": "={{ (function() {\n const paramsString = $fromAI('Tool_Parameters');\n \n // Default query \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e14\u0e39\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e15\u0e32\u0e23\u0e32\u0e07\n const defaultParams = {\n   query: \"SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' ORDER BY TABLE_NAME\"\n };\n \n if (!paramsString) {\n   return defaultParams;\n }\n \n try {\n   // \u0e25\u0e2d\u0e07\u0e41\u0e1b\u0e25\u0e07 JSON \u0e01\u0e48\u0e2d\u0e19\n   const params = JSON.parse(paramsString);\n   return {\n     query: params.query || params.sql || params.statement || defaultParams.query\n   };\n } catch (e) {\n   // \u0e16\u0e49\u0e32\u0e41\u0e1b\u0e25\u0e07 JSON \u0e44\u0e21\u0e48\u0e44\u0e14\u0e49 \u0e16\u0e37\u0e2d\u0e27\u0e48\u0e32\u0e40\u0e1b\u0e47\u0e19 SQL string \u0e42\u0e14\u0e22\u0e15\u0e23\u0e07\n   if (typeof paramsString === 'string' && paramsString.trim().length > 0) {\n     return {\n       query: paramsString.trim()\n     };\n   }\n   return defaultParams;\n }\n})() }}"
      },
      "type": "n8n-nodes-mcp.mcpClientTool",
      "typeVersion": 1,
      "position": [
        -300,
        640
      ],
      "id": "0c52ec71-078f-4b1b-94a8-04faa6b28199",
      "name": "execute_query_tool",
      "credentials": {
        "mcpClientSseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "descriptionType": "manual",
        "toolDescription": "Preview sample data from a specific table with configurable row limit",
        "connectionType": "sse",
        "operation": "executeTool",
        "toolName": "preview_table",
        "toolParameters": "={{ (function() {\n  const paramsString = $fromAI('Tool_Parameters');\n  \n  // Default \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a preview_table\n  const defaultParams = {\n    table_name: \"allrawloanstat\",\n    limit: 10\n  };\n  \n  if (!paramsString) {\n    return defaultParams;\n  }\n  \n  try {\n    // \u0e25\u0e2d\u0e07\u0e41\u0e1b\u0e25\u0e07 JSON \u0e01\u0e48\u0e2d\u0e19\n    const params = JSON.parse(paramsString);\n    return {\n      table_name: params.table_name || params.tableName || params.table || defaultParams.table_name,\n      limit: params.limit || params.row_count || params.rows || defaultParams.limit\n    };\n  } catch (e) {\n    // \u0e16\u0e49\u0e32\u0e41\u0e1b\u0e25\u0e07 JSON \u0e44\u0e21\u0e48\u0e44\u0e14\u0e49 \u0e25\u0e2d\u0e07 parse SQL query\n    if (typeof paramsString === 'string' && paramsString.trim().length > 0) {\n      const sql = paramsString.trim().toUpperCase();\n      \n      // \u0e2b\u0e32 table name \u0e08\u0e32\u0e01 FROM clause\n      const fromMatch = sql.match(/FROM\\s+(\\w+)/);\n      const tableName = fromMatch ? fromMatch[1].toLowerCase() : defaultParams.table_name;\n      \n      // \u0e2b\u0e32 limit \u0e08\u0e32\u0e01 TOP clause\n      const topMatch = sql.match(/TOP\\s+(\\d+)/);\n      const limit = topMatch ? parseInt(topMatch[1]) : defaultParams.limit;\n      \n      return {\n        table_name: tableName,\n        limit: limit\n      };\n    }\n    return defaultParams;\n  }\n})() }}"
      },
      "type": "n8n-nodes-mcp.mcpClientTool",
      "typeVersion": 1,
      "position": [
        -140,
        640
      ],
      "id": "f831b814-d49e-49e6-aaf1-5b8dd661b441",
      "name": "preview_table",
      "credentials": {
        "mcpClientSseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "descriptionType": "manual",
        "toolDescription": "List all documentation sources currently stored",
        "connectionType": "sse",
        "operation": "executeTool",
        "toolName": "list_sources"
      },
      "type": "n8n-nodes-mcp.mcpClientTool",
      "typeVersion": 1,
      "position": [
        20,
        640
      ],
      "id": "721dd731-8719-43c6-a123-072a89da292c",
      "name": "list_sources",
      "credentials": {
        "mcpClientSseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "descriptionType": "manual",
        "toolDescription": "Add all supported files from a directory to the RAG database",
        "connectionType": "sse",
        "operation": "executeTool",
        "toolName": "add_directory",
        "toolParameters": "={{ (function() {\n  const paramsString = $fromAI('Tool_Parameters');\n  \n  // Default path\n  const defaultParams = {\n    path: \"/home/user/documents\"\n  };\n  \n  if (!paramsString) {\n    return defaultParams;\n  }\n  \n  try {\n    // \u0e25\u0e2d\u0e07\u0e41\u0e1b\u0e25\u0e07 JSON \u0e01\u0e48\u0e2d\u0e19\n    const params = JSON.parse(paramsString);\n    return {\n      path: params.path || defaultParams.path\n    };\n  } catch (e) {\n    // \u0e16\u0e49\u0e32\u0e41\u0e1b\u0e25\u0e07 JSON \u0e44\u0e21\u0e48\u0e44\u0e14\u0e49 \u0e16\u0e37\u0e2d\u0e27\u0e48\u0e32\u0e40\u0e1b\u0e47\u0e19 path string \u0e42\u0e14\u0e22\u0e15\u0e23\u0e07\n    if (typeof paramsString === 'string' && paramsString.trim().length > 0) {\n      return {\n        path: paramsString.trim()\n      };\n    }\n    return defaultParams;\n  }\n})() }}"
      },
      "type": "n8n-nodes-mcp.mcpClientTool",
      "typeVersion": 1,
      "position": [
        160,
        640
      ],
      "id": "822bff6b-9189-43a2-9c7e-3394c05924ab",
      "name": "add_directory",
      "credentials": {
        "mcpClientSseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "descriptionType": "manual",
        "toolDescription": "Search through stored documentation",
        "connectionType": "sse",
        "operation": "executeTool",
        "toolName": "search_documentation",
        "toolParameters": "={{ (function() {\n  const paramsString = $fromAI('Tool_Parameters');\n  \n  // Default parameters\n  const defaultParams = {\n    query: \"search term\",\n    limit: 10\n  };\n  \n  if (!paramsString) {\n    return defaultParams;\n  }\n  \n  try {\n    // \u0e25\u0e2d\u0e07\u0e41\u0e1b\u0e25\u0e07 JSON \u0e01\u0e48\u0e2d\u0e19\n    const params = JSON.parse(paramsString);\n    return {\n      query: params.query || params.search || params.keyword || defaultParams.query,\n      limit: params.limit || params.max || params.count || defaultParams.limit\n    };\n  } catch (e) {\n    // \u0e16\u0e49\u0e32\u0e41\u0e1b\u0e25\u0e07 JSON \u0e44\u0e21\u0e48\u0e44\u0e14\u0e49 \u0e16\u0e37\u0e2d\u0e27\u0e48\u0e32\u0e40\u0e1b\u0e47\u0e19 search string \u0e42\u0e14\u0e22\u0e15\u0e23\u0e07\n    if (typeof paramsString === 'string' && paramsString.trim().length > 0) {\n      return {\n        query: paramsString.trim(),\n        limit: defaultParams.limit\n      };\n    }\n    return defaultParams;\n  }\n})() }}"
      },
      "type": "n8n-nodes-mcp.mcpClientTool",
      "typeVersion": 1,
      "position": [
        300,
        640
      ],
      "id": "d3547c5f-d58f-47b7-b649-89d758dd2751",
      "name": "search_documentation",
      "credentials": {
        "mcpClientSseApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "select": "channel",
        "channelId": {
          "__rl": true,
          "value": "C0AAYM5AMU2",
          "mode": "list",
          "cachedResultName": "informatics-wu"
        },
        "text": "={{ $('Validator Agent').first().json.output }}",
        "otherOptions": {}
      },
      "type": "n8n-nodes-base.slack",
      "typeVersion": 2.3,
      "position": [
        640,
        220
      ],
      "id": "45c4310d-c14d-4dfa-be53-73d4a211e966",
      "name": "Slack",
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "={{$json[\"original_question\"]}}",
        "options": {
          "systemMessage": "=CORE IDENTITY\nYou are a professional Documentation Management Agent with RAG (Retrieval-Augmented Generation) capabilities. Your primary goals are EFFICIENT DOCUMENTATION MANAGEMENT, ACCURATE RETRIEVAL, and COMPREHENSIVE KNOWLEDGE BASE BUILDING.\n\nTOOL USAGE REQUIREMENT\nYou MUST use documentation tools for every documentation-related request. You cannot provide documentation analysis without using the actual tools.\n\nAVAILABLE TOOLS\n1. add_documentation - Add documentation from a URL to the RAG database\n2. search_documentation - Search through stored documentation\n3. list_sources - List all documentation sources currently stored\n4. add_directory - Add all supported files from a directory to the RAG database\n\nMANDATORY OUTPUT FORMAT\nEvery operation MUST include:\nREQUEST: [restate user request]\nTOOL SELECTED: [which tool and why]\nPARAMETERS USED:\n[exact parameters in JSON format]\nEXECUTION STATUS: [SUCCESS/FAILED/ERROR]\nRAW RESULTS: [actual response from tool]\nACTION SUMMARY: [what was accomplished or what went wrong]\nNEXT STEPS: [recommendations for follow-up actions if needed]\n\nWORKFLOW PATTERNS\n\nPattern 1: Adding New Documentation\n- Use add_documentation for URLs\n- Use add_directory for local folders\n- Always verify with list_sources after adding\n\nPattern 2: Searching Documentation\n- First use list_sources to understand available sources\n- Then use search_documentation with relevant queries\n- Refine search if initial results insufficient\n\nPattern 3: Knowledge Base Maintenance\n- Regularly list_sources to audit content\n- Search before adding to avoid duplicates\n- Build comprehensive coverage systematically\n\nERROR HANDLING\n- If add fails: Check URL/path validity\n- If search returns empty: Try broader terms\n- If tool errors: Report exact error message\n- Always provide alternative approaches",
          "maxIterations": 50
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1.9,
      "position": [
        -440,
        220
      ],
      "id": "65df7c9d-b4b1-4f67-86e8-93d5426da036",
      "name": "RAG Agent",
      "alwaysOutputData": false,
      "retryOnFail": true
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=\u0e04\u0e38\u0e13\u0e40\u0e1b\u0e47\u0e19 Quality Assurance & Synthesis Agent\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nINPUT \u0e08\u0e32\u0e01 RAG Agent\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n{{ $('RAG Agent').first().json.output }}\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\u0e07\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e17\u0e35\u0e48 1: VALIDATE \u2014 \u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n- \u0e2d\u0e48\u0e32\u0e19 RAW RESULTS \u0e2d\u0e22\u0e48\u0e32\u0e07\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14\n- \u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e01\u0e31\u0e1a ACTION SUMMARY\n- \u0e23\u0e30\u0e1a\u0e38\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19 ACTION SUMMARY \u0e41\u0e15\u0e48\u0e44\u0e21\u0e48\u0e21\u0e35\u0e43\u0e19 RAW RESULTS\n- \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e2b\u0e25\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e41\u0e22\u0e01\u0e44\u0e1b\u0e43\u0e2a\u0e48\u0e43\u0e19\u0e2a\u0e48\u0e27\u0e19 \"\u0e02\u0e49\u0e2d\u0e40\u0e2a\u0e19\u0e2d\u0e41\u0e19\u0e30\" \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48 \"\u0e04\u0e33\u0e15\u0e2d\u0e1a\"\n\n\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e17\u0e35\u0e48 2: SYNTHESIZE \u2014 \u0e2a\u0e31\u0e07\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c\u0e04\u0e33\u0e15\u0e2d\u0e1a\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n- \u0e15\u0e2d\u0e1a\u0e04\u0e33\u0e16\u0e32\u0e21\u0e43\u0e19 REQUEST \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e08\u0e32\u0e01 RAW RESULTS\n- \u0e08\u0e31\u0e14\u0e42\u0e04\u0e23\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e43\u0e2b\u0e49\u0e2d\u0e48\u0e32\u0e19\u0e07\u0e48\u0e32\u0e22:\n  \u2022 \u0e16\u0e49\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e33\u0e16\u0e32\u0e21\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a \u2192 \u0e43\u0e0a\u0e49\u0e15\u0e32\u0e23\u0e32\u0e07\n  \u2022 \u0e16\u0e49\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e33\u0e16\u0e32\u0e21\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19 \u2192 \u0e43\u0e0a\u0e49\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\n  \u2022 \u0e16\u0e49\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e33\u0e16\u0e32\u0e21 decision tree \u2192 \u0e43\u0e0a\u0e49 flowchart \u0e2b\u0e23\u0e37\u0e2d tree structure\n- \u0e43\u0e0a\u0e49\u0e20\u0e32\u0e29\u0e32\u0e17\u0e35\u0e48\u0e40\u0e02\u0e49\u0e32\u0e43\u0e08\u0e07\u0e48\u0e32\u0e22 \u0e01\u0e23\u0e30\u0e0a\u0e31\u0e1a \u0e15\u0e23\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e14\u0e47\u0e19\n\n\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e17\u0e35\u0e48 3: IDENTIFY GAPS \u2014 \u0e23\u0e30\u0e1a\u0e38\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n- \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2d\u0e30\u0e44\u0e23\u0e17\u0e35\u0e48\u0e04\u0e27\u0e23\u0e21\u0e35\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e15\u0e2d\u0e1a\u0e04\u0e33\u0e16\u0e32\u0e21\u0e44\u0e14\u0e49\u0e2a\u0e21\u0e1a\u0e39\u0e23\u0e13\u0e4c \u0e41\u0e15\u0e48\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e43\u0e19 RAW RESULTS?\n- \u0e23\u0e30\u0e1a\u0e38\u0e43\u0e2b\u0e49\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\u0e27\u0e48\u0e32\u0e02\u0e32\u0e14\u0e2d\u0e30\u0e44\u0e23\n\n\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e17\u0e35\u0e48 4: SEPARATE \u2014 \u0e41\u0e22\u0e01\u0e02\u0e49\u0e2d\u0e40\u0e2a\u0e19\u0e2d\u0e41\u0e19\u0e30\n\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n- \u0e2b\u0e32\u0e01 Agent 1 \u0e43\u0e2a\u0e48 NEXT STEPS \u0e2b\u0e23\u0e37\u0e2d\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e21\u0e35\u0e43\u0e19 RAW RESULTS\n- \u0e43\u0e2b\u0e49\u0e41\u0e22\u0e01\u0e44\u0e1b\u0e43\u0e2a\u0e48\u0e43\u0e19\u0e2a\u0e48\u0e27\u0e19 \"\u0e02\u0e49\u0e2d\u0e40\u0e2a\u0e19\u0e2d\u0e41\u0e19\u0e30\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21\"\n- \u0e23\u0e30\u0e1a\u0e38\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\u0e27\u0e48\u0e32 \u26a0\ufe0f \"\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e21\u0e32\u0e08\u0e32\u0e01\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\"\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e23\u0e23\u0e30\u0e27\u0e31\u0e07\u0e1e\u0e34\u0e40\u0e28\u0e29\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n\u0e2b\u0e49\u0e32\u0e21\u0e43\u0e2a\u0e48\u0e43\u0e19\u0e2a\u0e48\u0e27\u0e19 \"\u0e04\u0e33\u0e15\u0e2d\u0e1a\" \u0e2b\u0e32\u0e01\u0e44\u0e21\u0e48\u0e21\u0e35\u0e43\u0e19 RAW RESULTS:\n\u274c \u0e23\u0e30\u0e22\u0e30\u0e40\u0e27\u0e25\u0e32 (\u0e40\u0e0a\u0e48\u0e19 \"2-3 \u0e27\u0e31\u0e19\u0e17\u0e33\u0e01\u0e32\u0e23\", \"\u0e20\u0e32\u0e22\u0e43\u0e19 24 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07\")\n\u274c \u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21 (\u0e40\u0e0a\u0e48\u0e19 \"\u0e17\u0e33 Log\", \"\u0e2a\u0e48\u0e07 Receipt\", \"\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\")\n\u274c \u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21 (\u0e40\u0e0a\u0e48\u0e19 \"\u0e2b\u0e32\u0e01\u0e40\u0e01\u0e34\u0e19\u0e27\u0e07\u0e40\u0e07\u0e34\u0e19\", \"\u0e27\u0e07\u0e40\u0e07\u0e34\u0e19 > limit\")\n\u274c \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e41\u0e08\u0e49\u0e07\u0e25\u0e39\u0e01\u0e04\u0e49\u0e32\u0e17\u0e35\u0e48\u0e04\u0e34\u0e14\u0e40\u0e2d\u0e07\n\u274c \u0e1c\u0e25\u0e01\u0e23\u0e30\u0e17\u0e1a\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e30\u0e1a\u0e38\u0e43\u0e19\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\n\n\u0e2b\u0e32\u0e01\u0e44\u0e21\u0e48\u0e41\u0e19\u0e48\u0e43\u0e08 \u2192 \u0e43\u0e2b\u0e49\u0e23\u0e30\u0e1a\u0e38\u0e27\u0e48\u0e32 \"\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e43\u0e19\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\" \u0e41\u0e17\u0e19\u0e01\u0e32\u0e23\u0e04\u0e32\u0e14\u0e40\u0e14\u0e32",
        "options": {
          "systemMessage": "=\u0e04\u0e38\u0e13\u0e40\u0e1b\u0e47\u0e19 Quality Assurance & Synthesis Agent \u0e17\u0e33\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e41\u0e25\u0e30\u0e2a\u0e31\u0e07\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c\u0e04\u0e33\u0e15\u0e2d\u0e1a\u0e08\u0e32\u0e01\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48 RAG Agent \u0e14\u0e36\u0e07\u0e21\u0e32\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e2b\u0e25\u0e31\u0e01\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n1. VALIDATE \u2014 \u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e27\u0e48\u0e32\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e19 ACTION SUMMARY \u0e21\u0e35\u0e17\u0e35\u0e48\u0e21\u0e32\u0e08\u0e32\u0e01 RAW RESULTS \u0e08\u0e23\u0e34\u0e07\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48\n2. SYNTHESIZE \u2014 \u0e2a\u0e31\u0e07\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c\u0e04\u0e33\u0e15\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e15\u0e23\u0e07\u0e04\u0e33\u0e16\u0e32\u0e21\u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49 \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e08\u0e32\u0e01 RAW RESULTS\n3. SEPARATE \u2014 \u0e41\u0e22\u0e01 \"\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e08\u0e32\u0e01\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\" \u0e01\u0e31\u0e1a \"\u0e02\u0e49\u0e2d\u0e40\u0e2a\u0e19\u0e2d\u0e41\u0e19\u0e30\u0e17\u0e35\u0e48 Agent \u0e04\u0e34\u0e14\u0e40\u0e2d\u0e07\" \u0e43\u0e2b\u0e49\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\n4. IDENTIFY GAPS \u2014 \u0e23\u0e30\u0e1a\u0e38\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e02\u0e32\u0e14\u0e2b\u0e32\u0e22\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e43\u0e19\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\u0e01\u0e0e\u0e2a\u0e33\u0e04\u0e31\u0e0d (CRITICAL RULES)\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n\u2705 \u0e15\u0e49\u0e2d\u0e07\u0e17\u0e33:\n- \u0e43\u0e0a\u0e49\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e1b\u0e23\u0e32\u0e01\u0e0f\u0e43\u0e19 RAW RESULTS \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e2a\u0e48\u0e27\u0e19 \"\u0e04\u0e33\u0e15\u0e2d\u0e1a\"\n- \u0e23\u0e30\u0e1a\u0e38 \"\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e43\u0e19\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\" \u0e2d\u0e22\u0e48\u0e32\u0e07\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e21\u0e48\u0e04\u0e23\u0e1a\n- \u0e41\u0e22\u0e01\u0e02\u0e49\u0e2d\u0e40\u0e2a\u0e19\u0e2d\u0e41\u0e19\u0e30\u0e02\u0e2d\u0e07 Agent 1 (NEXT STEPS) \u0e44\u0e1b\u0e44\u0e27\u0e49\u0e2a\u0e48\u0e27\u0e19\u0e17\u0e49\u0e32\u0e22\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\n- \u0e2d\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e07\u0e41\u0e2b\u0e25\u0e48\u0e07\u0e17\u0e35\u0e48\u0e21\u0e32\u0e02\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e38\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e44\u0e1b\u0e44\u0e14\u0e49\n\n\u274c \u0e2b\u0e49\u0e32\u0e21\u0e17\u0e33:\n- \u0e2b\u0e49\u0e32\u0e21\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e15\u0e31\u0e27\u0e40\u0e25\u0e02 \u0e23\u0e30\u0e22\u0e30\u0e40\u0e27\u0e25\u0e32 \u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e21\u0e35\u0e43\u0e19\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23 (\u0e40\u0e0a\u0e48\u0e19 \"2-3 \u0e27\u0e31\u0e19\u0e17\u0e33\u0e01\u0e32\u0e23\", \"\u0e20\u0e32\u0e22\u0e43\u0e19 24 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07\")\n- \u0e2b\u0e49\u0e32\u0e21\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e21\u0e35\u0e43\u0e19\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23 (\u0e40\u0e0a\u0e48\u0e19 \"\u0e17\u0e33 Log\", \"\u0e2a\u0e48\u0e07 Receipt\", \"\u0e2a\u0e48\u0e07 Email\")\n- \u0e2b\u0e49\u0e32\u0e21\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e21\u0e35\u0e43\u0e19\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23 (\u0e40\u0e0a\u0e48\u0e19 \"\u0e27\u0e07\u0e40\u0e07\u0e34\u0e19 > limit\", \"\u0e2b\u0e32\u0e01\u0e40\u0e01\u0e34\u0e19\u0e27\u0e07\u0e40\u0e07\u0e34\u0e19\")\n- \u0e2b\u0e49\u0e32\u0e21\u0e2a\u0e21\u0e21\u0e15\u0e34\u0e2b\u0e23\u0e37\u0e2d\u0e04\u0e32\u0e14\u0e40\u0e14\u0e32\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e21\u0e35\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e2d\u0e1a (OUTPUT FORMAT)\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n## \u0e04\u0e33\u0e15\u0e2d\u0e1a (\u0e08\u0e32\u0e01\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23)\n[\u0e2a\u0e31\u0e07\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c\u0e04\u0e33\u0e15\u0e2d\u0e1a\u0e08\u0e32\u0e01 RAW RESULTS \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19]\n[\u0e08\u0e31\u0e14\u0e42\u0e04\u0e23\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e43\u0e2b\u0e49\u0e40\u0e2b\u0e21\u0e32\u0e30\u0e2a\u0e21: \u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19, \u0e15\u0e32\u0e23\u0e32\u0e07, \u0e2b\u0e31\u0e27\u0e02\u0e49\u0e2d\u0e22\u0e48\u0e2d\u0e22 \u0e15\u0e32\u0e21\u0e04\u0e27\u0e32\u0e21\u0e40\u0e2b\u0e21\u0e32\u0e30\u0e2a\u0e21\u0e02\u0e2d\u0e07\u0e04\u0e33\u0e16\u0e32\u0e21]\n\n## \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e43\u0e19\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\n[\u0e23\u0e30\u0e1a\u0e38\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e04\u0e27\u0e23\u0e21\u0e35\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e15\u0e2d\u0e1a\u0e04\u0e33\u0e16\u0e32\u0e21\u0e44\u0e14\u0e49\u0e2a\u0e21\u0e1a\u0e39\u0e23\u0e13\u0e4c \u0e41\u0e15\u0e48\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e43\u0e19 RAW RESULTS]\n[\u0e16\u0e49\u0e32\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19 \u0e43\u0e2b\u0e49\u0e23\u0e30\u0e1a\u0e38 \"\u0e44\u0e21\u0e48\u0e21\u0e35 \u2014 \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19\"]\n\n## \u0e02\u0e49\u0e2d\u0e40\u0e2a\u0e19\u0e2d\u0e41\u0e19\u0e30\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21 (\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e21\u0e32\u0e08\u0e32\u0e01\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23)\n\u26a0\ufe0f \u0e2a\u0e48\u0e27\u0e19\u0e19\u0e35\u0e49\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e08\u0e32\u0e01\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23 \u2014 \u0e40\u0e1b\u0e47\u0e19\u0e02\u0e49\u0e2d\u0e40\u0e2a\u0e19\u0e2d\u0e41\u0e19\u0e30\u0e08\u0e32\u0e01 AI Agent\n[\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e08\u0e32\u0e01 NEXT STEPS \u0e02\u0e2d\u0e07 Agent 1 \u0e2b\u0e23\u0e37\u0e2d\u0e04\u0e33\u0e41\u0e19\u0e30\u0e19\u0e33\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b]\n[\u0e16\u0e49\u0e32\u0e44\u0e21\u0e48\u0e21\u0e35 \u0e43\u0e2b\u0e49\u0e23\u0e30\u0e1a\u0e38 \"\u0e44\u0e21\u0e48\u0e21\u0e35\"]\n\n## \u0e23\u0e30\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e31\u0e48\u0e19\n[\u0e2a\u0e39\u0e07 / \u0e1b\u0e32\u0e19\u0e01\u0e25\u0e32\u0e07 / \u0e15\u0e48\u0e33] \u2014 [\u0e40\u0e2b\u0e15\u0e38\u0e1c\u0e25\u0e2a\u0e31\u0e49\u0e19\u0e46]\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\u0e27\u0e34\u0e18\u0e35\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 (VALIDATION CHECKLIST)\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e17\u0e38\u0e01\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e08\u0e30\u0e43\u0e2a\u0e48\u0e43\u0e19\u0e2a\u0e48\u0e27\u0e19 \"\u0e04\u0e33\u0e15\u0e2d\u0e1a\" \u0e43\u0e2b\u0e49\u0e16\u0e32\u0e21\u0e15\u0e31\u0e27\u0e40\u0e2d\u0e07\u0e27\u0e48\u0e32:\n\u25a1 \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e19\u0e35\u0e49\u0e1b\u0e23\u0e32\u0e01\u0e0f\u0e43\u0e19 RAW RESULTS \u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48?\n\u25a1 \u0e16\u0e49\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e31\u0e27\u0e40\u0e25\u0e02/\u0e23\u0e30\u0e22\u0e30\u0e40\u0e27\u0e25\u0e32 \u2014 \u0e21\u0e35\u0e23\u0e30\u0e1a\u0e38\u0e43\u0e19 RAW RESULTS \u0e08\u0e23\u0e34\u0e07\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48?\n\u25a1 \u0e16\u0e49\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19 \u2014 \u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e19\u0e35\u0e49\u0e21\u0e35\u0e43\u0e19 RAW RESULTS \u0e2b\u0e23\u0e37\u0e2d\u0e04\u0e34\u0e14\u0e40\u0e2d\u0e07\u0e40\u0e1e\u0e34\u0e48\u0e21?\n\u25a1 \u0e16\u0e49\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02 \u2014 \u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02\u0e19\u0e35\u0e49\u0e21\u0e32\u0e08\u0e32\u0e01 RAW RESULTS \u0e2b\u0e23\u0e37\u0e2d\u0e2a\u0e21\u0e21\u0e15\u0e34\u0e02\u0e36\u0e49\u0e19?\n\n\u0e2b\u0e32\u0e01\u0e15\u0e2d\u0e1a \"\u0e44\u0e21\u0e48\" \u0e02\u0e49\u0e2d\u0e43\u0e14\u0e02\u0e49\u0e2d\u0e2b\u0e19\u0e36\u0e48\u0e07 \u2192 \u0e2b\u0e49\u0e32\u0e21\u0e43\u0e2a\u0e48\u0e43\u0e19\u0e2a\u0e48\u0e27\u0e19 \"\u0e04\u0e33\u0e15\u0e2d\u0e1a\""
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1.9,
      "position": [
        280,
        220
      ],
      "id": "a8af551c-850f-4325-9252-b6f4d69050d2",
      "name": "Validator Agent"
    }
  ],
  "connections": {
    "When chat message received": {
      "main": [
        [
          {
            "node": "Question memorizer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "RAG Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "If": {
      "main": [
        [
          {
            "node": "Question memorizer",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Validator Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Question memorizer": {
      "main": [
        [
          {
            "node": "RAG Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model by OpenRouter": {
      "ai_languageModel": [
        [
          {
            "node": "RAG Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model by OpenRouter-1": {
      "ai_languageModel": [
        [
          {
            "node": "Validator Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "get_database_info_tool": {
      "ai_tool": [
        []
      ]
    },
    "execute_query_tool": {
      "ai_tool": [
        []
      ]
    },
    "preview_table": {
      "ai_tool": [
        []
      ]
    },
    "list_sources": {
      "ai_tool": [
        [
          {
            "node": "RAG Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "add_directory": {
      "ai_tool": [
        [
          {
            "node": "RAG Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "search_documentation": {
      "ai_tool": [
        [
          {
            "node": "RAG Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "RAG Agent": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Validator Agent": {
      "main": [
        [
          {
            "node": "Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "3fa1e05b-1056-4991-ab6b-65fdff6c9466",
  "id": "TztlxZiT7LzKyTUW",
  "tags": [
    {
      "createdAt": "2025-11-14T01:05:46.911Z",
      "updatedAt": "2025-11-14T01:05:46.911Z",
      "id": "61eKOcibJk5Xh2JU",
      "name": "tested@10Sep2025"
    },
    {
      "createdAt": "2025-11-13T14:56:07.988Z",
      "updatedAt": "2025-11-13T14:56:07.988Z",
      "id": "Wl6wS6PK5KlNbCz6",
      "name": "in-progress"
    },
    {
      "createdAt": "2025-11-14T01:05:46.917Z",
      "updatedAt": "2025-11-14T01:05:46.917Z",
      "id": "pAnndpROLQK9UKah",
      "name": "tested@8Sep2025"
    }
  ]
}