{ "meta": { "instanceId": "workflow-41f18dbc", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:45.168278", "updatedAt": "2025-09-29T07:07:45.168317", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production" }, "nodes": [ { "id": "53cc8017-5310-4205-85e0-8cc839693601", "name": "Structured Output Parser", "type": "n8n-nodes-base.noOp", "position": [ 720, 400 ], "parameters": { "schemaType": "manual", "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"name\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n \"email\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n \"linkedin\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n \"score\": {\n\t\t\t\"type\": \"string\"\n\t\t}\n\t\t\n\t}\n}" }, "typeVersion": 1.2, "notes": "This outputParserStructured node performs automated tasks as part of the workflow." }, { "id": "ea0c00d3-25c8-4523-88ff-d61d6665ecf7", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [ -760, 160 ], "parameters": { "width": 480, "height": 260, "content": "## Resume Screener from Gmail to Sheets\n\n### 📃Before you get started, you'll need:\n- [n8n installation]({{ $env.WEBHOOK_URL }} \n- [OpenAI API Key]({{ $env.API_BASE_URL }}\n- Google Sheets API enabled in [Google Cloud Console]({{ $env.API_BASE_URL }}\n- Google Drive API enabled in [Google Cloud Console]({{ $env.API_BASE_URL }}\n- OAuth 2.0 Client ID and Client Secret from your [Google Cloud Console Credentials]({{ $env.API_BASE_URL }}\n" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "e4f3aef9-750a-48bb-899b-bd4a810032f2", "name": "Extract text from PDF File", "type": "n8n-nodes-base.extractFromFile", "position": [ 320, 180 ], "parameters": { "options": {}, "operation": "pdf", "binaryPropertyName": "attachment_0" }, "typeVersion": 1, "notes": "This extractFromFile node performs automated tasks as part of the workflow." }, { "id": "5418cfae-25da-4f58-99ef-d6957d8819a8", "name": "AI Agent to evaluate Resume", "type": "n8n-nodes-base.noOp", "position": [ 540, 180 ], "parameters": { "text": "=Here is the resume:\n\n{{ $json.text }}", "options": { "systemMessage": "You are an invaluable assistant. You were given a resume. You have to help me analyze the resume and give it a score based on the details available in the resume. Also, extract the name, email, and LinkedIn profile from the resume." }, "promptType": "define", "hasOutputParser": true }, "typeVersion": 1.8, "notes": "This agent node performs automated tasks as part of the workflow." }, { "id": "dce8e431-9d5c-4aa1-a0eb-c2a27de2d7f9", "name": "OpenAI Chat Model (GPT 4o-mini)", "type": "n8n-nodes-base.noOp", "position": [ 520, 400 ], "parameters": { "model": { "__rl": true, "mode": "list", "value": "gpt-4o-mini" }, "options": {} }, "credentials": { "openAiApi": { "id": "PMxepoh6OuVxbpg1", "name": "OpenAi account" } }, "typeVersion": 1.2, "notes": "This lmChatOpenAi node performs automated tasks as part of the workflow." }, { "id": "e7fdaf75-11ad-40c2-84a0-13c52f6f2eb1", "name": "Add Resume Evaluation to Google Sheets", "type": "n8n-nodes-base.googleSheets", "position": [ 920, 180 ], "parameters": { "columns": { "value": { "Name": "={{ $json.output.name }}", "Email": "={{ $json.output.email }}", "Score": "={{ $json.output.score }}", "LinkedIn": "={{ $json.output.linkedin }}", "Resume text": "={{ $('Extract text from PDF File').item.json.text }}" }, "schema": [ { "id": "Name", "type": "string", "display": true, "required": false, "displayName": "Name", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "Email", "type": "string", "display": true, "required": false, "displayName": "Email", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "LinkedIn", "type": "string", "display": true, "removed": false, "required": false, "displayName": "LinkedIn", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "Score", "type": "string", "display": true, "required": false, "displayName": "Score", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "Resume text", "type": "string", "display": true, "required": false, "displayName": "Resume text", "defaultMatch": false, "canBeUsedToMatch": true } ], "mappingMode": "defineBelow", "matchingColumns": [], "attemptToConvertTypes": false, "convertFieldsToString": false }, "options": { "useAppend": true }, "operation": "append", "sheetName": { "__rl": true, "mode": "list", "value": 781640061, "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Resume Score" }, "documentId": { "__rl": true, "mode": "list", "value": "1SGYsuJI2YJVztZZmSLsFZ0lbUHnxm0V9r3c8S5-2q74", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Lead Generation" } }, "credentials": { "googleSheetsOAuth2Api": { "id": "kzZGQmdAV5cPfymZ", "name": "Google Sheets (server@hic)" } }, "typeVersion": 4.5, "notes": "This googleSheets node performs automated tasks as part of the workflow." }, { "id": "0ad65e2b-665d-4b77-a941-b15a7ffbfb89", "name": "Trigger on new Email Received", "type": "n8n-nodes-base.gmailTrigger", "position": [ 60, 180 ], "parameters": { "simple": false, "filters": { "q": "has:attachment", "labelIds": [ "UNREAD" ], "readStatus": "unread" }, "options": { "downloadAttachments": true }, "pollTimes": { "item": [ { "mode": "everyHour", "minute": 1 } ] } }, "credentials": { "gmailOAuth2": { "id": "tPOAqAl9y3adqJD6", "name": "Gmail account (hire@hic)" } }, "typeVersion": 1.2, "notes": "This gmailTrigger node performs automated tasks as part of the workflow." }, { "id": "error-e23b7ef4", "name": "Error Handler", "type": "n8n-nodes-base.stopAndError", "typeVersion": 1, "position": [ 1000, 400 ], "parameters": { "message": "Workflow execution error", "options": {} } } ], "pinData": {}, "connections": { "e4f3aef9-750a-48bb-899b-bd4a810032f2": { "main": [ [ { "node": "error-handler-e4f3aef9-750a-48bb-899b-bd4a810032f2-1304f85c", "type": "main", "index": 0 } ] ] }, "dce8e431-9d5c-4aa1-a0eb-c2a27de2d7f9": { "main": [ [ { "node": "error-handler-dce8e431-9d5c-4aa1-a0eb-c2a27de2d7f9-06eee85b", "type": "main", "index": 0 } ] ] }, "e7fdaf75-11ad-40c2-84a0-13c52f6f2eb1": { "main": [ [ { "node": "error-handler-e7fdaf75-11ad-40c2-84a0-13c52f6f2eb1-22382597", "type": "main", "index": 0 } ] ] } }, "name": "Outputparserstructured Workflow", "settings": { "executionOrder": "v1", "saveManualExecutions": true, "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000 }, "description": "Automated workflow: Outputparserstructured Workflow. This workflow integrates 8 different services: stickyNote, gmailTrigger, agent, outputParserStructured, stopAndError. It contains 10 nodes and follows best practices for error handling and security.", "tags": [ "automation", "n8n", "production-ready", "excellent", "optimized" ], "notes": "Excellent quality workflow: Outputparserstructured Workflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation." }