{
  "id": "NFKaRbR7GrUSna56",
  "name": "Automated Consent Manager Registration Screening & Eligibility Evaluation Pipeline (DPDP-Aligned)",
  "tags": [],
  "nodes": [
    {
      "id": "f130ae85-a26f-49bb-ab25-e22ecf5d4307",
      "name": "Receive Consent Registration Event",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -32,
        0
      ],
      "parameters": {
        "path": "14ad13dc-0916-4ea3-ac2c-943413207ad4",
        "options": {},
        "httpMethod": "POST"
      },
      "typeVersion": 2.1
    },
    {
      "id": "6e77b48f-3877-4179-95e6-70f9706d5c22",
      "name": "Extract & Normalize Registration Payload",
      "type": "n8n-nodes-base.code",
      "position": [
        272,
        0
      ],
      "parameters": {
        "jsCode": "// Extract the incoming webhook data\nconst incoming = $json;\n\n// Extract only the relevant fields from the body\nconst body = incoming.body || {};\n\n// Build the cleaned, structured output\nconst cleaned = {\n  action: body.action || \"\",\n  organizationName: body.organizationName || \"\",\n  applicationType: body.applicationType || \"\",\n  contactEmail: body.contactEmail || \"\",\n  netWorth: body.netWorth || \"\",\n  technicalCapacity: body.technicalCapacity || \"\",\n  operationalCapacity: body.operationalCapacity || \"\",\n  documentAttached: body.documentAttached || null,\n  submittedAt: body.submittedAt || \"\"\n};\n\n// Return result\nreturn [\n  {\n    json: cleaned\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "fb66719f-3dca-409a-8341-153ed736b000",
      "name": "Validate Registration Payload Structure",
      "type": "n8n-nodes-base.if",
      "position": [
        544,
        0
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "or",
          "conditions": [
            {
              "id": "e2adb005-2b3c-4d1e-8445-442df1fe925a",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json.action }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "a03d1f15-1678-45fb-a803-ed2a5dc69056",
      "name": "Log Invalid Registration Requests to Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        896,
        608
      ],
      "parameters": {
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "",
          "cachedResultUrl": "",
          "cachedResultName": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": ""
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "2e492004-7442-4a3d-bd00-7ed2be17d75a",
      "name": "Configure GPT-4o \u2014 Eligibility Evaluation Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
      "position": [
        1264,
        608
      ],
      "parameters": {
        "model": "gpt-4o",
        "options": {}
      },
      "credentials": {
        "azureOpenAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a3388ca4-f6cb-4797-8303-488ef63367cc",
      "name": "AI Eligibility Evaluator (DPDP Compliance)",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        992,
        -16
      ],
      "parameters": {
        "text": "=Evaluate the following Consent Manager Registration request and determine whether the applicant \nshould be considered ELIGIBLE under DPDP standards.\n\nIMPORTANT LOGIC CHANGES:\n- If documentation is missing (documentAttached = null) but all other criteria are strong, \n  DO NOT reject the applicant. Instead, mark them as eligible and recommend that documentation \n  be collected during the verification stage.\n- Only mark the applicant as ineligible if there is a MAJOR compliance failure \n  (e.g., extremely low net worth, no technical capacity, no operational capacity, fake data).\n\nHere is the registration request:\n{{ JSON.stringify($json, null, 2) }}\n\nReturn the result in this exact JSON structure:\n\n{\n  \"eligible\": true or false,\n  \"decisionReason\": \"short explanation\",\n  \"riskLevel\": \"Low / Medium / High\",\n  \"missingItems\": [\"...\"],\n  \"recommendedNextSteps\": \"What the compliance team should do next (short)\"\n}\n\nIf the only issue is missing documentation, still return:\n\"eligible\": true\n\"riskLevel\": \"Low\" \nand include the missing document note in \"missingItems\".\n",
        "options": {
          "systemMessage": "=You are an AI compliance assistant evaluating DPDP Consent Manager Registration requests.\n\nRULES:\n- Treat missing documentation as a minor issue (NOT a cause for rejection).\n- Prioritize: financial capacity, technical capacity, operational capacity, email validity.\n- If core requirements are met, the applicant should be considered \"eligible\".\n- Only reject if the organization fundamentally cannot qualify.\n\nOutput must ALWAYS follow the JSON format exactly.\n"
        },
        "promptType": "define"
      },
      "typeVersion": 2.1
    },
    {
      "id": "ee16e06c-e97f-4679-9d30-16345420da18",
      "name": "Parse AI Eligibility JSON Output",
      "type": "n8n-nodes-base.code",
      "position": [
        1392,
        -16
      ],
      "parameters": {
        "jsCode": "const raw = $json.output;\n\n// Remove markdown ```json ``` fences\nconst cleaned = raw.replace(/```json|```/g, '').trim();\n\n// Convert to actual JSON\nconst parsed = JSON.parse(cleaned);\n\nreturn parsed;\n"
      },
      "typeVersion": 2
    },
    {
      "id": "fccc7bd0-016d-4d69-884e-4d90939d9ea2",
      "name": "Validate Eligibility Status",
      "type": "n8n-nodes-base.if",
      "position": [
        1648,
        -16
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "or",
          "conditions": [
            {
              "id": "e2adb005-2b3c-4d1e-8445-442df1fe925a",
              "operator": {
                "type": "boolean",
                "operation": "equals"
              },
              "leftValue": "={{ $json.eligible }}",
              "rightValue": true
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "82a15bbe-3f22-4cb7-87c4-c01b665ba909",
      "name": "Send Rejection Email to Applicant",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2080,
        288
      ],
      "parameters": {
        "sendTo": "=gargsaurabh1804april@gmail.com",
        "message": "=Dear {{ $('Validate Registration Payload Structure').item.json.organizationName }}\n\nYour Consent Manager Registration request has been reviewed.\n\nUnfortunately, the registration cannot be approved at this time, due to the following issue(s):\n\n\u2022 {{ $json.issues.join(\", \") }}\n\nRecommended Next Steps:\n{{ $json.recommendedNextSteps }}\n\nPlease resubmit your application with the required documents.\n\nRegards,\nCompliance Automation System\n",
        "options": {},
        "subject": "=Consent Manager Registration \u2013 Rejected (Missing Documents)\n"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "27d09d68-1f7e-4bec-bab4-92090b094970",
      "name": "Merge Registration + Eligibility Summary",
      "type": "n8n-nodes-base.code",
      "position": [
        2048,
        -272
      ],
      "parameters": {
        "jsCode": "// 1. Get parsed form data from the previous node (registration input)\nconst formData = $node[\"Validate Registration Payload Structure\"].json;\n\n// 2. Get AI eligibility result (this node\u2019s input)\nconst eligibility = items[0].json;\n\n// 3. Build combined output\nreturn [\n  {\n    json: {\n      registrationPackage: {\n        organizationName: formData.organizationName,\n        applicationType: formData.applicationType,\n        contactEmail: formData.contactEmail,\n        netWorth: formData.netWorth,\n        technicalCapacity: formData.technicalCapacity,\n        operationalCapacity: formData.operationalCapacity,\n        documentAttached: formData.documentAttached,\n        submittedAt: formData.submittedAt\n      },\n\n      eligibility: {\n        eligible: eligibility.eligible,\n        decisionReason: eligibility.decisionReason,\n        riskLevel: eligibility.riskLevel,\n        missingItems: eligibility.missingItems,\n        recommendedNextSteps: eligibility.recommendedNextSteps\n      }\n    }\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "fe742e71-8246-4fb4-8e0d-7b532d1c8c5e",
      "name": "Send Approval Email to Compliance Team",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2320,
        -272
      ],
      "parameters": {
        "sendTo": "=gargsaurabh1804april@gmail.com",
        "message": "=<p>Dear Compliance Team,</p>\n\n<p>A new Consent Manager registration request has passed the eligibility evaluation and is now ready for the <strong>verification stage</strong>.</p>\n\n<h3>\ud83d\udccc Applicant Details</h3>\n<ul>\n  <li><strong>Organization:</strong> {{ $json.registrationPackage.organizationName }}</li>\n  <li><strong>Application Type:</strong> {{ $json.registrationPackage.applicationType }}</li>\n  <li><strong>Contact Email:</strong> {{ $json.registrationPackage.contactEmail }}</li>\n  <li><strong>Net Worth (\u20b9):</strong> {{ $json.registrationPackage.netWorth }}</li>\n</ul>\n\n<h3>\ud83d\udccc Technical Capacity Summary</h3>\n<p>{{ $json.registrationPackage.technicalCapacity }}</p>\n\n<h3>\ud83d\udccc Operational Capacity Summary</h3>\n<p>{{ $json.registrationPackage.operationalCapacity }}</p>\n\n<h3>\ud83d\udccc Eligibility Result</h3>\n<ul>\n  <li><strong>Status:</strong> Eligible</li>\n  <li><strong>Risk Level:</strong> {{ $json.eligibility.riskLevel }}</li>\n  <li><strong>Reason:</strong> {{ $json.eligibility.decisionReason }}</li>\n</ul>\n\n<h3>\ud83d\udccc Missing Items</h3>\n<p>The following items must be collected during the verification stage:</p>\n<ul>\n   \n</ul>\n\n<h3>\ud83d\udccc Next Steps</h3>\n<p>{{ $json.eligibility.recommendedNextSteps }}</p>\n\n<br>\n\n<p>Regards,<br>\nDPDP Automated Registration System<br>\nCompliance Automation (n8n)</p>\n",
        "options": {},
        "subject": "=Consent Manager Registration \u2013 Eligibility Approved (Verification Stage)\n"
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "c6638545-d63f-49d1-b34b-441342d500d8",
      "name": "Write Initial Registration Entry to Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1024,
        -560
      ],
      "parameters": {
        "columns": {
          "value": {
            "action": "={{ $json.action }}",
            "netWorth": "={{ $json.netWorth }}",
            "submittedAt": "={{ $json.submittedAt }}",
            "contactEmail": "={{ $json.contactEmail }}",
            "applicationType": "={{ $json.applicationType }}",
            "documentAttached": "={{ $json.documentAttached }}",
            "organizationName": "={{ $json.organizationName }}",
            "technicalCapacity": "={{ $json.technicalCapacity }}",
            "operationalCapacity": "={{ $json.operationalCapacity }}"
          },
          "schema": [
            {
              "id": "action",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "action",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "organizationName",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "organizationName",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "applicationType",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "applicationType",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "contactEmail",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "contactEmail",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "netWorth",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "netWorth",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "technicalCapacity",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "technicalCapacity",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "operationalCapacity",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "operationalCapacity",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "documentAttached",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "documentAttached",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "submittedAt",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "submittedAt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 616260608,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM/edit#gid=616260608",
          "cachedResultName": "consent_manager_registration"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM/edit?usp=drivesdk",
          "cachedResultName": "sample_leads_50"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "00ae572c-8f52-4c54-aa90-2a431b0403b6",
      "name": "Prepare Status Update Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        2560,
        -272
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "1213613b-51f4-48f2-afe1-8b9e06cb2130",
              "name": "Status",
              "type": "string",
              "value": "passed "
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "8803b8bf-2602-42f4-b975-06043437c657",
      "name": "Update Registration Status in Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2832,
        -272
      ],
      "parameters": {
        "columns": {
          "value": {
            "Status": "={{ $json.Status }}",
            "contactEmail": "={{ $('Merge Registration + Eligibility Summary').item.json.registrationPackage.contactEmail }}"
          },
          "schema": [
            {
              "id": "action",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "action",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "organizationName",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "organizationName",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "applicationType",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "applicationType",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "contactEmail",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "contactEmail",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "netWorth",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "netWorth",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "technicalCapacity",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "technicalCapacity",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "operationalCapacity",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "operationalCapacity",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "documentAttached",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "documentAttached",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "submittedAt",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "submittedAt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "contactEmail"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 616260608,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM/edit#gid=616260608",
          "cachedResultName": "consent_manager_registration"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM/edit?usp=drivesdk",
          "cachedResultName": "sample_leads_50"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "388ca676-2348-4cca-9d54-36ebb4a39794",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -928,
        -992
      ],
      "parameters": {
        "width": 816,
        "height": 592,
        "content": "## \ud83d\udcdd Automated Consent Manager Registration Screening & Eligibility Evaluation Pipeline (DPDP-Aligned)\n\nAutomates intake, validation, eligibility evaluation, and routing of Consent Manager Registration applications under DPDP guidelines.  \nEvery incoming registration request is normalized, validated, evaluated using AI-based compliance logic, logged to Sheets, and then routed to either Approval or Rejection flow.  \nThe workflow ensures correct handling of missing documents, validates operational/technical capacity, and updates master records automatically.\n\n\ud83d\udd39 Workflow Overview\n1\ufe0f\u20e3 Webhook receives new registration request  \n2\ufe0f\u20e3 Extracts & cleans core form fields  \n3\ufe0f\u20e3 Validates structure (action + mandatory values)  \n4\ufe0f\u20e3 Writes initial registration entry to Google Sheets  \n5\ufe0f\u20e3 AI performs eligibility evaluation (DPDP criteria)  \n6\ufe0f\u20e3 Parses JSON & validates eligibility result  \n7\ufe0f\u20e3 If **eligible** \u2192 build summary + email compliance + update Sheet status  \n8\ufe0f\u20e3 If **ineligible** \u2192 send rejection email + log for follow-up  \n9\ufe0f\u20e3 All invalid requests (missing core payload) are logged separately  \n\n\ud83d\udd39 Tools & Integrations  \nWebhook \u2192 Intake  \nCode Nodes \u2192 Payload extraction, merging, JSON parsing  \nGoogle Sheets \u2192 Registration recordkeeping + status updates  \nAzure GPT-4o \u2192 Eligibility evaluation engine  \nGmail \u2192 Rejection & Approval notifications  \nSet Node \u2192 Status field creation for final update\n"
      },
      "typeVersion": 1
    },
    {
      "id": "536db252-e610-489f-b58c-f01f282439d4",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -96,
        -240
      ],
      "parameters": {
        "color": 7,
        "height": 432,
        "content": "## Receive Consent Registration Event  \nWebhook collects new registration submissions from the UI.  \nTriggers workflow execution immediately and passes the raw payload forward.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "069322b8-3289-40f0-98ea-d66b9c005b7b",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        208,
        -304
      ],
      "parameters": {
        "color": 7,
        "height": 480,
        "content": "## Extract & Normalize Registration Payload  \nCleans the incoming JSON body and extracts essential registration fields.  \nNormalizes values into a consistent structure for downstream validation.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "41bbf3b3-d0ea-4103-b4f6-474b8ae022df",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        464,
        -288
      ],
      "parameters": {
        "color": 7,
        "height": 464,
        "content": "## Validate Registration Payload Structure  \nChecks whether core fields (like action) are present and properly structured.  \nValid entries move to evaluation \u2192 invalid entries go to the logging sheet.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "6e6f0b9a-d243-4324-8bb7-faa297b70ec0",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        832,
        352
      ],
      "parameters": {
        "color": 7,
        "height": 432,
        "content": "## Log Invalid Registration Requests to Sheet  \nRecords malformed or incomplete submissions in a dedicated audit sheet.  \nSupports retry handling and compliance tracking for improper requests.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "1fd0c246-ba91-4902-b7bb-3348d181fd06",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        960,
        -784
      ],
      "parameters": {
        "color": 7,
        "height": 400,
        "content": "## Write Initial Registration Entry to Sheet  \nStores the raw registration data into the main registration sheet.  \nCreates the intake record before AI eligibility processing begins.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "95b585e4-1b96-4ac0-9365-7f242d23a534",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1168,
        368
      ],
      "parameters": {
        "color": 7,
        "width": 288,
        "height": 384,
        "content": "## Configure GPT-4o \u2014 Eligibility Evaluation Model  \nPrepares the AI model used to evaluate DPDP compliance eligibility.  \nServes as the language model input for the eligibility agent.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "85b455e9-58c8-4e87-9e94-8a0ccba6ed9c",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        960,
        -256
      ],
      "parameters": {
        "color": 7,
        "width": 288,
        "height": 448,
        "content": "## AI Eligibility Evaluator (DPDP Compliance)  \nAnalyzes DPDP eligibility based on financial, technical, and operational criteria.  \nProduces a structured JSON result with eligibility, risk level, and next steps.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "fdd36ef9-6d91-45ed-9468-ec76dcc27305",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1328,
        -240
      ],
      "parameters": {
        "color": 7,
        "height": 384,
        "content": "## Parse AI Eligibility JSON Output  \nCleans markdown artifacts and safely converts AI output into valid JSON.  \nEnsures standardized data for all branching decisions ahead.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "377ce804-d7b3-4c9b-bf47-fb1032757aa0",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1600,
        -240
      ],
      "parameters": {
        "color": 7,
        "height": 400,
        "content": "## Validate Eligibility Status  \nChecks whether the AI-determined eligibility is true or false.  \nRoutes eligible applicants to approval flow \u2192 ineligible ones to rejection.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "5036363c-9d29-460d-958f-27e1f6aaec5c",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2016,
        64
      ],
      "parameters": {
        "color": 7,
        "height": 400,
        "content": "## Send Rejection Email to Applicant  \nSends a structured rejection email explaining missing/invalid elements.  \nGuides applicants with clear next steps for re-submission.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "b334398a-5e20-4764-bb2d-bd2412deeae3",
      "name": "Sticky Note11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1968,
        -512
      ],
      "parameters": {
        "color": 7,
        "height": 416,
        "content": "## Merge Registration + Eligibility Summary  \nCombines cleaned registration data with AI evaluation output.  \nCreates a single structured summary for internal compliance review.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "205c19c0-4b62-4aee-970f-5f2d362eeb3c",
      "name": "Sticky Note12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2240,
        -512
      ],
      "parameters": {
        "color": 7,
        "height": 416,
        "content": "## Send Approval Email to Compliance Team  \nNotifies compliance that an applicant passed eligibility checks.  \nIncludes applicant details, capacity overview, and risk assessment.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "e034e3a6-d67b-4176-a4c5-5e3865ba65a5",
      "name": "Sticky Note13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2496,
        -528
      ],
      "parameters": {
        "color": 7,
        "height": 432,
        "content": "## Prepare Status Update Fields  \nSets the final status field (e.g., \u201cpassed\u201d) for database update.  \nPrepares the output required for updating the registration sheet.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "c5f58ae5-f2c5-479a-a05e-cc7b70a3af9a",
      "name": "Sticky Note14",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2752,
        -528
      ],
      "parameters": {
        "color": 7,
        "height": 432,
        "content": "## Update Registration Status in Sheet  \nUpdates the existing registration record using contactEmail as the key.  \nStores final eligibility status, forming a complete audit trail.\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "18775104-275f-4eda-b3f5-fd08ccc28fe0",
  "connections": {
    "Validate Eligibility Status": {
      "main": [
        [
          {
            "node": "Merge Registration + Eligibility Summary",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send Rejection Email to Applicant",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Status Update Fields": {
      "main": [
        [
          {
            "node": "Update Registration Status in Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse AI Eligibility JSON Output": {
      "main": [
        [
          {
            "node": "Validate Eligibility Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Receive Consent Registration Event": {
      "main": [
        [
          {
            "node": "Extract & Normalize Registration Payload",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Approval Email to Compliance Team": {
      "main": [
        [
          {
            "node": "Prepare Status Update Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Validate Registration Payload Structure": {
      "main": [
        [
          {
            "node": "AI Eligibility Evaluator (DPDP Compliance)",
            "type": "main",
            "index": 0
          },
          {
            "node": "Write Initial Registration Entry to Sheet",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Log Invalid Registration Requests to Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract & Normalize Registration Payload": {
      "main": [
        [
          {
            "node": "Validate Registration Payload Structure",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge Registration + Eligibility Summary": {
      "main": [
        [
          {
            "node": "Send Approval Email to Compliance Team",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Eligibility Evaluator (DPDP Compliance)": {
      "main": [
        [
          {
            "node": "Parse AI Eligibility JSON Output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Configure GPT-4o \u2014 Eligibility Evaluation Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Eligibility Evaluator (DPDP Compliance)",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    }
  }
}