{
  "name": "Monitor construction execution from Google Drive photos with GPT‑4.1‑mini, Gmail and Google Sheets",
  "nodes": [
    {
      "id": "c8c31116-0066-4cc7-9c78-289bbcf2b999",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        2192,
        736
      ]
    },
    {
      "id": "4e2a0461-7789-4262-ac27-3bba8a352707",
      "name": "Config",
      "type": "n8n-nodes-base.set",
      "position": [
        992,
        608
      ]
    },
    {
      "id": "748efe1d-50ae-4f2c-85ca-54e295c93632",
      "name": "Drive: List files (Input folder)",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1216,
        608
      ]
    },
    {
      "id": "26900de8-647c-4610-b815-06b8a655e9da",
      "name": "Filter: Keep images only",
      "type": "n8n-nodes-base.filter",
      "position": [
        1440,
        608
      ]
    },
    {
      "id": "5272b0ff-4ce5-4d41-a594-b82382f93677",
      "name": "Drive: Download image",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1888,
        512
      ]
    },
    {
      "id": "a5341e24-d1f2-40e3-b118-6e69335f1de1",
      "name": "AI: Analyze image",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        2112,
        512
      ]
    },
    {
      "id": "a8db3b1f-135d-4926-b861-03f99eddf6fb",
      "name": "Gmail: Send report",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2688,
        512
      ]
    },
    {
      "id": "e7a1a9ba-c2e1-4222-8b88-f827fbbe25b8",
      "name": "Drive: Share image (anyone reader)",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        2912,
        512
      ]
    },
    {
      "id": "fb1f5029-a29d-4f2a-8698-d64856a38031",
      "name": "Sheets: Append log row",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        3136,
        512
      ]
    },
    {
      "id": "59c2e83b-6c62-4123-b5ba-a329b9f3163f",
      "name": "Drive: Move image (Processed folder)",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        3360,
        512
      ]
    },
    {
      "id": "ad346610-58b2-4675-8f20-d07fbaf80f1c",
      "name": "End: No images found",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1888,
        704
      ]
    },
    {
      "id": "b6b5ea65-e954-4e58-a649-3ac349b1e493",
      "name": "Prepare: Image data",
      "type": "n8n-nodes-base.set",
      "position": [
        2464,
        512
      ]
    },
    {
      "id": "98140831-1217-419f-b9a0-68363fe1bea6",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -48,
        352
      ],
      "parameters": {
        "width": 688,
        "height": 576,
        "content": "## AI-Driven construction execution monitoring\n\n### How it works\n\n1. A scheduled trigger checks the configured Google Drive input folder for new files.\n2. New files are filtered to keep images, downlo"
      }
    },
    {
      "id": "ddac7ad9-43e0-4625-881a-ea10d1a1be11",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1168,
        384
      ],
      "parameters": {
        "width": 864,
        "height": 496,
        "content": "## 1. Retrieve and Filter Construction Images"
      }
    },
    {
      "id": "12a94950-9738-4986-bb22-bcdfc3de7372",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2080,
        384
      ],
      "parameters": {
        "width": 528,
        "height": 496,
        "content": "## 2. AI-Powered Construction Image Analysis"
      }
    },
    {
      "id": "4999da26-f54b-4317-bbce-aa786cc5af40",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2656,
        384
      ],
      "parameters": {
        "width": 1136,
        "height": 496,
        "content": "## 3. Distribute Report and Log Work Performance Data"
      }
    },
    {
      "id": "b735654f-6734-480a-81b1-02a903bcf7df",
      "name": "Schedule Trigger (Configurable Interval)",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        768,
        608
      ]
    },
    {
      "id": "84c21fc4-3702-4cf7-8f16-1d6a4ff99977",
      "name": "IF: Images Found?",
      "type": "n8n-nodes-base.if",
      "position": [
        1664,
        608
      ]
    },
    {
      "id": "07fd9d9b-d92c-401e-885c-a40bede5068c",
      "name": "End: Processing Complete",
      "type": "n8n-nodes-base.noOp",
      "position": [
        3568,
        512
      ]
    }
  ],
  "connections": {
    "Config": {
      "main": [
        [
          {
            "node": "Drive: List files (Input folder)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI: Analyze image": {
      "main": [
        [
          {
            "node": "Prepare: Image data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF: Images Found?": {
      "main": [
        [
          {
            "node": "Drive: Download image",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "End: No images found",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI: Analyze image",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Gmail: Send report": {
      "main": [
        [
          {
            "node": "Drive: Share image (anyone reader)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare: Image data": {
      "main": [
        [
          {
            "node": "Gmail: Send report",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Drive: Download image": {
      "main": [
        [
          {
            "node": "AI: Analyze image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sheets: Append log row": {
      "main": [
        [
          {
            "node": "Drive: Move image (Processed folder)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter: Keep images only": {
      "main": [
        [
          {
            "node": "IF: Images Found?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Drive: List files (Input folder)": {
      "main": [
        [
          {
            "node": "Filter: Keep images only",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Drive: Share image (anyone reader)": {
      "main": [
        [
          {
            "node": "Sheets: Append log row",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Drive: Move image (Processed folder)": {
      "main": [
        [
          {
            "node": "End: Processing Complete",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger (Configurable Interval)": {
      "main": [
        [
          {
            "node": "Config",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}