AutomationFlowsAI & RAG › Pipelineb

Pipelineb

pipelineB. Uses readWriteFile, httpRequest. Event-driven trigger; 10 nodes.

Event trigger★★★★☆ complexity10 nodesRead Write FileHTTP Request
AI & RAG Trigger: Event Nodes: 10 Complexity: ★★★★☆ Added:

This workflow follows the HTTP Request → Readwritefile recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "pipelineB",
  "nodes": [
    {
      "parameters": {},
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        -2496,
        -736
      ],
      "id": "0ca9172d-f3aa-4bbf-9afb-feec02f419ce",
      "name": "When clicking \u2018Execute workflow\u2019"
    },
    {
      "parameters": {
        "fileSelector": "/data/data/onboarding/*.txt",
        "options": {}
      },
      "type": "n8n-nodes-base.readWriteFile",
      "typeVersion": 1.1,
      "position": [
        -2224,
        -736
      ],
      "id": "4d1c3ad7-7b43-4eba-8d64-481b3a960653",
      "name": "Read/Write Files from Disk"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "n8n-nodes-base.splitInBatches",
      "typeVersion": 3,
      "position": [
        -1952,
        -736
      ],
      "id": "6f45b229-5875-466f-a831-21a9ba144eab",
      "name": "Loop Over Items"
    },
    {
      "parameters": {
        "operation": "text",
        "destinationKey": "transcript",
        "options": {
          "keepSource": "json"
        }
      },
      "type": "n8n-nodes-base.extractFromFile",
      "typeVersion": 1.1,
      "position": [
        -1520,
        -736
      ],
      "id": "cfabd8ec-ec68-494a-baa0-92370eb3ec1e",
      "name": "Extract from File"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.groq.com/openai/v1/chat/completions",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "httpBearerAuth",
        "sendBody": true,
        "contentType": "raw",
        "rawContentType": "JSON",
        "body": "={\n  \"model\": \"llama-3.3-70b-versatile\",\n  \"temperature\": 0,\n  \"response_format\": { \"type\": \"json_object\" },\n  \"messages\": [\n    {\n      \"role\": \"system\",\n      \"content\": \"You extract operational updates from onboarding calls and return structured JSON.\"\n    },\n    {\n      \"role\": \"user\",\n      \"content\": \"Account ID: {{$json.account_id}}\\n\\nExtract any updates to the company configuration from this onboarding call.\\n\\nReturn JSON using this schema:\\n\\n{\\n  \\\"account_id\\\": \\\"string\\\",\\n  \\\"updates\\\": {},\\n  \\\"routing_changes\\\": {},\\n  \\\"new_services\\\": [],\\n  \\\"business_hour_changes\\\": {},\\n  \\\"integration_changes\\\": [],\\n  \\\"notes\\\": \\\"string\\\"\\n}\\n\\nRules:\\n- Always copy the Account ID exactly from the input above.\\n- Only extract information explicitly mentioned.\\n- If no change is mentioned for a field, return null.\\n- Output must be valid JSON only.\\n\\nTranscript:\\n{{$json.transcript_clean}}\"\n    }\n  ]\n}",
        "options": {
          "response": {
            "response": {}
          }
        }
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.4,
      "position": [
        -1072,
        -752
      ],
      "id": "be4aae31-ecf0-47c9-bb46-a53a3b342e63",
      "name": "HTTP Request1",
      "credentials": {
        "httpBearerAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "let transcript = $json.transcript || \"\";\n\n// clean problematic characters\ntranscript = transcript\n  .replace(/\\r/g, \" \")\n  .replace(/\\n/g, \" \")\n  .replace(/\"/g, '\\\\\"');\n\n// limit size to avoid Groq token limit\nif (transcript.length > 4000) {\n  transcript = transcript.substring(0, 4000);\n}\n\nreturn [\n  {\n    json: {\n      account_id: $json.account_id,\n      transcript_clean: transcript\n    }\n  }\n];"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        -1280,
        -752
      ],
      "id": "3b36588f-3f60-43ae-8e22-f1ef49d6fc83",
      "name": "Code in JavaScript1"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "http://host.docker.internal:5000/process-onboarding",
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "account_id",
              "value": "={{$json.account_id}}"
            },
            {
              "name": "updates",
              "value": "={{ $json.updates}}"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.4,
      "position": [
        -448,
        -752
      ],
      "id": "6dd29152-7749-405e-87a1-0be873c70bcd",
      "name": "HTTP Request2"
    },
    {
      "parameters": {
        "jsCode": "const raw = $json.choices[0].message.content;\n\n// remove markdown code blocks\nconst cleaned = raw\n  .replace(/```json/g, \"\")\n  .replace(/```/g, \"\")\n  .trim();\n\n// parse JSON\nconst parsed = JSON.parse(cleaned);\n\nreturn [\n  {\n    json: parsed\n  }\n];"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        -768,
        -752
      ],
      "id": "9a3e0a99-3ba8-4e41-9c6c-24b70ec128ae",
      "name": "Code in JavaScript3"
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.noOp",
      "name": "Replace Me1",
      "typeVersion": 1,
      "position": [
        -1328,
        -208
      ],
      "id": "53a7eaea-c469-4bf1-b12c-6a97ba864955"
    },
    {
      "parameters": {
        "jsCode": "return $input.all().map(item => {\n\n  const filename = item.binary.data.fileName;\n\n  const account_id = filename.replace(\".txt\",\"\");\n\n  return {\n    json: {\n      account_id: account_id\n    },\n    binary: item.binary\n  };\n\n});"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        -1696,
        -736
      ],
      "id": "b77d2d62-89dd-4a93-a95d-219e3ed026e0",
      "name": "Code in JavaScript"
    }
  ],
  "connections": {
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "Read/Write Files from Disk",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read/Write Files from Disk": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [
          {
            "node": "Extract from File",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Code in JavaScript",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract from File": {
      "main": [
        [
          {
            "node": "Code in JavaScript1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request1": {
      "main": [
        [
          {
            "node": "Code in JavaScript3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code in JavaScript1": {
      "main": [
        [
          {
            "node": "HTTP Request1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request2": {
      "main": [
        [
          {
            "node": "Replace Me1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code in JavaScript3": {
      "main": [
        [
          {
            "node": "HTTP Request2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Replace Me1": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code in JavaScript": {
      "main": [
        [
          {
            "node": "Extract from File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1",
    "binaryMode": "separate",
    "availableInMCP": false
  },
  "versionId": "1fc3c1e5-825e-4a0b-b493-ac616ac1b6b1",
  "id": "JnQX3nGP7cAS6a3d",
  "tags": []
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

pipelineB. Uses readWriteFile, httpRequest. Event-driven trigger; 10 nodes.

Source: https://github.com/4ryn/Talk2Agent/blob/e63c49b69fdcfa145b8c04589000ce722a662984/workflows/pipelineB.json — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

🤖🧑‍💻 AI Agent for Top n8n Creators Leaderboard Reporting. Uses httpRequest, executeWorkflowTrigger, readWriteFile, googleDrive. Event-driven trigger; 49 nodes.

HTTP Request, Execute Workflow Trigger, Read Write File +3
AI & RAG

pipelineA. Uses httpRequest, readWriteFile. Event-driven trigger; 11 nodes.

HTTP Request, Read Write File
AI & RAG

RAG CHATBOT Main. Uses telegram, telegramTrigger, lmChatOpenAi, n8n-nodes-mcp. Event-driven trigger; 87 nodes.

Telegram, Telegram Trigger, OpenAI Chat +8
AI & RAG

This workflow helps to automatically discover undocumented API endpoints by analysing JavaScript files from the website's HTML code.

Output Parser Autofixing, HTTP Request, Read Write File +5
AI & RAG

🤖🧑‍💻 AI Agent for Top n8n Creators Leaderboard Reporting. Uses httpRequest, lmChatOpenAi, executeWorkflowTrigger, toolWorkflow. Event-driven trigger; 49 nodes.

HTTP Request, OpenAI Chat, Execute Workflow Trigger +8