{
  "name": "Vrymdor AI Node: mask PII before calling OpenAI or Claude",
  "nodes": [
    {
      "parameters": {
        "content": "## Mask PII before calling OpenAI or Claude\n1. **Settings**, **Community Nodes**, **Install**: `n8n-nodes-vrymdor`.\n2. Open **Vrymdor: call Claude**, **Credential**, **Create new**: paste the Node Host URL, Agent ID (`agt_...`) and Agent Secret (`vrym_agent_...`) from the **Connect your AI Node** card in your Vrymdor dashboard.\n3. **Upstream** is the name of a model upstream on your AI Node: `anthropic` here, `openai` on the OpenAI step.\n4. Put your own trigger in place of **Sample ticket**, keeping a `customer_email` field and a `text` field.\n5. **Execute workflow**.\n\nThe model reads `[REDACTED:EMAIL_1]`, never the real address. **Rehydrate** puts the real values back in the answer, inside your AI Node, in the same step. **Only For** is set to the customer, so only their details can come back: if anyone else's are in the answer, nothing is put back. Secrets such as API keys are never put back.",
        "height": 480,
        "width": 440
      },
      "id": "6a1f3c10-0000-4000-8000-000000000001",
      "name": "How to use this workflow",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -480,
        -260
      ]
    },
    {
      "parameters": {},
      "id": "6a1f3c10-0000-4000-8000-000000000002",
      "name": "Start",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        0,
        0
      ]
    },
    {
      "parameters": {
        "mode": "manual",
        "assignments": {
          "assignments": [
            {
              "id": "6a1f3c10-0000-4000-8000-0000000000a1",
              "name": "customer_email",
              "value": "jane@example.com",
              "type": "string"
            },
            {
              "id": "6a1f3c10-0000-4000-8000-0000000000a2",
              "name": "text",
              "value": "Write a short, friendly reply to jane@example.com, who asked whether the refund for her order was sent. It was sent today.",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "id": "6a1f3c10-0000-4000-8000-000000000003",
      "name": "Sample ticket",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        220,
        0
      ]
    },
    {
      "parameters": {
        "operation": "llm",
        "upstream": "anthropic",
        "path": "v1/messages",
        "input": "={{ { \"model\": \"claude-sonnet-5-5\", \"max_tokens\": 512, \"messages\": [{ \"role\": \"user\", \"content\": $json.text }] } }}",
        "options": {
          "rehydrate": true,
          "onlyFor": "={{ $json.customer_email }}"
        }
      },
      "id": "6a1f3c10-0000-4000-8000-000000000004",
      "name": "Vrymdor: call Claude",
      "type": "n8n-nodes-vrymdor.vrymdor",
      "typeVersion": 1,
      "position": [
        460,
        -100
      ]
    },
    {
      "parameters": {
        "operation": "llm",
        "upstream": "openai",
        "path": "v1/chat/completions",
        "input": "={{ { \"model\": \"gpt-4o-mini\", \"messages\": [{ \"role\": \"user\", \"content\": $json.text }] } }}",
        "options": {
          "rehydrate": true,
          "onlyFor": "={{ $json.customer_email }}"
        }
      },
      "id": "6a1f3c10-0000-4000-8000-000000000005",
      "name": "Vrymdor: call OpenAI",
      "type": "n8n-nodes-vrymdor.vrymdor",
      "typeVersion": 1,
      "position": [
        460,
        120
      ],
      "disabled": true
    },
    {
      "parameters": {
        "content": "## Using OpenAI instead\nSelect **Vrymdor: call OpenAI** and press **D** to turn it on, then turn the Claude step off the same way. It needs an upstream named `openai` on your AI Node that points at https://api.openai.com. Use any model your OpenAI account has.",
        "height": 240,
        "width": 360
      },
      "id": "6a1f3c10-0000-4000-8000-000000000006",
      "name": "Using OpenAI instead",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        700,
        60
      ]
    }
  ],
  "connections": {
    "Start": {
      "main": [
        [
          {
            "node": "Sample ticket",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sample ticket": {
      "main": [
        [
          {
            "node": "Vrymdor: call Claude",
            "type": "main",
            "index": 0
          },
          {
            "node": "Vrymdor: call OpenAI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  }
}
