This workflow corresponds to n8n.io template #7605 — we link there as the canonical source.
This workflow follows the Agent → Form Trigger 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 →
{
"meta": {
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "f219ec62-6397-4c00-81c9-50fb88bb54d8",
"name": "Sticky Note29",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2016,
7328
],
"parameters": {
"width": 400,
"height": 1040,
"content": "## \u2699\ufe0f Setup Instructions\n\n### 1\ufe0f\u20e3 Set Up OpenAI Connection\n1. Go to [OpenAI Platform](https://platform.openai.com/api-keys) \n2. Navigate to [OpenAI Billing](https://platform.openai.com/settings/organization/billing/overview) \n3. Add funds to your billing account \n4. Copy your API key into the **OpenAI credentials** in n8n \n\n### 2\ufe0f\u20e3 gotoHuman \u2014 Install, Configure, and Map\n1. **Install the node (if needed)** \n - n8n \u2192 **Settings \u2192 Community Nodes \u2192 Install** \n - Package: `@gotohuman/n8n-nodes-gotohuman`\n2. **Create a gotoHuman account & API key** \n - Save your API key in n8n Credentials as **gotoHuman API**.\n3. **Create a Review Template in gotoHuman** \n - Include fields for **Resume (text)**, **Summary (text)**, and **Rating (number)**. \n - Copy the **Template ID** (e.g., `SLFm3wk8I1kGuEmRbmIr`).\n4. **Configure the node (`Send review request and wait for response`)** \n - **Credential:** your gotoHuman API credential \n - **Review Template ID:** paste your template ID \n - **Fields \u2192 Mapping (Define Below):** \n - `Resume` \u2192 `{{$('Extract from File').item.json.text}}` \n - `Summary` \u2192 `{{$json.output.summary}}` \n - `Rating` \u2192 `{{$json.output.score}}` \n - **Schema** should contain:\n - `Resume (string)`, `Summary (string)`, `Rating (number)` \n - This node **waits** until a human completes the review, then resumes the workflow with the reviewed payload.\n\n---\n\n## \ud83d\udcec Contact Information\nNeed help customizing this workflow or building similar automations?\n\n\ud83d\udce7 [robert@ynteractive.com](mailto:robert@ynteractive.com) \n\ud83d\udd17 [Robert Breen](https://www.linkedin.com/in/robert-breen-29429625/) \n\ud83c\udf10 [ynteractive.com](https://ynteractive.com)\n"
},
"typeVersion": 1
},
{
"id": "8465c2d8-5b6b-45f2-89be-ccbe2de1836b",
"name": "Sticky Note30",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1568,
7328
],
"parameters": {
"color": 7,
"width": 1104,
"height": 1040,
"content": "# \ud83e\uddd1\u200d\u2696\ufe0f Resume Reviewer with Human-in-the-Loop (n8n + OpenAI + gotoHuman)\n\nUpload a **PDF resume** via an n8n Form. The workflow extracts text, compares it to a preloaded **Job Description**, generates a **match score (0\u2013100)** and **summary**, then sends everything to **gotoHuman** for **human review/approval** before continuing.\n"
},
"typeVersion": 1
},
{
"id": "859df55b-f278-4808-bd71-317979f52757",
"name": "Structured Output Parser7",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
-752,
8096
],
"parameters": {
"jsonSchemaExample": "{\n\t\"summary\": \"summary\", \n \"score\": 50\n}"
},
"typeVersion": 1.3
},
{
"id": "6b3475d6-3cc2-4ad2-9e02-c96182e851d2",
"name": "OpenAI Chat Model9",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-1088,
8096
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "17bb899c-521f-44cf-86d7-16b480a86ad9",
"name": "Sticky Note31",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1184,
7920
],
"parameters": {
"color": 3,
"width": 288,
"height": 304,
"content": "### 1\ufe0f\u20e3 Set Up OpenAI Connection\n1. Go to [OpenAI Platform](https://platform.openai.com/api-keys) \n2. Navigate to [OpenAI Billing](https://platform.openai.com/settings/organization/billing/overview) \n3. Add funds to your billing account \n4. Copy your API key into the **OpenAI credentials** in n8n "
},
"typeVersion": 1
},
{
"id": "e9722877-b1f4-4bd1-ba22-1900f3df04b7",
"name": "Set Job Description",
"type": "n8n-nodes-base.set",
"position": [
-1472,
8112
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "86221d8e-18d1-4a37-9ffe-b31db3a3441d",
"name": "Job Description",
"type": "string",
"value": "n8n Specialist \u2014 Job Description Role Summary We\u2019re looking for an n8n Specialist to design, build, and maintain automation workflows and AI-driven agents that integrate across our stack (Google Workspace, Microsoft 365/Outlook, Slack, HubSpot/Pipedrive, Apify, Twilio, Google Sheets/BigQuery, Supabase/Postgres, etc.). You\u2019ll translate business processes into reliable, scalable n8n workflows\u2014owning the full lifecycle from discovery and design to implementation, testing, monitoring, and documentation. Responsibilities Workflow Design & Delivery Map business processes into modular n8n workflows, subflows, and reusable nodes. Build robust integrations with REST/GraphQL APIs, webhooks, OAuth2, and queues. Implement error handling, retries, rate-limit strategies, and idempotency. AI & Agents Orchestrate OpenAI/Gemini calls, prompt templates, tools, memory, and RAG patterns. Govern costs, latency, and quality; add guardrails and fallback paths. Data & Integrations Connect to data sources (Google Sheets, SQL, Postgres, BigQuery, Supabase). Normalize/transform data (JSON, CSV, XML); ensure schema/version control. Reliability & Ops Set up logging/monitoring/alerting (e.g., n8n telemetry, Sentry, Datadog). Package and deploy (Docker/Self-host/Cloud); manage environment variables/credentials. Write clear docs, runbooks, and handoff guides. Collaboration Partner with stakeholders to define requirements, SLAs, and success metrics. Provide enablement and light training to non-technical users. Required Qualifications 2\u20135+ years building automations with n8n (self-hosted and/or cloud). Strong API skills: REST, OAuth2, webhooks, pagination, auth patterns. Practical experience integrating tools like Google Workspace, Microsoft 365/Outlook, Slack, CRMs, Apify, Twilio, Stripe, etc. Comfortable with JavaScript/TypeScript (for Code nodes) and basic Python/SQL. Solid grasp of error handling, retries, state management, and rate limits. Version control with Git; familiarity with Docker and CI/CD. Security-first mindset: secrets management, least privilege, PII handling. Nice-to-Have RAG stacks (e.g., Supabase/Postgres, file stores, embeddings). Cloud exposure (GCP/AWS/Azure), queues (Pub/Sub, SQS), and caching. BI/reporting familiarity (Looker Studio, Power BI, Tableau) to validate outputs. Experience building internal libraries/templates for n8n nodes. Monitoring/observability (Prometheus/Grafana, Datadog). Success Metrics (KPIs) Workflow reliability (success rate, MTTR). Lead-time from spec \u2192 deployed automation. Reduction in manual effort/cycle time for target processes. Cost and latency of AI calls; unit test coverage on critical flows. Stakeholder satisfaction and adoption. Interview Process Intro Call (culture, role fit) Technical Deep Dive (n8n design patterns, API auth, debugging) Practical Exercise (build/extend a small n8n workflow; handle errors) Final (stakeholder walkthrough, architecture discussion) Employment Details Location: Remote (ET preferred) Type: Full-time (Contract-to-hire considered) Compensation: Competitive; based on experience Benefits: Health, 401(k), PTO, remote stipend (varies by region)"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "79464f83-0f0c-4a22-bc55-b910cef5cccc",
"name": "Review Resume",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-1152,
7648
],
"parameters": {
"text": "=Job Description: {{ $json['Job Description'] }} Resume: {{ $('Extract from File').item.json.text }}",
"options": {
"systemMessage": "compare the resume against the job description and give a value between 0 and 100 for how well it matches up with the job description. Also output a summary of the resume with the points that most closely match the description. Should be one paragraph and bullet points. \n\noutput like this.. \n\n{\n\t\"summary\": \"summary\", \n \"score\": 50\n}"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.2
},
{
"id": "5f3df688-952f-4e56-b039-c5dc2ba63cea",
"name": "Extract from File",
"type": "n8n-nodes-base.extractFromFile",
"position": [
-1472,
7856
],
"parameters": {
"options": {},
"operation": "pdf",
"binaryPropertyName": "Resume"
},
"typeVersion": 1
},
{
"id": "1801b535-fed0-46d4-87e4-e9ad4acdbd7f",
"name": "Sticky Note32",
"type": "n8n-nodes-base.stickyNote",
"position": [
-816,
7584
],
"parameters": {
"color": 3,
"width": 288,
"height": 272,
"content": "### 2\ufe0f\u20e3 gotoHuman \u2014 Install, Configure, and Map"
},
"typeVersion": 1
},
{
"id": "315b6245-9075-431f-86c0-d7f4fac259b1",
"name": "Send to GoToHuman",
"type": "@gotohuman/n8n-nodes-gotohuman.gotoHuman",
"position": [
-720,
7680
],
"parameters": {
"fields": {
"value": {
"Rating": "={{ $json.output.score }}",
"Resume": "={{ $('Extract from File').item.json.text }}",
"Summary": "={{ $json.output.summary }}"
},
"schema": [
{
"id": "Resume",
"type": "string",
"display": true,
"required": false,
"displayName": "Resume (text)",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Summary",
"type": "string",
"display": true,
"required": false,
"displayName": "Summary (text)",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Rating",
"type": "number",
"display": true,
"required": false,
"displayName": "Rating (number)",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"additionalFields": {},
"reviewTemplateID": {
"__rl": true,
"mode": "list",
"value": "SLFm3wk8I1kGuEmRbmIr",
"cachedResultName": "My Review Step (SLFm3wk8I1kGuEmRbmIr)"
}
},
"credentials": {
"gotoHumanApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "379cf4a0-45d9-4ca7-8178-a13332c5be25",
"name": "Resume Submission",
"type": "n8n-nodes-base.formTrigger",
"position": [
-1488,
7616
],
"parameters": {
"options": {},
"formTitle": "Resume - PDF Only",
"formFields": {
"values": [
{
"fieldType": "file",
"fieldLabel": "Resume",
"acceptFileTypes": ".pdf"
}
]
}
},
"typeVersion": 2.2
}
],
"connections": {
"Review Resume": {
"main": [
[
{
"node": "Send to GoToHuman",
"type": "main",
"index": 0
}
]
]
},
"Extract from File": {
"main": [
[
{
"node": "Set Job Description",
"type": "main",
"index": 0
}
]
]
},
"Resume Submission": {
"main": [
[
{
"node": "Extract from File",
"type": "main",
"index": 0
}
]
]
},
"Send to GoToHuman": {
"main": [
[]
]
},
"OpenAI Chat Model9": {
"ai_languageModel": [
[
{
"node": "Review Resume",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Set Job Description": {
"main": [
[
{
"node": "Review Resume",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser7": {
"ai_outputParser": [
[
{
"node": "Review Resume",
"type": "ai_outputParser",
"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.
gotoHumanApiopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow reviews resumes against a job description using OpenAI for automated scoring and gotoHuman for human validation before continuing. Go to OpenAI Platform Navigate to OpenAI Billing Add funds to your billing account Copy your API key into the OpenAI credentials in…
Source: https://n8n.io/workflows/7605/ — 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.
🎯 Create viral TikToks, Shorts, Reels, podcasts, and ASMR videos in minutes — all on autopilot.
This workflow serves as a comprehensive "Workflow Nodes SEO & Documentation Generator". It uses AI to analyze, rename, and document n8n workflows, offering a streamlined way to optimize workflow reada
PixelSensei(ZH). Uses agent, outputParserStructured, formTrigger, lmChatOpenAi. Event-driven trigger; 55 nodes.
🧠 Automate end-to-end SEO blog creation and WordPress publishing using a GPT-5 multi-agent workflow with real-time research, metadata generation, and optional featured images.
This is an automated blog post generation system that: Researches topics using AI agents and web search tools Writes complete blog posts with proper SEO structure Generates custom images for each post