{
  "name": "Loan Discovery Crawler",
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "days",
              "daysInterval": 1
            }
          ]
        }
      },
      "id": "schedule-trigger",
      "name": "Daily Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.1,
      "position": [
        250,
        300
      ]
    },
    {
      "parameters": {
        "jsCode": "// Generate realistic Indian bank loan products\nconst banks = [\n  { name: 'HDFC Bank', baseRate: 10.5 },\n  { name: 'ICICI Bank', baseRate: 10.75 },\n  { name: 'SBI', baseRate: 11.0 },\n  { name: 'Axis Bank', baseRate: 10.49 },\n  { name: 'Kotak Mahindra', baseRate: 10.99 },\n  { name: 'Punjab National Bank', baseRate: 11.25 },\n  { name: 'Bank of Baroda', baseRate: 11.0 },\n  { name: 'Bajaj Finserv', baseRate: 11.5 },\n  { name: 'Tata Capital', baseRate: 10.99 },\n  { name: 'LIC Housing Finance', baseRate: 8.5 }\n];\n\nconst loanTypes = [\n  { type: 'Personal Loan', minScore: 650, minIncome: 25000 },\n  { type: 'Home Loan', minScore: 700, minIncome: 40000 },\n  { type: 'Education Loan', minScore: 600, minIncome: 20000 },\n  { type: 'Car Loan', minScore: 680, minIncome: 30000 },\n  { type: 'Business Loan', minScore: 720, minIncome: 50000 }\n];\n\nconst products = [];\n\nbanks.forEach(bank => {\n  loanTypes.forEach(loan => {\n    // Add some variation to rates\n    const rateVariation = (Math.random() * 2 - 1).toFixed(2);\n    const interestRate = (bank.baseRate + parseFloat(rateVariation)).toFixed(2);\n    \n    products.push({\n      json: {\n        bank_name: bank.name,\n        product_name: `${bank.name} ${loan.type}`,\n        interest_rate: parseFloat(interestRate),\n        min_credit_score: loan.minScore,\n        min_income: loan.minIncome,\n        url: `https://${bank.name.toLowerCase().replace(/ /g, '')}.com/loans/${loan.type.toLowerCase().replace(/ /g, '-')}`\n      }\n    });\n  });\n});\n\nreturn products;"
      },
      "id": "code-scraper",
      "name": "Generate Loan Products",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        450,
        300
      ]
    },
    {
      "parameters": {
        "operation": "executeQuery",
        "query": "INSERT INTO loan_products (bank_name, product_name, interest_rate, min_credit_score, min_income, url)\nVALUES ('{{ $json.bank_name }}', '{{ $json.product_name }}', {{ $json.interest_rate }}, {{ $json.min_credit_score }}, {{ $json.min_income }}, '{{ $json.url }}')\nON CONFLICT (product_name) DO UPDATE SET\n  interest_rate = EXCLUDED.interest_rate,\n  min_credit_score = EXCLUDED.min_credit_score,\n  min_income = EXCLUDED.min_income,\n  url = EXCLUDED.url;",
        "options": {}
      },
      "id": "postgres-insert",
      "name": "Upsert to Postgres",
      "type": "n8n-nodes-base.postgres",
      "typeVersion": 2.3,
      "position": [
        650,
        300
      ],
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "Daily Trigger": {
      "main": [
        [
          {
            "node": "Generate Loan Products",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Loan Products": {
      "main": [
        [
          {
            "node": "Upsert to Postgres",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  }
}