{
  "name": "Automatically track certification changes with ScrapeGraphAI, GitLab and Rocket.Chat",
  "nodes": [
    {
      "id": "5ef44be2-5506-4abd-9177-07c70b5b5522",
      "name": "Workflow Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -816,
        96
      ],
      "parameters": {
        "width": 550,
        "height": 834,
        "content": "## How it works\n\nThis workflow keeps an eye on changing certification requirements so busy professionals never miss an update. A daily Schedule Trigger kicks things off and feeds a small Code node tha"
      }
    },
    {
      "id": "cccca1d1-f591-41c6-9253-35fa82916685",
      "name": "Section – Data Collection",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        80,
        112
      ],
      "parameters": {
        "width": 450,
        "height": 862,
        "content": "## Data Collection & Scraping\n\nThis cluster is responsible for fetching the latest certification information every day. The Schedule Trigger runs at the cadence you choose (default: once every 24 hour"
      }
    },
    {
      "id": "08b02823-4383-499f-a708-d555de31d99f",
      "name": "Section – Change Detection",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        560,
        160
      ],
      "parameters": {
        "width": 450,
        "height": 526,
        "content": "## Comparison Logic\n\nAfter a clean scrape, the workflow needs to know whether anything actually changed. First we fetch the previously stored JSON file from GitLab—each certification lives at `/certif"
      }
    },
    {
      "id": "9960ffa4-c9af-4a66-bd5e-12f2670d39f9",
      "name": "Section – Actions",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1264,
        176
      ],
      "parameters": {
        "width": 946,
        "height": 798,
        "content": "## Conditional Actions & Storage\n\nOnce the workflow knows whether a requirement changed, it splits into two clear outcomes. When `changed` is **true**, the true branch updates or creates the JSON file"
      }
    },
    {
      "id": "80f9fd18-49bc-43c3-afda-ecbb2686dfd1",
      "name": "Daily Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -176,
        480
      ]
    },
    {
      "id": "91886f51-151d-4bed-9ea0-3aad3026b8f9",
      "name": "Certification URL Config",
      "type": "n8n-nodes-base.code",
      "position": [
        32,
        480
      ]
    },
    {
      "id": "da18a302-79b3-4488-9562-160d880db504",
      "name": "Split In Batches",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        224,
        480
      ]
    },
    {
      "id": "dcb6f065-8799-4b5f-8329-525270aa6f5e",
      "name": "Scrape Requirement Data",
      "type": "n8n-nodes-scrapegraphai.scrapegraphAi",
      "position": [
        432,
        480
      ]
    },
    {
      "id": "f511b6a6-da7d-41cd-b052-4b0fb758deaa",
      "name": "Scrape Error?",
      "type": "n8n-nodes-base.if",
      "position": [
        624,
        480
      ]
    },
    {
      "id": "235944b4-69d6-4ba6-826e-b63f82d7bf46",
      "name": "Fetch Previous Data",
      "type": "n8n-nodes-base.gitlab",
      "position": [
        624,
        688
      ]
    },
    {
      "id": "350245b4-c597-491a-b5ac-bcdeee2027e4",
      "name": "Merge Current & Previous",
      "type": "n8n-nodes-base.merge",
      "position": [
        832,
        688
      ]
    },
    {
      "id": "cff97b55-1ca4-4470-b157-7ebb58766eab",
      "name": "Detect Changes",
      "type": "n8n-nodes-base.code",
      "position": [
        1024,
        688
      ]
    },
    {
      "id": "594513c6-e104-43e8-801a-472730dee3f2",
      "name": "Requirement Changed?",
      "type": "n8n-nodes-base.if",
      "position": [
        1232,
        688
      ]
    },
    {
      "id": "3d437f5f-4930-4096-ac97-cb4985c57874",
      "name": "Prepare GitLab File",
      "type": "n8n-nodes-base.set",
      "position": [
        1424,
        592
      ]
    },
    {
      "id": "d8144ac1-c244-4e7c-8a8e-7ebddc12b9dc",
      "name": "Save Updated Requirement",
      "type": "n8n-nodes-base.gitlab",
      "position": [
        1632,
        592
      ]
    },
    {
      "id": "fcd9a3b8-4653-4cc1-a2e9-74e3f63b5f45",
      "name": "Craft Alert Message",
      "type": "n8n-nodes-base.set",
      "position": [
        1824,
        592
      ]
    },
    {
      "id": "84651cb9-5ed9-4284-a2b3-8aa572327ba6",
      "name": "Log No-Change Issue",
      "type": "n8n-nodes-base.gitlab",
      "position": [
        1424,
        784
      ]
    },
    {
      "id": "6ec29c92-af53-416d-87c2-e032efaed2b2",
      "name": "Send a message",
      "type": "n8n-nodes-base.slack",
      "position": [
        2032,
        592
      ]
    }
  ],
  "connections": {
    "Daily Trigger": {
      "main": [
        [
          {
            "node": "Certification URL Config",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape Error?": {
      "main": [
        [],
        [
          {
            "node": "Fetch Previous Data",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge Current & Previous",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Detect Changes": {
      "main": [
        [
          {
            "node": "Requirement Changed?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split In Batches": {
      "main": [
        [
          {
            "node": "Scrape Requirement Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Craft Alert Message": {
      "main": [
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Previous Data": {
      "main": [
        [
          {
            "node": "Merge Current & Previous",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Prepare GitLab File": {
      "main": [
        [
          {
            "node": "Save Updated Requirement",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Requirement Changed?": {
      "main": [
        [
          {
            "node": "Prepare GitLab File",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Log No-Change Issue",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape Requirement Data": {
      "main": [
        [
          {
            "node": "Scrape Error?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Certification URL Config": {
      "main": [
        [
          {
            "node": "Split In Batches",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge Current & Previous": {
      "main": [
        [
          {
            "node": "Detect Changes",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Save Updated Requirement": {
      "main": [
        [
          {
            "node": "Craft Alert Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}