{ "nodes": [ { "id": "b6cd232e-e82e-457b-9f03-c010b3eba148", "name": "When clicking 'Test workflow'", "type": "n8n-nodes-base.manualTrigger", "position": [ -40, 0 ], "parameters": {}, "typeVersion": 1 }, { "id": "2b734806-e3c0-4552-a491-54ca846ed3ac", "name": "Extract from File", "type": "n8n-nodes-base.extractFromFile", "position": [ 620, 0 ], "parameters": { "options": {}, "operation": "binaryToPropery" }, "typeVersion": 1 }, { "id": "2c199499-cc4f-405c-8560-765500b7acba", "name": "Google Drive", "type": "n8n-nodes-base.googleDrive", "position": [ 420, 0 ], "parameters": { "fileId": { "__rl": true, "mode": "id", "value": "YOUR_DRIVE_FILE_ID" }, "options": {}, "operation": "download" }, "typeVersion": 3 }, { "id": "e3031c0c-f059-4f30-9684-10014a277d55", "name": "Call Gemini 3.8 Flash", "type": "n8n-nodes-base.httpRequest", "position": [ 880, 220 ], "parameters": { "url": "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.8-flash:generateContent", "method": "POST", "options": {}, "jsonBody": "={{ ({contents:[{parts:[{inline_data:{mime_type:'application/pdf',data:$json.data}},{text:$('Define Prompt').item.json.prompt}]}]}) }}", "sendBody": true, "specifyBody": "json", "authentication": "predefinedCredentialType", "nodeCredentialType": "googlePalmApi" }, "typeVersion": 4.2 }, { "id": "135df716-32a1-47e8-9ed8-30c830b803d6", "name": "Call Claude Sonnet 5.5", "type": "n8n-nodes-base.httpRequest", "position": [ 880, -140 ], "parameters": { "url": "https://api.anthropic.com/v1/messages", "method": "POST", "options": {}, "jsonBody": "={{ ({model:'claude-sonnet-5-5',max_tokens:1024,messages:[{role:'user',content:[{type:'document',source:{type:'base64',media_type:'application/pdf',data:$json.data}},{type:'text',text:$('Define Prompt').item.json.prompt}]}]}) }}", "sendBody": true, "sendHeaders": true, "specifyBody": "json", "authentication": "predefinedCredentialType", "headerParameters": { "parameters": [ { "name": "anthropic-version", "value": "2023-06-01" }, { "name": "content-type", "value": "application/json" } ] }, "nodeCredentialType": "anthropicApi" }, "typeVersion": 4.2 }, { "id": "5b8994d1-4bfd-4776-84ac-b3141aca6378", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [ -700, -280 ], "parameters": { "color": 7, "width": 601, "height": 585, "content": "## Workflow: Extract data from PDF with Claude Sonnet 5.5 or Gemini 3.8 Flash\n\n**Overview**\n- This workflow helps you compare Claude Sonnet 5.5 and Gemini 3.8 Flash when extracting data from a PDF\n- This workflow extracts and processes the data within a PDF in **one single step**, **instead of calling an OCR and then an LLM”**\n\n\n**How it works**\n- The initial 2 steps download the PDF and convert it to base64.\n- This base64 string is then sent to both Claude Sonnet 5.5 and Gemini 3.8 Flash to extract information.\n- This workflow is made to let you compare results, latency, and cost (in their dedicated dashboard).\n\n\n**How to use it**\n- Set up your Google Drive if not already done\n- Select a document on your Google Drive\n- Modify the prompt in \"Define Prompt\" to extract the information you need and transform it as wanted.\n- Get a [Claude API key](https://console.anthropic.com/settings/keys) and/or [Gemini API key](https://aistudio.google.com/app/apikey)\n- Note that you can deactivate one of the 2 API calls if you don't want to try both\n- Test the Workflow\n" }, "typeVersion": 1 }, { "id": "616241a9-6199-406b-88dc-0afc7d974250", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [ 820, 60 ], "parameters": { "color": 5, "width": 320, "height": 360, "content": "You can output the result as JSON by adding the following:\n```\n\"generationConfig\": {\n \"responseMimeType\": \"application/json\"\n```\nor even use a structured output.\n[Check the documentation](https://ai.google.dev/gemini-api/docs/structured-output?lang=rest)" }, "typeVersion": 1 }, { "id": "bbac8d3d-d68f-4aa2-a41a-b06f7de2317b", "name": "Define Prompt", "type": "n8n-nodes-base.set", "position": [ 180, 0 ], "parameters": { "options": {}, "assignments": { "assignments": [ { "id": "dba23ef5-95df-496a-8e24-c7c1544533d2", "name": "prompt", "type": "string", "value": "Extract the VAT numbers for each country" } ] } }, "typeVersion": 3.4 }, { "id": "3c2e7265-76e5-4911-a950-7e6b0c89ec5a", "name": "Sticky Note2", "type": "n8n-nodes-base.stickyNote", "position": [ 820, -200 ], "parameters": { "color": 5, "width": 320, "height": 240, "content": "For JSON output with Claude Sonnet 5.5, use a supported structured output schema via output_config.format. [Structured outputs documentation](https://platform.claude.com/docs/en/build-with-claude/structured-outputs)." }, "typeVersion": 1 }, { "id": "f2b46305-5200-486e-ad4d-ecc0d2a14314", "name": "Sticky Note3", "type": "n8n-nodes-base.stickyNote", "position": [ 380, -120 ], "parameters": { "color": 5, "width": 380, "height": 280, "content": "These 2 steps first download the PDF file, and then convert it to base64.\nThis is required by both APIs to process the file." }, "typeVersion": 1 }, { "id": "e5dff70f-b55a-4c23-9025-765a7cf19c4a", "name": "Sticky Note4", "type": "n8n-nodes-base.stickyNote", "position": [ 120, -120 ], "parameters": { "color": 5, "width": 220, "height": 280, "content": "This prompt is used in both Gemini’s and Claude’s calls to define what information should be extracted and processed." }, "typeVersion": 1 } ], "pinData": {}, "connections": { "Google Drive": { "main": [ [ { "node": "Extract from File", "type": "main", "index": 0 } ] ] }, "Define Prompt": { "main": [ [ { "node": "Google Drive", "type": "main", "index": 0 } ] ] }, "Extract from File": { "main": [ [ { "node": "Call Claude Sonnet 5.5", "type": "main", "index": 0 }, { "node": "Call Gemini 3.8 Flash", "type": "main", "index": 0 } ] ] }, "When clicking 'Test workflow'": { "main": [ [ { "node": "Define Prompt", "type": "main", "index": 0 } ] ] } }, "name": "Compare PDF Extraction with Claude and Gemini", "active": false }