{
  "id": "bB57PHGi6PT6kDou",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "32  Track Sales Rep Performance",
  "tags": [],
  "nodes": [
    {
      "id": "3a81bea5-aad7-43af-a555-e7be29f9f59a",
      "name": "\u26a1 Start Scraping (Manual Trigger)",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -500,
        -80
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "81b6c9eb-17b7-45b0-abf8-4cdf31bf3b50",
      "name": " \ud83d\udd17 Set MCP Source URL",
      "type": "n8n-nodes-base.set",
      "position": [
        -280,
        -80
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "5357cffe-b338-4852-a0ca-b9d9cf0700a1",
              "name": "activityURL",
              "type": "string",
              "value": "https://jsonplaceholder.typicode.com/todos"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "f9d0f0d5-1dd7-4d85-b55c-3e84cfbf6918",
      "name": "\ud83e\udd16 Analyze Sales Rep Performance ",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        0,
        -80
      ],
      "parameters": {
        "text": "=You are a web scraper and data analyzer connected to Bright Data\u2019s MCP tool.\n\nScrape the following URL:\n{{ $json.activityURL }}\n\nEach item in the data represents a sales rep activity. The \"userId\" is the rep ID, \"title\" is the task name, and \"completed\" is task status.\n\nStep 1: Group tasks by each userId (rep).\nStep 2: For each rep, calculate:\n\ntotalTasks\n\ncompletedTasks\n\nincompleteTasks\n\ncompletionRate (as percentage)\nStep 3: Rank reps from highest to lowest completion rate.\nStep 4: Add a field coachingRecommended: true if completionRate is less than 70%, false otherwise.",
        "options": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2
    },
    {
      "id": "947d6147-93ed-49be-91ad-6f9970be50e7",
      "name": "\ud83e\udde0 AI Brain (OpenAI)",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -80,
        180
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "d5b17f70-e99e-4424-a047-9fafb86aa8dc",
      "name": "\ud83c\udf10 Bright Data MCP Tool",
      "type": "n8n-nodes-mcp.mcpClientTool",
      "position": [
        80,
        160
      ],
      "parameters": {
        "toolName": "scrape_as_markdown",
        "operation": "executeTool",
        "toolParameters": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Tool_Parameters', ``, 'json') }}"
      },
      "credentials": {
        "mcpClientApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "b3e71d48-9247-431f-a384-8b087f25157e",
      "name": "\ud83e\udde9 Split JSON to Individual Records",
      "type": "n8n-nodes-base.code",
      "position": [
        460,
        -80
      ],
      "parameters": {
        "jsCode": "return items[0].json.output.map(rep => {\nreturn {\njson: {\nrepId: rep.repId,\ntotalTasks: rep.totalTasks,\ncompletedTasks: rep.completedTasks,\nincompleteTasks: rep.incompleteTasks,\ncompletionRate: rep.completionRate,\ncoachingRecommended: rep.coachingRecommended\n}\n};\n});"
      },
      "typeVersion": 2
    },
    {
      "id": "a4b9a8a4-bca2-46d9-ab45-fee4e9cf49de",
      "name": " \ud83d\udcca Store Rep Performance (Google Sheets)",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        640,
        -80
      ],
      "parameters": {
        "columns": {
          "value": {
            "repId": "={{ $json.repId }}",
            "totalTasks": "={{ $json.totalTasks }}",
            "completedTasks": "={{ $json.completedTasks }}",
            "completionRate": "={{ $json.completionRate }}",
            "incompletedTasks": "={{ $json.incompleteTasks }}",
            "coachingRecomended": "={{ $json.coachingRecommended }}"
          },
          "schema": [
            {
              "id": "repId",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "repId",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "totalTasks",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "totalTasks",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "completedTasks",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "completedTasks",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "incompletedTasks",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "incompletedTasks",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "completionRate",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "completionRate",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "coachingRecomended",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "coachingRecomended",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ybPVtArYMojjWfT5EJyiC8I666ZhfQAWAeQ0A8Qidjg/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1ybPVtArYMojjWfT5EJyiC8I666ZhfQAWAeQ0A8Qidjg",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ybPVtArYMojjWfT5EJyiC8I666ZhfQAWAeQ0A8Qidjg/edit?usp=drivesdk",
          "cachedResultName": "Track Sales Rep Performance"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "2db26570-4de1-498b-ad8d-e49833ca8b48",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -560,
        -780
      ],
      "parameters": {
        "color": 7,
        "width": 440,
        "height": 900,
        "content": "## \ud83d\udd39 SECTION 1: Input & Trigger\n\n\ud83e\udde9 Combines:\n\n* \u26a1 Start Scraping (Manual Trigger)\n* \ud83d\udd17 Set MCP Source URL\n\n\ud83e\udde0 What Happens:\nThis section lets you kick off the workflow and define where the data should come from.\n\n\ud83d\udcdd How It Works:\n\n1. You manually run the workflow (great for testing or scheduled automation).\n2. In the Set node, you paste the URL to scrape. In this example, it's a placeholder:\n   \u2192 [https://jsonplaceholder.typicode.com](https://jsonplaceholder.typicode.com)\n\n\ud83d\udcc8 Real-World Example:\nYou can change this to the MCP URL that fetches your sales performance dashboard from Bright Data.\n\n\ud83c\udf1f Benefits:\n\u2705 Beginner-friendly \u2013 no technical steps\n\u2705 Fully customizable \u2013 just replace the placeholder with your real URL\n\u2705 Works instantly \u2013 click + paste = done\n\n\ud83c\udfaf Icons Summary:\n\u26a1 = Start\n\ud83d\udd17 = Define Target Source"
      },
      "typeVersion": 1
    },
    {
      "id": "ca28cb46-e2fd-46b9-b1b7-057bf4a20d24",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -80,
        -1220
      ],
      "parameters": {
        "color": 6,
        "width": 440,
        "height": 1340,
        "content": "## \ud83e\udd16 SECTION 2: AI Scraper & Analyzer (Bright Data MCP + AI Agent)\n\n\ud83e\udde9 Combines:\n\n* \ud83e\udd16 Analyze Sales Rep Performance (AI Agent)\n\n  * \ud83e\udde0 AI Brain (OpenAI)\n  * \ud83c\udf10 Bright Data MCP Tool: scrape\\_as\\_markdown\n  * \ud83e\uddfe Structured Response Parser\n\n\ud83e\udde0 What Happens:\nThis section is the heart of the workflow. It uses AI to read and scrape the webpage, process performance results, and return clean, structured JSON data.\n\n\ud83d\udcdd How It Works:\n\n1. \ud83e\udde0 OpenAI receives instructions like:\n   \u2192 \u201cScrape latest sales rep performance. Include repId, completedTasks, ranking, coaching suggestions, return as JSON.\u201d\n\n2. \ud83c\udf10 Bright Data\u2019s MCP executes this by visiting the URL using mobile proxies and scraping the page as markdown (bypassing anti-bot protections).\n\n3. \ud83e\uddfe The Structured Output Parser turns the result into a usable JSON array of sales reps with performance metrics.\n\n\ud83e\uddea Output Example:\n\n```json\n[\n  {\n    \"repId\": 12,\n    \"completedTasks\": 18,\n    \"coachingRecommended\": false\n  },\n  ...\n]\n```\n\n\ud83c\udf1f Benefits:\n\u2705 Uses real-time AI scraping \u2014 no code, no manual labor\n\u2705 100% structured output for automation\n\u2705 Scalable \u2014 works for 5 reps or 5,000!\n\n\ud83c\udfaf Icons Summary:\n\ud83e\udd16 = AI Agent\n\ud83e\udde0 = AI Brain\n\ud83c\udf10 = Scrape using Bright Data MCP\n\ud83e\uddfe = Convert to JSON"
      },
      "typeVersion": 1
    },
    {
      "id": "a63a1c64-7df3-41a4-9b1b-ece10b73ef60",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        400,
        -880
      ],
      "parameters": {
        "color": 5,
        "width": 420,
        "height": 1000,
        "content": "## \ud83d\udcca SECTION 3: Process & Store in Google Sheets\n\n\ud83e\udde9 Combines:\n\n* \ud83e\udde9 Split JSON to Individual Records (Function Node)\n* \ud83d\udcca Store Rep Performance (Google Sheets)\n\n\ud83e\udde0 What Happens:\nNow that we have structured performance data, we break it into clean individual rows and save them in a Google Sheet.\n\n\ud83d\udcdd How It Works:\n\n1. \ud83e\udde9 The function node splits the array of reps into individual entries.\n   \u2192 Converts one big object with 10 reps \u2192 into 10 separate rows.\n\n2. \ud83d\udcca The Google Sheets node appends each row:\n   \u2192 Columns like repId, completedTasks, ranking, coachingRecommended\n\n\ud83d\udcc8 Real-World Use:\nPerfect for tracking KPIs, building dashboards, or creating team reports without spreadsheets manual work!\n\n\ud83c\udf1f Benefits:\n\u2705 Automatically stores structured data\n\u2705 Compatible with dashboards and analytics tools\n\u2705 Hands-free performance reporting!\n\n\ud83c\udfaf Icons Summary:\n\ud83e\udde9 = Split records\n\ud83d\udcca = Store in Google Sheets\n"
      },
      "typeVersion": 1
    },
    {
      "id": "35bc1f15-dfa8-4435-a233-319da5da91a1",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2120,
        -980
      ],
      "parameters": {
        "color": 4,
        "width": 1300,
        "height": 2920,
        "content": "# \ud83d\ude80 Sales Rep Performance Scraper & Analyzer (n8n + Bright Data + AI)\n\nThis smart automation lets you scrape performance data about your sales reps from a source (like Bright Data\u2019s MCP), extract meaningful insights (like rankings, completed tasks, coaching suggestions), and save them beautifully into Google Sheets \u2014 no coding required!\n\nLet\u2019s break it down section-by-section:\n\n---\n\n## \ud83d\udd39 SECTION 1: Input & Trigger\n\n\ud83e\udde9 Combines:\n\n* \u26a1 Start Scraping (Manual Trigger)\n* \ud83d\udd17 Set MCP Source URL\n\n\ud83e\udde0 What Happens:\nThis section lets you kick off the workflow and define where the data should come from.\n\n\ud83d\udcdd How It Works:\n\n1. You manually run the workflow (great for testing or scheduled automation).\n2. In the Set node, you paste the URL to scrape. In this example, it's a placeholder:\n   \u2192 [https://jsonplaceholder.typicode.com](https://jsonplaceholder.typicode.com)\n\n\ud83d\udcc8 Real-World Example:\nYou can change this to the MCP URL that fetches your sales performance dashboard from Bright Data.\n\n\ud83c\udf1f Benefits:\n\u2705 Beginner-friendly \u2013 no technical steps\n\u2705 Fully customizable \u2013 just replace the placeholder with your real URL\n\u2705 Works instantly \u2013 click + paste = done\n\n\ud83c\udfaf Icons Summary:\n\u26a1 = Start\n\ud83d\udd17 = Define Target Source\n\n---\n\n## \ud83e\udd16 SECTION 2: AI Scraper & Analyzer (Bright Data MCP + AI Agent)\n\n\ud83e\udde9 Combines:\n\n* \ud83e\udd16 Analyze Sales Rep Performance (AI Agent)\n\n  * \ud83e\udde0 AI Brain (OpenAI)\n  * \ud83c\udf10 Bright Data MCP Tool: scrape\\_as\\_markdown\n  * \ud83e\uddfe Structured Response Parser\n\n\ud83e\udde0 What Happens:\nThis section is the heart of the workflow. It uses AI to read and scrape the webpage, process performance results, and return clean, structured JSON data.\n\n\ud83d\udcdd How It Works:\n\n1. \ud83e\udde0 OpenAI receives instructions like:\n   \u2192 \u201cScrape latest sales rep performance. Include repId, completedTasks, ranking, coaching suggestions, return as JSON.\u201d\n\n2. \ud83c\udf10 Bright Data\u2019s MCP executes this by visiting the URL using mobile proxies and scraping the page as markdown (bypassing anti-bot protections).\n\n3. \ud83e\uddfe The Structured Output Parser turns the result into a usable JSON array of sales reps with performance metrics.\n\n\ud83e\uddea Output Example:\n\n```json\n[\n  {\n    \"repId\": 12,\n    \"completedTasks\": 18,\n    \"coachingRecommended\": false\n  },\n  ...\n]\n```\n\n\ud83c\udf1f Benefits:\n\u2705 Uses real-time AI scraping \u2014 no code, no manual labor\n\u2705 100% structured output for automation\n\u2705 Scalable \u2014 works for 5 reps or 5,000!\n\n\ud83c\udfaf Icons Summary:\n\ud83e\udd16 = AI Agent\n\ud83e\udde0 = AI Brain\n\ud83c\udf10 = Scrape using Bright Data MCP\n\ud83e\uddfe = Convert to JSON\n\n---\n\n## \ud83d\udcca SECTION 3: Process & Store in Google Sheets\n\n\ud83e\udde9 Combines:\n\n* \ud83e\udde9 Split JSON to Individual Records (Function Node)\n* \ud83d\udcca Store Rep Performance (Google Sheets)\n\n\ud83e\udde0 What Happens:\nNow that we have structured performance data, we break it into clean individual rows and save them in a Google Sheet.\n\n\ud83d\udcdd How It Works:\n\n1. \ud83e\udde9 The function node splits the array of reps into individual entries.\n   \u2192 Converts one big object with 10 reps \u2192 into 10 separate rows.\n\n2. \ud83d\udcca The Google Sheets node appends each row:\n   \u2192 Columns like repId, completedTasks, ranking, coachingRecommended\n\n\ud83d\udcc8 Real-World Use:\nPerfect for tracking KPIs, building dashboards, or creating team reports without spreadsheets manual work!\n\n\ud83c\udf1f Benefits:\n\u2705 Automatically stores structured data\n\u2705 Compatible with dashboards and analytics tools\n\u2705 Hands-free performance reporting!\n\n\ud83c\udfaf Icons Summary:\n\ud83e\udde9 = Split records\n\ud83d\udcca = Store in Google Sheets\n\n---\n\n# \ud83c\udf81 Full Workflow Summary (Emoji Snapshot)\n\n| Step | Icon | Name                 | Description                        |\n| ---- | ---- | -------------------- | ---------------------------------- |\n| 1\ufe0f\u20e3  | \u26a1    | Start Scraping       | Manually start the workflow        |\n| 2\ufe0f\u20e3  | \ud83d\udd17   | Set MCP Source URL   | Define where the data comes from   |\n| 3\ufe0f\u20e3  | \ud83e\udd16   | AI Agent             | Smart scraper that thinks for you  |\n|      | \ud83e\udde0   | OpenAI Model         | Understands scraping instructions  |\n|      | \ud83c\udf10   | Bright Data Tool     | Actually scrapes the source        |\n|      | \ud83e\uddfe   | Output Parser        | Formats everything into clean JSON |\n| 4\ufe0f\u20e3  | \ud83e\udde9   | Split JSON           | Breaks array into rows             |\n| 5\ufe0f\u20e3  | \ud83d\udcca   | Save to Google Sheet | Appends results into spreadsheet   |\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "4e4b4be2-e443-40c4-b6a9-df32564c0843",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        860,
        -880
      ],
      "parameters": {
        "color": 7,
        "width": 380,
        "height": 240,
        "content": "## I\u2019ll receive a tiny commission if you join Bright Data through this link\u2014thanks for fueling more free content!\n\n### https://get.brightdata.com/1tndi4600b25"
      },
      "typeVersion": 1
    },
    {
      "id": "5ec158a5-1136-4047-9b42-0aa9d0816a0c",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2120,
        -1340
      ],
      "parameters": {
        "color": 4,
        "width": 1300,
        "height": 320,
        "content": "=======================================\n            WORKFLOW ASSISTANCE\n=======================================\nFor any questions or support, please contact:\n    Yaron@nofluff.online\n\nExplore more tips and tutorials here:\n   - YouTube: https://www.youtube.com/@YaronBeen/videos\n   - LinkedIn: https://www.linkedin.com/in/yaronbeen/\n=======================================\n"
      },
      "typeVersion": 1
    },
    {
      "id": "87667602-c4a6-44ae-8b02-a552e85de303",
      "name": "Auto-fixing Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserAutofixing",
      "position": [
        200,
        180
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "3e504880-d09a-44b5-9774-f89c1b7d85ad",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        160,
        400
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "ffc087e9-4d4a-4881-b731-6f0ecdbfc1d3",
      "name": "\ud83e\uddfe Structured Response Parser1",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        340,
        400
      ],
      "parameters": {
        "jsonSchemaExample": "[\n  {\n    \"repId\": 5,\n    \"totalTasks\": 20,\n    \"completedTasks\": 13,\n    \"incompleteTasks\": 7,\n    \"completionRate\": 65,\n    \"coachingRecommended\": true\n  },\n  {\n    \"repId\": 1,\n    \"totalTasks\": 20,\n    \"completedTasks\": 11,\n    \"incompleteTasks\": 9,\n    \"completionRate\": 55,\n    \"coachingRecommended\": true\n  },\n  {\n    \"repId\": 2,\n    \"totalTasks\": 20,\n    \"completedTasks\": 10,\n    \"incompleteTasks\": 10,\n    \"completionRate\": 50,\n    \"coachingRecommended\": true\n  },\n  {\n    \"repId\": 3,\n    \"totalTasks\": 20,\n    \"completedTasks\": 8,\n    \"incompleteTasks\": 12,\n    \"completionRate\": 40,\n    \"coachingRecommended\": true\n  },\n  {\n    \"repId\": 10,\n    \"totalTasks\": 20,\n    \"completedTasks\": 11,\n    \"incompleteTasks\": 9,\n    \"completionRate\": 55,\n    \"coachingRecommended\": true\n  },\n  {\n    \"repId\": 9,\n    \"totalTasks\": 20,\n    \"completedTasks\": 9,\n    \"incompleteTasks\": 11,\n    \"completionRate\": 45,\n    \"coachingRecommended\": true\n  },\n  {\n    \"repId\": 4,\n    \"totalTasks\": 20,\n    \"completedTasks\": 7,\n    \"incompleteTasks\": 13,\n    \"completionRate\": 35,\n    \"coachingRecommended\": true\n  },\n  {\n    \"repId\": 6,\n    \"totalTasks\": 20,\n    \"completedTasks\": 6,\n    \"incompleteTasks\": 14,\n    \"completionRate\": 30,\n    \"coachingRecommended\": true\n  },\n  {\n    \"repId\": 7,\n    \"totalTasks\": 20,\n    \"completedTasks\": 10,\n    \"incompleteTasks\": 10,\n    \"completionRate\": 50,\n    \"coachingRecommended\": true\n  },\n  {\n    \"repId\": 8,\n    \"totalTasks\": 20,\n    \"completedTasks\": 13,\n    \"incompleteTasks\": 7,\n    \"completionRate\": 65,\n    \"coachingRecommended\": true\n  }\n]\n"
      },
      "typeVersion": 1.3
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "e13736eb-09b4-4bd7-af0b-6b00f8b008bf",
  "connections": {
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Auto-fixing Output Parser",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "\ud83e\udde0 AI Brain (OpenAI)": {
      "ai_languageModel": [
        [
          {
            "node": "\ud83e\udd16 Analyze Sales Rep Performance ",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    " \ud83d\udd17 Set MCP Source URL": {
      "main": [
        [
          {
            "node": "\ud83e\udd16 Analyze Sales Rep Performance ",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Auto-fixing Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "\ud83e\udd16 Analyze Sales Rep Performance ",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "\ud83c\udf10 Bright Data MCP Tool": {
      "ai_tool": [
        [
          {
            "node": "\ud83e\udd16 Analyze Sales Rep Performance ",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "\ud83e\uddfe Structured Response Parser1": {
      "ai_outputParser": [
        [
          {
            "node": "Auto-fixing Output Parser",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "\u26a1 Start Scraping (Manual Trigger)": {
      "main": [
        [
          {
            "node": " \ud83d\udd17 Set MCP Source URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83e\udd16 Analyze Sales Rep Performance ": {
      "main": [
        [
          {
            "node": "\ud83e\udde9 Split JSON to Individual Records",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83e\udde9 Split JSON to Individual Records": {
      "main": [
        [
          {
            "node": " \ud83d\udcca Store Rep Performance (Google Sheets)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}