Workflow: develop a modular n8n workflow that supports Gmail Googlesheets Create Triggered
Integrations: extractFromFile, gmailTrigger, googleSheets, stickyNote

{"meta": {"instanceId": "ddc2592f2c048b3a9255de9457632cead183ed1f8d682593ea74c5b20f968a76", "templateCredsSetupCompleted": true}, "nodes": [{"id": "53cc8017-5310-4205-85e0-8cc839693601", "name": "Structured Output Parser", "type": "@n8n/n8n-nodes-langchain.outputParserStructured", "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}, {"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### \ud83d\udcc3Before you get started, you'll need:\n- [n8n installation](https://n8n.partnerlinks.io/n8nTTVideoGenTemplate) \n- [OpenAI API Key](https://platform.openai.com/api-keys)\n- Google Sheets API enabled in [Google Cloud Console](https://console.cloud.google.com/apis/api/sheets.googleapis.com/overview)\n- Google Drive API enabled in [Google Cloud Console](https://console.cloud.google.com/apis/api/drive.googleapis.com/overview)\n- OAuth 2.0 Client ID and Client Secret from your [Google Cloud Console Credentials](https://console.cloud.google.com/apis/credentials)\n"}, "typeVersion": 1}, {"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}, {"id": "5418cfae-25da-4f58-99ef-d6957d8819a8", "name": "AI Agent to evaluate Resume", "type": "@n8n/n8n-nodes-langchain.agent", "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}, {"id": "dce8e431-9d5c-4aa1-a0eb-c2a27de2d7f9", "name": "OpenAI Chat Model (GPT 4o-mini)", "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", "position": [520, 400], "parameters": {"model": {"__rl": true, "mode": "list", "value": "gpt-4o-mini"}, "options": {}}, "credentials": {"openAiApi": {"id": "PMxepoh6OuVxbpg1", "name": "OpenAi account"}}, "typeVersion": 1.2}, {"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": "https://docs.google.com/spreadsheets/d/1SGYsuJI2YJVztZZmSLsFZ0lbUHnxm0V9r3c8S5-2q74/edit#gid=781640061", "cachedResultName": "Resume Score"}, "documentId": {"__rl": true, "mode": "list", "value": "1SGYsuJI2YJVztZZmSLsFZ0lbUHnxm0V9r3c8S5-2q74", "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1SGYsuJI2YJVztZZmSLsFZ0lbUHnxm0V9r3c8S5-2q74/edit?usp=drivesdk", "cachedResultName": "Lead Generation"}}, "credentials": {"googleSheetsOAuth2Api": {"id": "kzZGQmdAV5cPfymZ", "name": "Google Sheets (server@hic)"}}, "typeVersion": 4.5}, {"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}], "pinData": {}, "connections": {"Structured Output Parser": {"ai_outputParser": [[{"node": "AI Agent to evaluate Resume", "type": "ai_outputParser", "index": 0}]]}, "Extract text from PDF File": {"main": [[{"node": "AI Agent to evaluate Resume", "type": "main", "index": 0}]]}, "AI Agent to evaluate Resume": {"main": [[{"node": "Add Resume Evaluation to Google Sheets", "type": "main", "index": 0}]]}, "Trigger on new Email Received": {"main": [[{"node": "Extract text from PDF File", "type": "main", "index": 0}]]}, "OpenAI Chat Model (GPT 4o-mini)": {"ai_languageModel": [[{"node": "AI Agent to evaluate Resume", "type": "ai_languageModel", "index": 0}]]}}}