This workflow corresponds to n8n.io template #4514 — we link there as the canonical source.
This workflow follows the Google Sheets → OpenAI 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 →
{
"id": "18F5QPOSiU1XJ994",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "AI-Powered HR Interview System with BeyondPresence",
"tags": [],
"nodes": [
{
"id": "4b6b6bfb-2438-4514-88cd-996ade9bf105",
"name": "Job Description Instructions",
"type": "n8n-nodes-base.stickyNote",
"position": [
432,
-800
],
"parameters": {
"color": 5,
"width": 432,
"height": 520,
"content": "## \ud83d\udcdd Step 1: Add Your Job Description\n\n**Simply paste your complete job posting in the job description node**\n\nInclude:\n- Job title\n- Company name\n- Responsibilities\n- Requirements\n- Any other relevant details\n\nThe AI will understand everything from your text!"
},
"typeVersion": 1
},
{
"id": "9a167a25-cd63-4fd3-ad62-61b2f53cfc70",
"name": "\ud83d\udcdd Your Job Description",
"type": "n8n-nodes-base.code",
"position": [
704,
-432
],
"parameters": {
"jsCode": "// ========== PASTE YOUR JOB DESCRIPTION HERE ==========\n// Simply paste your entire job posting between the quotes below\n// Include everything: job title, company name, requirements, etc.\n\nconst jobDescription = `\nProduct Marketing Manager \u2013 BeyondPresence.ai\n\nBeyondPresence.ai is redefining human-computer interaction with hyper-realistic, emotionally intelligent digital avatars and Conversational Video Agents that deliver human-like, real-time conversations at scale. Our proprietary AI technology powers next-generation customer support, sales, HR, and training experiences for leading brands worldwide. We are seeking a dynamic Product Marketing Manager to drive the go-to-market strategy and accelerate adoption of our cutting-edge platform.\n\nResponsibilities\nDevelop and execute go-to-market strategies for new and existing BeyondPresence.ai products, with a focus on driving demand, adoption, and customer engagement.\n\nCraft compelling product positioning and messaging that differentiates our conversational avatars and platform in the market.\n\nConduct market, competitor, and user research to identify trends, customer needs, and growth opportunities.\n\nBuild and maintain detailed buyer personas to guide targeted marketing and sales initiatives.\n\nCollaborate closely with product, engineering, and sales teams to align on product vision, roadmap, and feature launches.\n\nLead cross-functional product launches, including launch planning, sales enablement, and campaign execution.\n\nCreate and manage marketing collateral, demos, website content, case studies, and sales tools that clearly communicate product value.\n\nGather and analyze customer feedback and campaign performance data to optimize messaging and marketing programs.\n\nSupport the sales team with training, product presentations, and competitive insights to drive conversions and upsells.\n\nRepresent BeyondPresence.ai at industry events, webinars, and customer meetings as a product evangelist.\n\nRequirements\n4+ years of experience in product marketing, preferably in B2B SaaS, AI, or related technology sectors.\n\nProven track record of launching and scaling innovative technology products, ideally in AI, conversational platforms, or digital avatars.\n\nDeep understanding of go-to-market strategies, product positioning, and value-based messaging.\n\nExceptional written and verbal communication skills, including copywriting and storytelling.\n\nStrong analytical skills with experience in market research, data analysis, and campaign optimization.\n\nDemonstrated ability to influence and collaborate with cross-functional teams without direct authority.\n\nExperience supporting sales teams with enablement materials and training.\n\nBachelor\u2019s degree in marketing, business, or a related field; advanced degree a plus.\n\nPassion for emerging technologies, AI, and shaping the future of human-computer interaction.\n\nWhy BeyondPresence.ai?\nJoin a visionary, fast-growing team with deep expertise in AI, avatars, and conversational technology.\n\nShape the future of digital communication and help global brands deliver human-like experiences at scale.\n\nWork with a collaborative, mission-driven team backed by proven founders and industry leaders.\n\nCompetitive compensation, flexible work environment, and opportunities for rapid career growth.\n\nReady to help define the future of human-AI interaction? Apply now and join BeyondPresence.ai!\n`;\n\n// Don't change anything below this line\nreturn [{\n json: {\n jobDescription: jobDescription.trim(),\n timestamp: new Date().toISOString()\n }\n}];"
},
"typeVersion": 2
},
{
"id": "d915a549-3c6a-4c70-8b47-893d0fee7524",
"name": "Setup Instructions",
"type": "n8n-nodes-base.stickyNote",
"position": [
880,
-800
],
"parameters": {
"color": 7,
"width": 430,
"height": 520,
"content": "## \ud83d\ude80 Step 2: Create Your Interview Agent\n\n**Click the button below to:**\n1. Create your AI interviewer\n2. Get your interview link\n\nThis only needs to be done ONCE!"
},
"typeVersion": 1
},
{
"id": "08aba63a-a8dc-47bf-bf91-deeb96a2f60c",
"name": "\u25b6\ufe0f Click to Start Setup",
"type": "n8n-nodes-base.manualTrigger",
"position": [
496,
-432
],
"parameters": {},
"typeVersion": 1
},
{
"id": "9ad93631-869d-4ee1-bb22-e9d14909465f",
"name": "Create Interview Agent",
"type": "n8n-nodes-beyondpresence.beyondPresence",
"position": [
1152,
-432
],
"parameters": {
"name": "={{ $json.agentName }}",
"avatarId": "={{ $json.avatarId }}",
"greeting": "={{ $json.welcomeMessage }}",
"systemPrompt": "={{ $json.systemPrompt }}"
},
"credentials": {
"beyondPresenceApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "ee920210-f141-4d79-97a3-f4a7f363662e",
"name": "Save Agent Info",
"type": "n8n-nodes-base.code",
"position": [
1408,
-432
],
"parameters": {
"jsCode": "const workflowStaticData = $getWorkflowStaticData('global');\n\n\n\nconst agentId = $input.first().json.id;\nconst interviewLink = $input.first().json.call_link;\nconst jobDescription = $('Prepare Interview Agent').first().json.jobDescription;\n\nworkflowStaticData.agentId = agentId;\nworkflowStaticData.jobDescription = jobDescription;\nworkflowStaticData.interviewLink = interviewLink;\n\n\n\nreturn [{\n json: {\n \"Agent ID\": workflowStaticData.agentId,\n \"Agent Name\":$('Prepare Interview Agent').first().json.agentName,\n \"Interview Link\": interviewLink,\n \"Job Description\": workflowStaticData.jobDescription,\n \"System Prompt\": $('Prepare Interview Agent').first().json.systemPrompt,\n \"Welcome Message\": $('Prepare Interview Agent').first().json.welcomeMessage\n \n }\n}];"
},
"typeVersion": 2
},
{
"id": "fb33de31-3cda-40d0-adaa-87da00bafcbd",
"name": "Success!",
"type": "n8n-nodes-base.stickyNote",
"position": [
1328,
-800
],
"parameters": {
"color": 2,
"width": 267,
"height": 520,
"content": "## \u2705 Setup Complete!\n\n**Your interview link:**\n`https://bey.chat/[agent-id]`\n\n** This step will now setup our agent id and job description which is now automatically passed and used by our webhook."
},
"typeVersion": 1
},
{
"id": "6f78c2f6-59a6-410e-bf81-b724acdd3e73",
"name": "Automated Analysis",
"type": "n8n-nodes-base.stickyNote",
"position": [
432,
-208
],
"parameters": {
"color": 6,
"width": 520,
"height": 572,
"content": "## \ud83e\udd16 Step 3: Automated Interview Analysis\n\n**This section runs automatically to:**\n- Receive completed interviews\n- Analyze candidate responses\n- Save results to Google Sheets\n\n**Before activating:** \nMake sure to configure the webhook URL in your BeyondPresence dashboard under Settings \u2192 Webhooks"
},
"typeVersion": 1
},
{
"id": "c8fd1948-08f1-4911-908b-5fd9680c4bd5",
"name": "Receive Interview Data",
"type": "n8n-nodes-base.webhook",
"position": [
480,
192
],
"parameters": {
"path": "beyondpresence-hr-interviews",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 2
},
{
"id": "0b020b2c-d0b9-481b-be09-5332c9aa41fb",
"name": "Analyze Interview",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1168,
192
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "id",
"value": "gpt-4o-mini"
},
"options": {
"temperature": 0.3
},
"messages": {
"values": [
{
"role": "system",
"content": "=Analyze this job interview and provide a hiring assessment.\n\nJob Description:\n{{ $json['Job Description'] }}\n\nCandidate: {{ $('Handle webhook event').item.json.user.name }}\nDuration: {{ $('Handle webhook event').item.json.call_details.duration_minutes }} minutes\n\nCandidate Transcript:\n{{ $('Handle webhook event').item.json.messages.map(m => `[${m.timestamp}] ${m.sender.toUpperCase()}: ${m.message}`).join('\\n') }}\n\nProvide a comprehensive assessment including:\n1. Overall fit score (0-100)\n2. Key strengths\n3. Any concerns or gaps\n4. Hiring recommendation\n5. Suggested next steps\n\nFormat your response as JSON:\n```json\n{\n \"fitScore\": 85,\n \"recommendation\": \"recommend\",\n \"strengths\": [\"strength 1\", \"strength 2\", \"strength 3\"],\n \"concerns\": [\"concern 1\", \"concern 2\"],\n \"summary\": \"Brief 2-3 sentence overall assessment\",\n \"nextSteps\": [\"suggested action 1\", \"suggested action 2\"]\n}\n```"
}
]
}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "3d94689e-3538-4a1d-950a-64edba48c219",
"name": "Format for Sheets",
"type": "n8n-nodes-base.code",
"position": [
1712,
192
],
"parameters": {
"jsCode": "// Parse AI analysis\nconst analysisText = $input.first().json.message.content;\nconst analysis = JSON.parse(analysisText.match(/```json\\n([\\s\\S]*?)\\n```/)[1]);\nconst startedAt = new Date($('Receive Interview Data').first().json.body.call_data.startedAt);\nconst endedAt = new Date($('Receive Interview Data').first().json.body.call_data.endedAt);\nconst diffMs = endedAt - startedAt; // difference in milliseconds\n\nconst totalSeconds = Math.floor(diffMs / 1000);\nconst minutes = Math.floor(totalSeconds / 60);\nconst seconds = totalSeconds % 60;\n\nconst diffString = `${minutes}:${seconds}`;\n// Format for Google Sheets\nreturn [{\n json: {\n \"Candidate Name\": $('Handle webhook event').first().json.user.name,\n \"Interview Date\": $now.toFormat('dd.MM.yyyy'),\n \"Duration (minutes)\":diffString,\n \"Fit Score\": analysis.fitScore,\n \"Recommendation\": analysis.recommendation,\n \"Strengths\": analysis.strengths.join(\"; \"),\n \"Concerns\": analysis.concerns.join(\"; \") || \"None\",\n \"Summary\": analysis.summary,\n \"Next Steps\": analysis.nextSteps.join(\"; \"),\n \"Call ID\": $('Handle webhook event').first().json.call_id,\n \"Analyzed On\": $now,\n }\n}];"
},
"typeVersion": 2
},
{
"id": "eec890f5-3a5a-4c10-9dc9-a9d8be06b709",
"name": "Save to Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
1920,
192
],
"parameters": {
"columns": {
"value": {
"Fit Score": "={{ $json['Fit Score'] }}",
"Candidate Name": "={{ $json['Candidate Name'] }}",
"Interview Date": "={{ $json['Interview Date'] }}",
"Duration (minutes)": "={{ $json['Duration (minutes)'] }}"
},
"schema": [
{
"id": "Candidate Name",
"type": "string",
"display": true,
"required": false,
"displayName": "Candidate Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Interview Date",
"type": "string",
"display": true,
"required": false,
"displayName": "Interview Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Duration (minutes)",
"type": "string",
"display": true,
"required": false,
"displayName": "Duration (minutes)",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Fit Score",
"type": "string",
"display": true,
"required": false,
"displayName": "Fit Score",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Recommendation",
"type": "string",
"display": true,
"required": false,
"displayName": "Recommendation",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Strengths",
"type": "string",
"display": true,
"required": false,
"displayName": "Strengths",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Concerns",
"type": "string",
"display": true,
"required": false,
"displayName": "Concerns",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Summary",
"type": "string",
"display": true,
"required": false,
"displayName": "Summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Next Steps",
"type": "string",
"display": true,
"required": false,
"displayName": "Next Steps",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Call ID",
"type": "string",
"display": true,
"required": false,
"displayName": "Call ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Analyzed On",
"type": "string",
"display": true,
"required": false,
"displayName": "Analyzed On",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "autoMapInputData",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1dXLpP5bRRirBsln4YIQtFgb1MiP-0yR8IDRzse5k7X0/edit#gid=0",
"cachedResultName": "Interview Results"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1dXLpP5bRRirBsln4YIQtFgb1MiP-0yR8IDRzse5k7X0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1dXLpP5bRRirBsln4YIQtFgb1MiP-0yR8IDRzse5k7X0/edit?usp=drivesdk",
"cachedResultName": "BeyondPresence HR Interview System Template"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "7467cc70-dfbc-42b0-96f9-e5193d93f351",
"name": "Sheet Headers",
"type": "n8n-nodes-base.stickyNote",
"position": [
1664,
-208
],
"parameters": {
"color": 6,
"width": 480,
"height": 572,
"content": "## \ud83d\udcca Google Sheets Connection\n\n**Quick Start**:\n1. Use the same document but select **'Interview Results'** sheet this time, the template includes all required columns!\n\n**Connect your Google Sheets here \u2192**"
},
"typeVersion": 1
},
{
"id": "41fed3ba-28e0-4e18-96d3-8a333ac0527f",
"name": "Important!",
"type": "n8n-nodes-base.stickyNote",
"position": [
-96,
-512
],
"parameters": {
"color": 3,
"width": 516,
"height": 484,
"content": "## \u26a0\ufe0f **Important**\n\n### 1. First get an API key from https://app.bey.chat , to use desired avatar copy paste avatar id from https://app.bey.chat/avatars in \"Create Interview Agent Node\"\n\n### 2. You must run setup flow once so your google sheet has at least one row in interview agents.\n\n### 3. Make sure to configure the webhook URL in your BeyondPresence dashboard under Settings \u2192 Webhooks using your production webhook after activating flow\n\n### 4. We use the latest created agent from step 1, if you want to choose a specific agent then manually copy paste agentId from step 1 \"save agent info\" node and filter it for column Agent ID in \"Get agent info\" node."
},
"typeVersion": 1
},
{
"id": "5a49f9cf-533f-407d-b55f-00a17981a414",
"name": "Processing Steps",
"type": "n8n-nodes-base.stickyNote",
"position": [
960,
-208
],
"parameters": {
"color": 4,
"width": 684,
"height": 572,
"content": "## \ud83d\udd0d Interview Processing & AI Assessment\n\n1. Extract Interview Data: Captures candidate responses and metadata from completed interviews\n2. AI Interview Analysis: Uses OpenAI to evaluate candidate fit against job requirements\n3. Format Assessment Results: Structures AI insights for easy review and decision-making\n\nThe AI analyzes:\n- Overall fit score (0-100)\n- Key strengths demonstrated\n- Potential concerns or skill gaps\n- Hiring recommendation level\n- Suggested next steps\n- Summary of candidate suitability\n\nThis comprehensive analysis helps HR teams make data-driven hiring decisions by providing consistent, objective assessments of each candidate's interview performance."
},
"typeVersion": 1
},
{
"id": "50539b34-5117-45f3-abee-59374f3774e9",
"name": "Sheet Headers1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1616,
-800
],
"parameters": {
"color": 6,
"width": 380,
"height": 520,
"content": "## \ud83d\udcca Google Sheets Setup\n\n**Quick Start**:\n1. Copy our template sheet: https://docs.google.com/spreadsheets/d/1dXLpP5bRRirBsln4YIQtFgb1MiP-0yR8IDRzse5k7X0/copy\n2. Connect your account credential in the node.\n3. Update the Google Sheets node with your new document and select **'Interview Agents'** sheet\n (if not automatically set)\n3. You will get interview link in this sheet which you can share with candidates and start interviewing\n\n**Connect your Google Sheets here \u2192**"
},
"typeVersion": 1
},
{
"id": "c0cfef50-8c94-4c3a-906b-aaaf680c16f4",
"name": "Save to Google Sheets1",
"type": "n8n-nodes-base.googleSheets",
"position": [
1744,
-432
],
"parameters": {
"columns": {
"value": {},
"schema": [
{
"id": "Agent ID",
"type": "string",
"display": true,
"required": false,
"displayName": "Agent ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Agent Name",
"type": "string",
"display": true,
"required": false,
"displayName": "Agent Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Interview Link",
"type": "string",
"display": true,
"required": false,
"displayName": "Interview Link",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Job Description",
"type": "string",
"display": true,
"required": false,
"displayName": "Job Description",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "System Prompt",
"type": "string",
"display": true,
"required": false,
"displayName": "System Prompt",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Welcome Message",
"type": "string",
"display": true,
"required": false,
"displayName": "Welcome Message",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "autoMapInputData",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1902016160,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1dXLpP5bRRirBsln4YIQtFgb1MiP-0yR8IDRzse5k7X0/edit#gid=1902016160",
"cachedResultName": "Interview Agents"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1dXLpP5bRRirBsln4YIQtFgb1MiP-0yR8IDRzse5k7X0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1dXLpP5bRRirBsln4YIQtFgb1MiP-0yR8IDRzse5k7X0/edit?usp=drivesdk",
"cachedResultName": "BeyondPresence HR Interview System Template"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "08548c00-1de5-42e1-801a-0339c9202efc",
"name": "Handle webhook event",
"type": "n8n-nodes-beyondpresence.beyondPresence",
"position": [
816,
192
],
"parameters": {
"agentIds": "={{ $items(\"Get agent info\")[$items(\"Get agent info\").length - 1].json['Agent ID'] }}",
"resource": "webhook",
"eventType": "call_ended",
"webhookData": "={{ $('Receive Interview Data').item.json.body.toJsonString() }}",
"filterByAgentIds": true
},
"credentials": {
"beyondPresenceApi": {
"name": "<your credential>"
}
},
"executeOnce": true,
"typeVersion": 1
},
{
"id": "feac5528-d4c6-40d8-8d40-b681770ba648",
"name": "Get agent info",
"type": "n8n-nodes-base.googleSheets",
"position": [
656,
192
],
"parameters": {
"options": {
"returnFirstMatch": true
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1902016160,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1dXLpP5bRRirBsln4YIQtFgb1MiP-0yR8IDRzse5k7X0/edit#gid=1902016160",
"cachedResultName": "Interview Agents"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1dXLpP5bRRirBsln4YIQtFgb1MiP-0yR8IDRzse5k7X0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1dXLpP5bRRirBsln4YIQtFgb1MiP-0yR8IDRzse5k7X0/edit?usp=drivesdk",
"cachedResultName": "BeyondPresence HR Interview System Template"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "9cb69f68-b270-48a1-ab3b-cd98c2b46c5c",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
16,
-624
],
"parameters": {
"width": 352,
"height": 80,
"content": "# SETUP FLOW ->"
},
"typeVersion": 1
},
{
"id": "45fec6c9-05cc-49da-a671-5f4c28a9111f",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
16
],
"parameters": {
"width": 384,
"height": 80,
"content": "# INTERVIEW FLOW ->"
},
"typeVersion": 1
},
{
"id": "8e114800-ff7d-46ce-8a5a-960afb8aaa9b",
"name": "Prepare Interview Agent",
"type": "n8n-nodes-base.set",
"position": [
960,
-432
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "7865fb06-18cf-4a2e-93a7-45e86c7ccada",
"name": "avatarId",
"type": "string",
"value": "b5bebaf9-ae80-4e43-b97f-4506136ed926"
},
{
"id": "b1dce28c-eea1-42bb-9d51-39462d7cea1a",
"name": "agentName",
"type": "string",
"value": "=HR Interview Bot "
},
{
"id": "46f927ce-40b6-4121-b956-e8ee9b0481b1",
"name": "welcomeMessage",
"type": "string",
"value": "Hello! Welcome to our interview. I'm excited to learn about your background and discuss this opportunity with you. Let's start with you telling me a bit about yourself and what interests you about this position."
},
{
"id": "b5fcf2ac-705d-49c9-84c9-287b20e8b4cb",
"name": "systemPrompt",
"type": "string",
"value": "=You are a professional HR interviewer conducting job interviews. Your goal is to assess candidates thoroughly while making them feel comfortable and valued. Job Description: {{ $json.jobDescription }} Interview Approach: - Start with a warm welcome and brief introduction - Ask about their interest in the role and company - Explore their relevant experience with specific examples - Assess technical skills and cultural fit - Allow time for their questions - Close professionally with next steps Be conversational, ask follow-up questions, and show genuine interest in their responses. If they seem nervous, help them feel at ease. Always maintain a professional yet friendly tone."
},
{
"id": "715849ae-8722-40c3-a093-bcc54699e483",
"name": "jobDescription",
"type": "string",
"value": "={{$input.first().json.jobDescription}}"
}
]
}
},
"typeVersion": 3.4
}
],
"active": true,
"settings": {
"executionOrder": "v1"
},
"versionId": "feca0e3c-624b-468e-be54-173540e5b83c",
"connections": {
"Get agent info": {
"main": [
[
{
"node": "Handle webhook event",
"type": "main",
"index": 0
}
]
]
},
"Save Agent Info": {
"main": [
[
{
"node": "Save to Google Sheets1",
"type": "main",
"index": 0
}
]
]
},
"Analyze Interview": {
"main": [
[
{
"node": "Format for Sheets",
"type": "main",
"index": 0
}
]
]
},
"Format for Sheets": {
"main": [
[
{
"node": "Save to Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"Handle webhook event": {
"main": [
[
{
"node": "Analyze Interview",
"type": "main",
"index": 0
}
]
]
},
"Create Interview Agent": {
"main": [
[
{
"node": "Save Agent Info",
"type": "main",
"index": 0
}
]
]
},
"Receive Interview Data": {
"main": [
[
{
"node": "Get agent info",
"type": "main",
"index": 0
}
]
]
},
"Prepare Interview Agent": {
"main": [
[
{
"node": "Create Interview Agent",
"type": "main",
"index": 0
}
]
]
},
"\ud83d\udcdd Your Job Description": {
"main": [
[
{
"node": "Prepare Interview Agent",
"type": "main",
"index": 0
}
]
]
},
"\u25b6\ufe0f Click to Start Setup": {
"main": [
[
{
"node": "\ud83d\udcdd Your Job Description",
"type": "main",
"index": 0
}
]
]
}
}
}
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.
beyondPresenceApigoogleSheetsOAuth2ApiopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Manual candidate screening is time-consuming and inconsistent. This workflow automates initial interviews, providing 24/7 availability, consistent questioning, and objective assessments for every candidate. HR teams handling high-volume recruiting Small businesses without…
Source: https://n8n.io/workflows/4514/ — 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.
Ask questions like “How much did I spend on food last month?” and get instant answers from your financial data — directly in Telegram.
The Problem That it Solves
This intelligent email automation workflow helps you maximize engagement through domain-based outreach. It utilizes AI-powered personalization and strategic follow-ups to increase response rates. The
Note: Now includes an Apify alternative for Rapid API (Some users can't create new accounts on Rapid API, so I have added an alternative for you. But immediately you are able to get access to Rapid AP
Scrape ads – Pulls Facebook Ad Library data for "ai automation" keywords using Apify Filter & sort – Filters ads by page likes (>1,000) and separates into videos, images, and text ads Analyze creat