This workflow follows the Agent → OpenAI Chat 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 →
{
"name": "UTFPR - IA COVERSOR DE PDF",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "conversor",
"responseMode": "responseNode",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [
-540,
-80
],
"id": "59c7b387-b0b2-4e59-a689-628a03636e3e",
"name": "Webhook"
},
{
"parameters": {
"promptType": "define",
"text": "={{ $json.text }}",
"options": {
"systemMessage": "={\n \"name\": \"LeitorPDF\",\n \"objectives\": [\n \"[{{ $item(\"0\").$node[\"Extract from File\"].json[\"text\"] }}. Extraia SOMENTE os dados das tabelas do PDF conforme o padr\u00e3o de colunas abaixo e retorne EXCLUSIVAMENTE no formato CSV, SEM linhas ou c\u00e9lulas N/A, sem t\u00edtulos extras, sem coment\u00e1rios, exatamente no seguinte formato e separando cada campo por v\u00edrgula, uma linha para cada registro:\",\n \"\",\n \"TOMBO NOVO,TOMBO ANTIGO,INSTITUICAO,DESCRICAO DO BEM,LOCAL FISICO\",\n \"\",\n \"Exemplo:\",\n \"834,1333,UTFPR,Cadeira,Q-108\",\n \"11134,20421,UTFPR,Cadeira,Q-104\",\n \"\",\n \"IMPORTANTE:\",\n \"- Na coluna 'DESCRICAO DO BEM', coloque APENAS o valor que aparece na coluna 'Descri\u00e7\u00e3o' da tabela do PDF.\",\n \"- N\u00c3O inclua informa\u00e7\u00f5es de 'Estado de Conserva\u00e7\u00e3o', 'Situa\u00e7\u00e3o' ou qualquer outro campo nesta coluna.\",\n \"- Cada coluna do CSV deve conter exclusivamente o valor correspondente da tabela original, sem concatena\u00e7\u00f5es ou misturas.\",\n \"Se algum campo estiver vazio, apenas deixe em branco entre as v\u00edrgulas, sem colocar N/A, null ou aspas.\",\n \"N\u00e3o inclua nenhum texto extra, t\u00edtulos duplicados ou coment\u00e1rios fora do padr\u00e3o CSV solicitado.\"\n ],\n \"general_rules\": [\n \"Seja preciso e rigoroso ao preencher as colunas.\",\n \"N\u00e3o coloque aspas em campos vazios ou inteiros.\",\n \"N\u00e3o acrescente t\u00edtulos, coment\u00e1rios, legendas ou qualquer texto fora do padr\u00e3o CSV solicitado.\"\n ]\n}\n"
}
},
"id": "c2b16c0b-2e01-40de-be22-37790493d34c",
"name": "Leitor PDF",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
260,
-80
],
"typeVersion": 1.8
},
{
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.2,
"position": [
180,
160
],
"id": "22a914d6-140d-4577-8bfb-37560e23e2d1",
"name": "OpenAI Chat Model",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "pdf",
"binaryPropertyName": "=data",
"options": {}
},
"type": "n8n-nodes-base.extractFromFile",
"typeVersion": 1,
"position": [
-20,
-80
],
"id": "e409c0eb-e38f-4304-b197-b3b7beb9d59b",
"name": "Extract from File"
},
{
"parameters": {
"jsCode": "return [\n {\n binary: {\n data: {\n data: $json.body.files[0].content,\n mimeType: 'application/pdf',\n fileName: $json.body.files[0].name || 'documento.pdf'\n }\n }\n }\n];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-300,
-80
],
"id": "4ef4786c-5ecd-4282-b3fd-cd32334d056b",
"name": "Code"
},
{
"parameters": {
"respondWith": "allIncomingItems",
"options": {}
},
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.2,
"position": [
900,
-80
],
"id": "455eef1d-17a9-4f0f-8d0c-9667629b3f31",
"name": "Respond to Webhook"
},
{
"parameters": {
"jsCode": "const inputData = $json[\"output\"].trim();\n\nconst linhas = inputData.split('\\n');\n// Ignora cabe\u00e7alho, se vier\nconst linhasDados = linhas.filter(l => l && !l.toLowerCase().includes('tombo novo'));\n\nconst registros = linhasDados.map(linha => {\n const [tomboNovo, tomboAntigo, instituicao, descricao, localFisico] = linha.replace(/\"/g, '').split(',');\n\n return {\n \"Tombo Novo\": tomboNovo ? tomboNovo.trim() : \"\",\n \"Tombo Antigo\": tomboAntigo ? tomboAntigo.trim() : \"\",\n \"Institui\u00e7\u00e3o\": instituicao ? instituicao.trim() : \"\",\n \"Descricao do Bem\": descricao ? descricao.trim().split(' ')[0] : \"\",\n \"Local F\u00edsico\": localFisico ? localFisico.trim() : \"\"\n };\n});\n\nreturn registros.map(item => ({ json: item }));\n"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
640,
-80
],
"id": "f528c6b0-9eab-4ed2-8353-3dc5117a6422",
"name": "Code1"
}
],
"connections": {
"Webhook": {
"main": [
[
{
"node": "Code",
"type": "main",
"index": 0
}
]
]
},
"Leitor PDF": {
"main": [
[
{
"node": "Code1",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Leitor PDF",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Code": {
"main": [
[
{
"node": "Extract from File",
"type": "main",
"index": 0
}
]
]
},
"Extract from File": {
"main": [
[
{
"node": "Leitor PDF",
"type": "main",
"index": 0
}
]
]
},
"Code1": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
}
},
"active": true,
"settings": {
"executionOrder": "v1"
},
"versionId": "9dc0129d-5275-4644-99a9-7071f9738a2d",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "Hko5DKAkWcWtTmW5",
"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.
openAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
UTFPR - IA COVERSOR DE PDF. Uses agent, lmChatOpenAi. Webhook trigger; 7 nodes.
Source: https://github.com/TechnologicalCraftsmanship/ProcessadorPDFsUTFPR/blob/d2175be3954185c0098a98f0af807e9387b9752b/UTFPR___IA_COVERSOR_DE_PDF.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
⏺ 🚀 How it works
L&D_AgentsAI_ATIVO. Uses httpRequest, agent, googleCalendarTool, toolSerpApi. Webhook trigger; 93 nodes.
CLINICAINTEGRAL_secretary. Uses postgres, mcpClientTool, googleDriveTool, toolWorkflow. Webhook trigger; 89 nodes.
Remi 1.1. Uses lmChatOpenAi, memoryPostgresChat, openAi, postgres. Webhook trigger; 89 nodes.
This n8n workflow orchestrates a powerful suite of AI Agents and automations to manage and optimize various aspects of an e-commerce operation, particularly for platforms like Shopify. It leverages La