{
  "name": "Monitor e-commerce price changes with Decodo Scraper, OpenAI & Google Sheets",
  "nodes": [
    {
      "id": "93671f9f-fae5-4c02-887b-97a7dd4cd731",
      "name": "1. Multi-schedule Price Monitor",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        64,
        480
      ]
    },
    {
      "id": "b58c42c4-6125-4cd7-9f56-53e87b315fa2",
      "name": "2. Global Configuration",
      "type": "n8n-nodes-base.set",
      "position": [
        272,
        480
      ]
    },
    {
      "id": "85237bf6-2dc9-4aa3-9cb5-cb6b7c351960",
      "name": "3. Initial Aggregate (Pass-Through)",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        80,
        912
      ]
    },
    {
      "id": "c4bdce67-f1a5-484b-84df-e9e67b439ef7",
      "name": "4. Parse Product Targets (Function)",
      "type": "n8n-nodes-base.function",
      "position": [
        288,
        912
      ]
    },
    {
      "id": "be633766-2ab1-426b-a15d-5faea9f6aa65",
      "name": "5. Clone Items (Split In Batches)",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        96,
        1280
      ]
    },
    {
      "id": "6a5f48ee-6a16-42e0-a6c8-0d454f4e61a2",
      "name": "6. Map Threshold (Function)",
      "type": "n8n-nodes-base.function",
      "position": [
        304,
        1280
      ]
    },
    {
      "id": "8b6aca0d-a3cd-4537-824f-16a35bbec0f1",
      "name": "7. Decodo Web Scraper",
      "type": "@decodo/n8n-nodes-decodo.decodoTool",
      "position": [
        688,
        1616
      ]
    },
    {
      "id": "b48cb7fd-eb81-4036-8410-7cd9bd82c5f7",
      "name": "8. Intelligent Price Scraping Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        576,
        1280
      ]
    },
    {
      "id": "43aae2ff-a64e-4f93-9dcc-02bd428b9c27",
      "name": "9. Structured Price Data Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        896,
        1616
      ]
    },
    {
      "id": "5ff28412-4ae3-4d96-80b1-2a5eef49f4e5",
      "name": "10. OpenAI Price Analyzer (LLM)",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        528,
        1616
      ]
    },
    {
      "id": "404fafca-8497-41eb-9164-f4010a809e90",
      "name": "12. Price Analysis & Strategy Agent",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1264,
        1296
      ]
    },
    {
      "id": "2e5f270c-1a1e-43fd-8ad7-f08c35dbb8a4",
      "name": "13. OpenAI Strategy Model (LLM)",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1280,
        1648
      ]
    },
    {
      "id": "50baf2b3-862d-4c49-918b-7b383d0251cd",
      "name": "14. Advanced Price Condition Check (IF)",
      "type": "n8n-nodes-base.if",
      "position": [
        1840,
        1296
      ]
    },
    {
      "id": "cbc77dbf-1997-42c7-b675-17dbe03f8008",
      "name": "15. Critical vs. Standard Check (IF)",
      "type": "n8n-nodes-base.if",
      "position": [
        2032,
        1152
      ]
    },
    {
      "id": "0e139c62-8091-41f7-bbe8-7dfd23fb0999",
      "name": "16. Send CRITICAL Email",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2224,
        1008
      ]
    },
    {
      "id": "672dc7bd-2b56-4369-a1f1-49d1950a129a",
      "name": "17. Send STANDARD Email",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2224,
        1312
      ]
    },
    {
      "id": "bc9b9090-c918-4f40-b994-8bd3d501dda0",
      "name": "18. End of Batch (NoOp)",
      "type": "n8n-nodes-base.noOp",
      "position": [
        2096,
        1568
      ]
    },
    {
      "id": "67cf4a07-3db3-43c2-aadb-395a636dda9f",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1552,
        1856
      ]
    },
    {
      "id": "6c8c297c-d8e7-4991-aea1-5621bcbb2b47",
      "name": "Auto-fixing Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserAutofixing",
      "position": [
        1440,
        1632
      ]
    },
    {
      "id": "3c5a2cdc-3f14-4d90-9228-1d057bdc42eb",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1344,
        1872
      ]
    },
    {
      "id": "b0e52d7c-ce9f-49aa-930b-8be50ddb3bd2",
      "name": "Log Price Data to Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        928,
        1280
      ]
    },
    {
      "id": "e196f0dd-bb9c-4c20-9256-2d437715cd70",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -656,
        288
      ],
      "parameters": {
        "width": 368,
        "height": 688,
        "content": "## How it works\nThis workflow checks product prices on websites. It goes to the product page, reads the current price, and saves it in a Google Sheet. Then it checks if the price is below your set lim"
      }
    },
    {
      "id": "35c001e3-8d30-40ce-bc29-1aa5fe4f0a5b",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        16,
        304
      ],
      "parameters": {
        "width": 416,
        "height": 336,
        "content": "## Schedule & Setup\nThis part sets when the workflow runs (9 AM, 3 PM, 9 PM) and defines the products to watch, price limits, and alert emails."
      }
    },
    {
      "id": "cde33a0f-ff24-4ed6-8ddd-4ac9c6724682",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        48,
        768
      ],
      "parameters": {
        "width": 384,
        "height": 672,
        "content": "## Prepare Products\nThis part takes your product list and gets each product ready for checking. It gives each product its own price limit."
      }
    },
    {
      "id": "6b737945-ecaa-4f14-8022-1feaba9122b5",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        496,
        1104
      ],
      "parameters": {
        "width": 576,
        "height": 688,
        "content": "## Get Prices & Save Data\nHere, the tool visits product websites to find current prices using a scraper and AI. It then saves all the data to Google Sheets for records."
      }
    },
    {
      "id": "b190b4b0-85bb-45e1-8581-c74d32246af2",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1216,
        1104
      ],
      "parameters": {
        "width": 480,
        "height": 896,
        "content": "## Analyze Prices\nThe AI checks if the current price is below your limit. It decides if it is a CRITICAL or STANDARD alert and suggests what to do next."
      }
    },
    {
      "id": "2659d689-0fa5-48a5-bb04-625e7b875d66",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1808,
        864
      ],
      "parameters": {
        "width": 592,
        "height": 864,
        "content": "## Send Alerts\nThis part looks at the alert level and sends emails. CRITICAL alerts get urgent emails, and STANDARD alerts get normal emails."
      }
    }
  ],
  "connections": {
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Auto-fixing Output Parser",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "7. Decodo Web Scraper": {
      "ai_tool": [
        [
          {
            "node": "8. Intelligent Price Scraping Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "2. Global Configuration": {
      "main": [
        [
          {
            "node": "3. Initial Aggregate (Pass-Through)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Auto-fixing Output Parser",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Auto-fixing Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "12. Price Analysis & Strategy Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "6. Map Threshold (Function)": {
      "main": [
        [
          {
            "node": "8. Intelligent Price Scraping Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1. Multi-schedule Price Monitor": {
      "main": [
        [
          {
            "node": "2. Global Configuration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "10. OpenAI Price Analyzer (LLM)": {
      "ai_languageModel": [
        [
          {
            "node": "8. Intelligent Price Scraping Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "13. OpenAI Strategy Model (LLM)": {
      "ai_languageModel": [
        [
          {
            "node": "12. Price Analysis & Strategy Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "9. Structured Price Data Parser": {
      "ai_outputParser": [
        [
          {
            "node": "8. Intelligent Price Scraping Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Log Price Data to Google Sheets": {
      "main": [
        [
          {
            "node": "12. Price Analysis & Strategy Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5. Clone Items (Split In Batches)": {
      "main": [
        [
          {
            "node": "6. Map Threshold (Function)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "12. Price Analysis & Strategy Agent": {
      "main": [
        [
          {
            "node": "14. Advanced Price Condition Check (IF)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3. Initial Aggregate (Pass-Through)": {
      "main": [
        [
          {
            "node": "4. Parse Product Targets (Function)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4. Parse Product Targets (Function)": {
      "main": [
        [
          {
            "node": "5. Clone Items (Split In Batches)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8. Intelligent Price Scraping Agent": {
      "main": [
        [
          {
            "node": "Log Price Data to Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "15. Critical vs. Standard Check (IF)": {
      "main": [
        [
          {
            "node": "16. Send CRITICAL Email",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "17. Send STANDARD Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "14. Advanced Price Condition Check (IF)": {
      "main": [
        [
          {
            "node": "15. Critical vs. Standard Check (IF)",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "18. End of Batch (NoOp)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}