{
  "name": "Company Enrichment - FINAL WORKING",
  "nodes": [
    {
      "parameters": {
        "path": "enrichment-final",
        "httpMethod": "POST",
        "responseMode": "responseNode"
      },
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        240,
        300
      ]
    },
    {
      "parameters": {
        "url": "={{$json.website}}",
        "options": {
          "timeout": 10000
        }
      },
      "name": "Fetch Website",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "position": [
        440,
        200
      ],
      "continueOnFail": true
    },
    {
      "parameters": {
        "url": "=https://api.opencorporates.com/v0.4/companies/search?q={{encodeURIComponent($json.company_name)}}&jurisdiction_code={{$json.jurisdiction}}",
        "options": {
          "timeout": 10000
        }
      },
      "name": "OpenCorporates",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "position": [
        440,
        400
      ],
      "continueOnFail": true
    },
    {
      "parameters": {},
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "typeVersion": 2,
      "position": [
        640,
        300
      ]
    },
    {
      "parameters": {
        "functionCode": "const inputs = $input.all();\nconst webhook = items[0].json;\n\nlet website = null;\nlet opencorp = null;\n\nfor (const input of inputs) {\n  if (input.json.body) website = input.json;\n  if (input.json.results) opencorp = input.json;\n}\n\nconst hasWebsite = website && website.body && website.body.length > 0;\nconst hasLegal = opencorp && opencorp.results && opencorp.results.companies && opencorp.results.companies.length > 0;\n\nreturn [{\n  json: {\n    startup_id: webhook.startup_id,\n    company_name: webhook.company_name,\n    enrichment_data: {\n      enriched_at: new Date().toISOString(),\n      sources: [\n        hasWebsite ? 'website' : null,\n        hasLegal ? 'opencorporates' : null\n      ].filter(Boolean),\n      company: {\n        name: webhook.company_name,\n        website: webhook.website\n      },\n      website: {\n        success: hasWebsite,\n        length: website?.body?.length || 0,\n        status: website?.statusCode || null\n      },\n      legal: hasLegal ? {\n        company_number: opencorp.results.companies[0].company.company_number,\n        jurisdiction: opencorp.results.companies[0].company.jurisdiction_code,\n        status: opencorp.results.companies[0].company.current_status\n      } : null,\n      errors: [\n        !hasWebsite ? 'website_failed' : null,\n        !hasLegal ? 'opencorp_failed' : null\n      ].filter(Boolean)\n    },\n    status: (hasWebsite || hasLegal) ? 'partial' : 'failed',\n    score: (hasWebsite ? 50 : 0) + (hasLegal ? 50 : 0)\n  }\n}];"
      },
      "name": "Aggregate",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        840,
        300
      ]
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{$json}}"
      },
      "name": "Respond",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1,
      "position": [
        1040,
        300
      ]
    }
  ],
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Fetch Website"
          },
          {
            "node": "OpenCorporates"
          },
          {
            "node": "Merge"
          }
        ]
      ]
    },
    "Fetch Website": {
      "main": [
        [
          {
            "node": "Merge"
          }
        ]
      ]
    },
    "OpenCorporates": {
      "main": [
        [
          {
            "node": "Merge"
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "Aggregate"
          }
        ]
      ]
    },
    "Aggregate": {
      "main": [
        [
          {
            "node": "Respond"
          }
        ]
      ]
    }
  }
}