{
  "name": "Monitor BOAMP IT tenders and score them with GPT-4o Mini to Supabase",
  "nodes": [
    {
      "id": "61d56904-218d-4d62-87fb-7f21a2b1ba5c",
      "name": "Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        640,
        976
      ],
      "parameters": {
        "width": 520,
        "height": 380,
        "content": "## Monitor BOAMP IT Tenders with AI Scoring\n\n**Who it's for:** ESN, IT consultancies, and agencies monitoring French public tenders (BOAMP) for IT and DevOps opportunities.\n\n**What it does:** Fetches "
      }
    },
    {
      "id": "f8747f21-c023-4cbe-aa68-f89613c8952e",
      "name": "Sticky Note 1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1216,
        880
      ],
      "parameters": {
        "width": 220,
        "height": 140,
        "content": "**Step 1 - Triggers**\n\n• Schedule: every 4 hours\n• Manual: for testing\n• Webhook: external trigger"
      }
    },
    {
      "id": "5e40fc30-1cfe-4be0-bc8d-7f705885e759",
      "name": "Sticky Note 2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1552,
        1104
      ],
      "parameters": {
        "width": null,
        "height": 120,
        "content": "**Step 2 - Fetch & Normalize**\n\nBOAMP API (filter: informatique)"
      }
    },
    {
      "id": "87efc239-7d64-47c8-91e0-95a2767faa6f",
      "name": "Sticky Note 3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2032,
        1056
      ],
      "parameters": {
        "width": 360,
        "height": 120,
        "content": "**Step 3–5 - AI & Route**\n\nScore → Parse → Hot (≥75) or Archive → Supabase"
      }
    },
    {
      "id": "9fd12931-3b53-4fb0-b294-7fdfdc72eacd",
      "name": "Supabase Schema",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        640,
        1376
      ],
      "parameters": {
        "width": 360,
        "height": 400,
        "content": "**Supabase Schema** — Run in Supabase SQL Editor before use:\n\n```sql\nCREATE TABLE IF NOT EXISTS opportunities (\n  id UUID DEFAULT gen_random_uuid() PRIMARY KEY,\n  source TEXT NOT NULL,\n  external_id T"
      }
    },
    {
      "id": "62dc5076-fe50-4d04-9292-b2da274dbd69",
      "name": "Config",
      "type": "n8n-nodes-base.set",
      "position": [
        1264,
        1408
      ]
    },
    {
      "id": "aa8a2ee0-b377-492d-b516-0a02f93faa4e",
      "name": "Schedule Every 4 Hours",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        1264,
        1200
      ]
    },
    {
      "id": "c9bb673d-b573-422a-8b0c-2944cff3ce90",
      "name": "Manual Trigger",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        1248,
        1568
      ]
    },
    {
      "id": "bd4f9a7a-8bba-4ef7-acd8-7b5ac25a7625",
      "name": "Webhook Trigger",
      "type": "n8n-nodes-base.webhook",
      "position": [
        1264,
        1056
      ]
    },
    {
      "id": "bad3b741-ad9e-48ee-86cd-3c6ffb4c106f",
      "name": "Fetch BOAMP IT Tenders",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1552,
        1296
      ]
    },
    {
      "id": "80fb7470-fd15-4248-9d95-1d63f0001a83",
      "name": "Normalize Tender Data",
      "type": "n8n-nodes-base.code",
      "position": [
        1776,
        1296
      ]
    },
    {
      "id": "c98315e9-0fd9-4b55-9ed5-2dfff75c020e",
      "name": "AI Score Tender",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1984,
        1296
      ]
    },
    {
      "id": "86c3a6fa-f09a-4d5f-b297-ea773a11415c",
      "name": "Parse AI Response",
      "type": "n8n-nodes-base.code",
      "position": [
        2208,
        1296
      ]
    },
    {
      "id": "f9d7080e-3e14-4c7d-a896-6fdcc5b4a0e5",
      "name": "Is Hot Opportunity?",
      "type": "n8n-nodes-base.if",
      "position": [
        2432,
        1296
      ]
    },
    {
      "id": "3eefceaa-1b87-4f13-be55-a47bf144a977",
      "name": "Supabase Insert Hot",
      "type": "n8n-nodes-base.supabase",
      "position": [
        2656,
        1200
      ]
    },
    {
      "id": "f5c96ac0-e63c-49b9-b4ba-926a4cd13f88",
      "name": "Supabase Insert Archived",
      "type": "n8n-nodes-base.supabase",
      "position": [
        2656,
        1392
      ]
    }
  ],
  "connections": {
    "Config": {
      "main": [
        [
          {
            "node": "Fetch BOAMP IT Tenders",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Manual Trigger": {
      "main": [
        [
          {
            "node": "Config",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Score Tender": {
      "main": [
        [
          {
            "node": "Parse AI Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook Trigger": {
      "main": [
        [
          {
            "node": "Config",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse AI Response": {
      "main": [
        [
          {
            "node": "Is Hot Opportunity?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is Hot Opportunity?": {
      "main": [
        [
          {
            "node": "Supabase Insert Hot",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Supabase Insert Archived",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Normalize Tender Data": {
      "main": [
        [
          {
            "node": "AI Score Tender",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch BOAMP IT Tenders": {
      "main": [
        [
          {
            "node": "Normalize Tender Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Every 4 Hours": {
      "main": [
        [
          {
            "node": "Config",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}