デモ - テンプレート共有 - 職務記述書から候補者候補リストの構築
上級
これはMiscellaneous, AI Summarization, Multimodal AI分野の自動化ワークフローで、40個のノードを含みます。主にSet, Limit, Switch, Airtable, SplitOutなどのノードを使用。 AI採用ワークフロー:ApolloとAirtableを使用して職務から候補者候補リストを作成
前提条件
- •Airtable API Key
- •ターゲットAPIの認証情報が必要な場合あり
- •OpenAI API Key
- •Anthropic API Key
使用ノード (40)
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"id": "wXaLPxOXY9W7u3s5",
"meta": {
"instanceId": "0159916c04d508cd950e3baa00a9370011011fbb66518ddb067482b4608c554f",
"templateCredsSetupCompleted": true
},
"name": "DEMO - TEMPLATE TO SHARE - Build Candidate Shortlist from Job Description",
"tags": [
{
"id": "Y8jwMvLESMhmi72N",
"name": "DEMO",
"createdAt": "2025-05-01T07:54:32.551Z",
"updatedAt": "2025-05-01T07:54:32.551Z"
}
],
"nodes": [
{
"id": "969da01e-2879-4ce1-8cfa-301071ec9950",
"name": "フォーム送信時",
"type": "n8n-nodes-base.formTrigger",
"position": [
-384,
0
],
"webhookId": "7de1e740-aad1-45f6-8215-f8679930fbff",
"parameters": {
"options": {},
"formTitle": "Job Input",
"formFields": {
"values": [
{
"fieldLabel": "Job Title",
"requiredField": true
},
{
"fieldLabel": "Job Description",
"requiredField": true
},
{
"fieldLabel": "Location",
"requiredField": true
},
{
"fieldType": "textarea",
"fieldLabel": "Target Companies",
"placeholder": "Comma separated domains of target companies to source talent from"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "4a5133d1-5fe7-442a-adc5-d7768ea67da0",
"name": "フィールド編集",
"type": "n8n-nodes-base.set",
"position": [
1632,
0
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "2ebc52f4-1cb1-4b75-b58e-4259646ac1c9",
"name": "LinkedIn_profile",
"type": "string",
"value": "={{ Object.entries($json).map(([key, value]) => `${key}:${value}`).join(', ') }}"
},
{
"id": "dfb6ce70-c157-4bef-8dd4-4282acaa0dcb",
"name": "employment_history",
"type": "string",
"value": "={{ \n $json.employment_history.map(item => \n (item.title || \"Information not available\") + \", \" + \n (item.organization_name || \"Information not available\") + \", \" + \n (item.start_date || \"Information not available\") + \", \" + \n (item.current ? \"Current Role: Yes\" : (item.end_date || \"Information not available\") + \", Current Role: No\")\n ).join(\", \")\n}}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "dc324e00-8cff-4211-b0bb-c507cf3e2815",
"name": "自動修正出力パーサー",
"type": "@n8n/n8n-nodes-langchain.outputParserAutofixing",
"position": [
1088,
400
],
"parameters": {
"options": {
"prompt": "Instructions:\n--------------\n{instructions}\n--------------\nCompletion:\n--------------\n{completion}\n--------------\n\nAbove, the Completion did not satisfy the constraints given in the Instructions.\nError:\n--------------\n{error}\n--------------\n\nPlease try again. Please only respond with an answer that satisfies the constraints laid out in the Instructions:"
}
},
"typeVersion": 1
},
{
"id": "44a619cc-dd31-4d5f-b92f-de9698d8bf5d",
"name": "OpenAI Chat Model1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
1072,
560
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "VN9Tey257wj5pSUX",
"name": "Resource Hub Agent"
}
},
"typeVersion": 1.2
},
{
"id": "b13f8c75-28f2-4354-8d70-bf0fa6c0337b",
"name": "構造化出力パーサー",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1184,
560
],
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"candidate_name\": {\n \"type\": \"string\",\n \"description\": \"The full name of the candidate from the LinkedIn profile.\"\n },\n \"candidate_linkedinUrl\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"The LinkedIn profile URL of the candidate.\"\n },\n \"job_title_target\": {\n \"type\": \"string\",\n \"description\": \"The role title extracted from the job description.\"\n },\n \"experience_fit_reason\": {\n \"type\": \"string\",\n \"description\": \"Short factual reasoning (≤ 40 words) on how the candidate's experience fits the role requirements.\"\n },\n \"industry_fit_reason\": {\n \"type\": \"string\",\n \"description\": \"Short factual reasoning (≤ 40 words) on how the candidate's past industries align with the target industry.\"\n },\n \"seniority_fit_reason\": {\n \"type\": \"string\",\n \"description\": \"Short factual reasoning (≤ 40 words) on whether the candidate's seniority matches the role's level.\"\n },\n \"general_fit_reason\": {\n \"type\": \"string\",\n \"description\": \"Short overall assessment (≤ 40 words) summarizing the candidate's general fit.\"\n },\n \"general_fit_score\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 5,\n \"description\": \"General fit score: 5 = perfect fit, 4 = strong fit, 3 = moderate fit, 2 = weak fit, 1 = very weak fit, 0 = no fit.\"\n }\n },\n \"required\": [\n \"candidate_name\",\n \"candidate_linkedinUrl\",\n \"job_title_target\",\n \"experience_fit_reason\",\n \"industry_fit_reason\",\n \"seniority_fit_reason\",\n \"general_fit_reason\",\n \"general_fit_score\"\n ],\n \"additionalProperties\": false\n}"
},
"typeVersion": 1.2
},
{
"id": "a0bfc042-3318-4532-b017-11c8a0c29a04",
"name": "スイッチ",
"type": "n8n-nodes-base.switch",
"position": [
1328,
224
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "Score 4-5",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "963fcbc8-28dd-4a9d-b6bd-b41c3c691005",
"operator": {
"type": "number",
"operation": "gte"
},
"leftValue": "={{ $json.output.general_fit_score }}",
"rightValue": 4
}
]
},
"renameOutput": true
}
]
},
"options": {
"fallbackOutput": "extra"
}
},
"typeVersion": 3.2
},
{
"id": "07044fd4-a20f-4156-876a-59769fc7265e",
"name": "フィールド編集1",
"type": "n8n-nodes-base.set",
"position": [
1584,
224
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "2bbc9e9b-9aba-4e7a-b6d8-386c4a9484ed",
"name": "Name",
"type": "string",
"value": "={{ $json.output.candidate_name }}"
},
{
"id": "371f7da1-6d6a-4618-b04e-423db8024728",
"name": "LinkedIn",
"type": "string",
"value": "={{ $json.output.candidate_linkedinUrl }}"
},
{
"id": "e91b50b2-dcd6-4282-ac4e-90c1034d654a",
"name": "Title",
"type": "string",
"value": "={{ $json.output.job_title_target }}"
},
{
"id": "6e4abdd7-4e14-4640-9666-646227029d75",
"name": "Experience Fit",
"type": "string",
"value": "={{ $json.output.experience_fit_reason }}"
},
{
"id": "e22b3285-3ab5-4134-b833-9055ee43b06c",
"name": "Industry Fit",
"type": "string",
"value": "={{ $json.output.industry_fit_reason }}"
},
{
"id": "70c74e59-8612-41de-9275-e79f513e0df6",
"name": "Seniority Fit",
"type": "string",
"value": "={{ $json.output.seniority_fit_reason }}"
},
{
"id": "fb11ff0f-60c1-4b63-8db3-dae5269fea64",
"name": "General Fit",
"type": "string",
"value": "={{ $json.output.general_fit_reason }}"
},
{
"id": "0cf1345c-aae8-48d8-9e2d-0b9f8d74b438",
"name": "Score",
"type": "string",
"value": "={{ $json.output.general_fit_score }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "0210a953-a2a9-413e-8aaa-088b18ae65dd",
"name": "LinkedIn Profile Enrichment",
"type": "n8n-nodes-base.httpRequest",
"position": [
2032,
224
],
"parameters": {
"url": "https://real-time-data-enrichment.p.rapidapi.com/get-profile-data-by-url",
"options": {
"batching": {
"batch": {
"batchSize": 1,
"batchInterval": 4000
}
}
},
"sendQuery": true,
"sendHeaders": true,
"queryParameters": {
"parameters": [
{
"name": "url",
"value": "={{ $json.LinkedIn }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "x-rapidapi-host",
"value": "real-time-data-enrichment.p.rapidapi.com"
},
{
"name": "x-rapidapi-key",
"value": "<YOUR-API-KEY>"
}
]
}
},
"retryOnFail": false,
"typeVersion": 4.2,
"waitBetweenTries": 5000
},
{
"id": "b7cda9cc-7d41-43e6-a35b-2fb04e1d2d2c",
"name": "OpenAI Chat Model2",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
2208,
432
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini",
"cachedResultName": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "VN9Tey257wj5pSUX",
"name": "Resource Hub Agent"
}
},
"typeVersion": 1.2
},
{
"id": "ba1a5442-8bf3-4b69-a9d8-32f484b71659",
"name": "自動修正出力パーサー1",
"type": "@n8n/n8n-nodes-langchain.outputParserAutofixing",
"position": [
2320,
432
],
"parameters": {
"options": {
"prompt": "Instructions:\n--------------\n{instructions}\n--------------\nCompletion:\n--------------\n{completion}\n--------------\n\nAbove, the Completion did not satisfy the constraints given in the Instructions.\nError:\n--------------\n{error}\n--------------\n\nPlease try again. Please only respond with an answer that satisfies the constraints laid out in the Instructions:"
}
},
"typeVersion": 1
},
{
"id": "cbd1b94c-e226-43fb-9038-ddfb50b3f95c",
"name": "OpenAI Chat Model3",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
2320,
624
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "VN9Tey257wj5pSUX",
"name": "Resource Hub Agent"
}
},
"typeVersion": 1.2
},
{
"id": "e5f163d5-f202-425b-912e-19b57f53cb0b",
"name": "構造化出力パーサー1",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
2464,
624
],
"parameters": {
"jsonSchemaExample": "{\n \"summary_fit_score\": \"High\",\n \"executive_summary\": \"John Doe shows a strong match for the Senior Account Executive role, bringing 5+ years of SaaS sales experience with consistent overperformance in quota-carrying roles.\",\n \"title_alignment\": {\n \"fit_rating\": \"High\",\n \"reasoning\": \"Currently a Senior AE at a leading SaaS company; prior experience as AE and BDR.\"\n },\n \"skill_alignment\": {\n \"core_skills\": \"Solid experience with outbound sales, CRM management, quota attainment.\",\n \"nice_to_have_skills\": \"Some exposure to HubSpot, but limited experience with multi-channel outbound sequences.\",\n \"reasoning\": \"Demonstrated sales process ownership and closing capabilities across multiple roles.\"\n },\n \"experience_alignment\": {\n \"industry_experience\": \"Primarily SaaS startups, ideal for client context.\",\n \"seniority_experience\": \"Progressed from BDR to AE to Senior AE within 5 years.\",\n \"company_types\": \"Worked in 50-200 FTE SaaS companies, matches client's growth stage.\",\n \"reasoning\": \"Career progression and company types align closely with client needs.\"\n },\n \"education_alignment\": {\n \"fit_rating\": \"Medium\",\n \"reasoning\": \"Bachelor's degree in Business; no advanced degree but not required.\"\n },\n \"cultural_fit_indicators\": {\n \"likely_fit\": \"Yes\",\n \"reasoning\": \"Profile indicates resilience, high energy, and interest in fast-paced environments.\"\n },\n \"potential_red_flags\": [],\n \"additional_positive_signals\": [\n \"President's Club winner 2022, LinkedIn recommendations from former managers.\"\n ],\n \"final_recommendation\": {\n \"recommendation\": \"Strong Yes\",\n \"next_steps_suggested\": \"Recommend client schedule a first-round interview.\"\n }\n}"
},
"typeVersion": 1.2
},
{
"id": "d3b3ac81-05b7-43da-8fb0-9adce71dd23f",
"name": "Anthropic Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
"position": [
2624,
432
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "claude-3-7-sonnet-20250219",
"cachedResultName": "Claude 3.7 Sonnet"
},
"options": {}
},
"credentials": {
"anthropicApi": {
"id": "0yBOie05CA6IsSGQ",
"name": "Anthropic Key"
}
},
"typeVersion": 1.3
},
{
"id": "3ad0031f-6d11-4f30-9091-9d4baa4534c6",
"name": "自動修正出力パーサー2",
"type": "@n8n/n8n-nodes-langchain.outputParserAutofixing",
"position": [
2752,
432
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "1da9e1e4-c00a-42b9-ae90-3839a377bf60",
"name": "OpenAI Chat Model4",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
2720,
624
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "VN9Tey257wj5pSUX",
"name": "Resource Hub Agent"
}
},
"typeVersion": 1.2
},
{
"id": "8568fb71-172a-4289-bcde-c45328e88dde",
"name": "構造化出力パーサー2",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
2848,
624
],
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n\"Email_Subject\": \"...\",\n\"Email_Body\": \"...\",\n\"LinkedIn_DM\": \"...\"\n}"
},
"typeVersion": 1.2
},
{
"id": "b484f8dc-cdb8-4677-9bc1-32c3b6445518",
"name": "AirTableに候補者を作成",
"type": "n8n-nodes-base.airtable",
"position": [
3024,
224
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appe7RcePt0Nv0Oar",
"cachedResultUrl": "https://airtable.com/appe7RcePt0Nv0Oar",
"cachedResultName": "Candidate Search - From Job Description"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblg5upaJXNvBVCcK",
"cachedResultUrl": "https://airtable.com/appe7RcePt0Nv0Oar/tblg5upaJXNvBVCcK",
"cachedResultName": "Candidates"
},
"columns": {
"value": {
"Name": "={{ $('LinkedIn Profile Enrichment').item.json.firstName }} {{ $('LinkedIn Profile Enrichment').item.json.lastName }}",
"Location": "={{ $('LinkedIn Profile Enrichment').item.json.geo.full }}",
"Image URL": "={{ $('LinkedIn Profile Enrichment').item.json.profilePicture }}",
"Job Title": "={{ $('LinkedIn Profile Enrichment').item.json.position[0].title }}",
"Email Body": "={{ $json.output.Email_Body }}",
"Job Searches": "={{ [ $('Add Job to AirTable').first().json.id ] }}",
"LinkedIn URL": "={{ $('Edit Fields1').item.json.LinkedIn }}",
"Email Subject": "={{ $json.output.Email_Subject }}",
"Skill Alignment": "={{ $('Create Candidate Assessment').item.json.output.skill_alignment.reasoning }}",
"Title Alignment": "={{ $('Create Candidate Assessment').item.json.output.title_alignment.reasoning }}",
"LinkedIn Message": "={{ $json.output.LinkedIn_DM }}",
"Positive Signals": "={{ $('Create Candidate Assessment').item.json.output.additional_positive_signals.join('\\n\\n') }}",
"Executive Summary": "={{ $('Create Candidate Assessment').item.json.output.executive_summary }}",
"Summary Fit Score": "={{ $('Create Candidate Assessment').item.json.output.summary_fit_score }}",
"Industry Alignment": "={{ $('Create Candidate Assessment').item.json.output.experience_alignment.industry_experience }}",
"Nice To Have Skills": "={{ $('Create Candidate Assessment').item.json.output.skill_alignment.nice_to_have_skills }}",
"Potential Red Flags": "={{ $('Create Candidate Assessment').item.json.output.potential_red_flags.join('\\n\\n') }}",
"Seniority Alignment": "={{ $('Create Candidate Assessment').item.json.output.experience_alignment.seniority_experience }}",
"Experience Alignment": "={{ $('Create Candidate Assessment').item.json.output.experience_alignment.reasoning }}",
"Final Recommendation": "={{ $('Create Candidate Assessment').item.json.output.final_recommendation.recommendation }}",
"Educational Alignment": "={{ $('Create Candidate Assessment').item.json.output.education_alignment.reasoning }}",
"Next Steps Suggestion": "={{ $('Create Candidate Assessment').item.json.output.final_recommendation.next_steps_suggested }}",
"Title Alignment Score": "={{ $('Create Candidate Assessment').item.json.output.title_alignment.fit_rating }}",
"Company Type Alignment": "={{ $('Create Candidate Assessment').item.json.output.experience_alignment.company_types }}",
"Educational Alignment Score": "={{ $('Create Candidate Assessment').item.json.output.education_alignment.fit_rating }}"
},
"schema": [
{
"id": "Name",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Job Title",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Job Title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Location",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Location",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "LinkedIn URL",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "LinkedIn URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Job Searches",
"type": "array",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Job Searches",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Job Title (from Job Searches)",
"type": "string",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "Job Title (from Job Searches)",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Job Description (from Job Searches)",
"type": "string",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "Job Description (from Job Searches)",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Job Location (from Job Searches)",
"type": "string",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "Job Location (from Job Searches)",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Summary Fit Score",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Summary Fit Score",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Executive Summary",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Executive Summary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Title Alignment Score",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Title Alignment Score",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Title Alignment",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Title Alignment",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Nice To Have Skills",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Nice To Have Skills",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Skill Alignment",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Skill Alignment",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Industry Alignment",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Industry Alignment",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Seniority Alignment",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Seniority Alignment",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Type Alignment",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Company Type Alignment",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Experience Alignment",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Experience Alignment",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Educational Alignment Score",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Educational Alignment Score",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Educational Alignment",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Educational Alignment",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Potential Red Flags",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Potential Red Flags",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Positive Signals",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Positive Signals",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Final Recommendation",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Final Recommendation",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Next Steps Suggestion",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Next Steps Suggestion",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email Subject",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Email Subject",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email Body",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Email Body",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "LinkedIn Message",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "LinkedIn Message",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Image URL",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Image URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Displayed Image",
"type": "array",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Displayed Image",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Profile Image",
"type": "array",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Profile Image",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "ID",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Core Skills",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Core Skills",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"id": "lVVmIfUpFyo5fIop",
"name": "AS - AirTable New"
}
},
"typeVersion": 2.1
},
{
"id": "0d40609c-7358-4974-b22d-525e0952e748",
"name": "AirTableに職務を追加",
"type": "n8n-nodes-base.airtable",
"position": [
48,
0
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appe7RcePt0Nv0Oar",
"cachedResultUrl": "https://airtable.com/appe7RcePt0Nv0Oar",
"cachedResultName": "Candidate Search - From Job Description"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblx9aVcTjU7nm0fW",
"cachedResultUrl": "https://airtable.com/appe7RcePt0Nv0Oar/tblx9aVcTjU7nm0fW",
"cachedResultName": "Job Searches"
},
"columns": {
"value": {
"Job Title": "={{ $json[\"Job Title\"] }}",
"Job Location": "={{ $json.Location }}",
"Job Description": "={{ $json[\"Job Description\"] }}"
},
"schema": [
{
"id": "Job Title",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Job Title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Job Description",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Job Description",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Job Location",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Job Location",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Candidates",
"type": "array",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Candidates",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Consultant",
"type": "array",
"display": true,
"options": [
{
"name": "Fred",
"value": "Fred"
},
{
"name": "Nik",
"value": "Nik"
},
{
"name": "Fabi",
"value": "Fabi"
}
],
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Consultant",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"id": "lVVmIfUpFyo5fIop",
"name": "AS - AirTable New"
}
},
"typeVersion": 2.1
},
{
"id": "36f9423a-cd41-49e0-aa29-0053be48e51c",
"name": "候補者評価を作成",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
2224,
224
],
"parameters": {
"text": "=LinkedIn Profile:\n\n{{JSON.stringify($json)}}\n\nNotes and Initial Assessment:\nExperience Fit: {{ $('Edit Fields1').item.json['Experience Fit'] }}\nIndustry Fit: {{ $('Edit Fields1').item.json['Industry Fit'] }}\nSeniroity Fit: {{ $('Edit Fields1').item.json['Seniority Fit'] }}\nGeneral Fit: {{ $('Edit Fields1').item.json['General Fit'] }}\n\nJob Title: {{ $('Set Fields').item.json['Job Title'] }}\nJob Description: {{ $('Set Fields').item.json['Job Description'] }}\n",
"messages": {
"messageValues": [
{
"message": "Instruction:\nYou are an expert agency recruiter.\nYou are evaluating a candidate for an open position on behalf of a client.\nYou are given:\n\na Job Title\n\na Job Description\n\na LinkedIn Profile of the candidate (full details: experiences, education, skills, etc.)\n\na Short Human-Written Assessment (summary/notes)\n\nYour task is to create a detailed fit assessment based on these inputs.\nYou must think like a recruiter whose goal is to provide a client with a clear, reasoned judgment on the candidate’s fit for the role.\n\n⚡ Important:\n\nAnalyze how well the candidate's experience, skills, seniority, industry background, and education match the role.\n\nEvaluate both hard skills and soft skills based on available information.\n\nIdentify gaps or red flags if any — don't sugarcoat.\n\nIf there are positive signals (e.g., promotions, relevant industries, certifications, KPIs achieved), highlight them.\n\n✅ The output must be structured as a JSON object with the following fields:\n\n{\n \"summary_fit_score\": \"High / Medium / Low\",\n \"executive_summary\": \"Short paragraph summarizing overall fit.\",\n \"title_alignment\": {\n \"fit_rating\": \"High / Medium / Low\",\n \"reasoning\": \"Explain how current and past titles align or don't align.\"\n },\n \"skill_alignment\": {\n \"core_skills\": \"Evaluate match on must-have skills.\",\n \"nice_to_have_skills\": \"Evaluate match on nice-to-have skills.\",\n \"reasoning\": \"Explain the skill fit with examples from the profile.\"\n },\n \"experience_alignment\": {\n \"industry_experience\": \"Does the candidate have relevant industry background?\",\n \"seniority_experience\": \"Is the candidate operating at the right seniority level?\",\n \"company_types\": \"Have they worked at similar types of companies (startup, enterprise, agency, etc.)?\",\n \"reasoning\": \"Break down how the experience history fits.\"\n },\n \"education_alignment\": {\n \"fit_rating\": \"High / Medium / Low\",\n \"reasoning\": \"Evaluate if the education matches client expectations.\"\n },\n \"cultural_fit_indicators\": {\n \"likely_fit\": \"Yes / No / Unknown\",\n \"reasoning\": \"Based on profile wording, background, working style indicators.\"\n },\n \"potential_red_flags\": [\n \"List any gaps, inconsistent history, short tenures, irrelevant background.\"\n ],\n \"additional_positive_signals\": [\n \"List promotions, awards, certifications, high-profile clients, other strong positives.\"\n ],\n \"final_recommendation\": {\n \"recommendation\": \"Strong Yes / Soft Yes / Neutral / Soft No / Strong No\",\n \"next_steps_suggested\": \"E.g., Recommend client interview; recommend technical screening; pass for now.\"\n }\n}\n\nKey Principles for Assessment:\nEvidence-Based: Always link reasoning to actual profile data (titles, descriptions, tenure, etc.).\n\nBalanced: Highlight both strengths and concerns — not just one side.\n\nClient-First Thinking: Frame the assessment in a way that answers:\n➔ \"Would my client be happy interviewing this person based on this profile?\"\n\nExample Output Preview:\n\n{\n \"summary_fit_score\": \"High\",\n \"executive_summary\": \"John Doe shows a strong match for the Senior Account Executive role, bringing 5+ years of SaaS sales experience with consistent overperformance in quota-carrying roles.\",\n \"title_alignment\": {\n \"fit_rating\": \"High\",\n \"reasoning\": \"Currently a Senior AE at a leading SaaS company; prior experience as AE and BDR.\"\n },\n \"skill_alignment\": {\n \"core_skills\": \"Solid experience with outbound sales, CRM management, quota attainment.\",\n \"nice_to_have_skills\": \"Some exposure to HubSpot, but limited experience with multi-channel outbound sequences.\",\n \"reasoning\": \"Demonstrated sales process ownership and closing capabilities across multiple roles.\"\n },\n \"experience_alignment\": {\n \"industry_experience\": \"Primarily SaaS startups, ideal for client context.\",\n \"seniority_experience\": \"Progressed from BDR to AE to Senior AE within 5 years.\",\n \"company_types\": \"Worked in 50-200 FTE SaaS companies, matches client's growth stage.\",\n \"reasoning\": \"Career progression and company types align closely with client needs.\"\n },\n \"education_alignment\": {\n \"fit_rating\": \"Medium\",\n \"reasoning\": \"Bachelor's degree in Business; no advanced degree but not required.\"\n },\n \"cultural_fit_indicators\": {\n \"likely_fit\": \"Yes\",\n \"reasoning\": \"Profile indicates resilience, high energy, and interest in fast-paced environments.\"\n },\n \"potential_red_flags\": [],\n \"additional_positive_signals\": [\n \"President's Club winner 2022, LinkedIn recommendations from former managers.\"\n ],\n \"final_recommendation\": {\n \"recommendation\": \"Strong Yes\",\n \"next_steps_suggested\": \"Recommend client schedule a first-round interview.\"\n }\n}\n\n"
}
]
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.6
},
{
"id": "d862618e-277a-4834-bfc0-d136e9f4d3e2",
"name": "リミット",
"type": "n8n-nodes-base.limit",
"position": [
1808,
224
],
"parameters": {
"maxItems": 50
},
"typeVersion": 1
},
{
"id": "be084c1b-b26c-44ce-83d2-36b30c3fbf1f",
"name": "リミット1",
"type": "n8n-nodes-base.limit",
"position": [
48,
224
],
"parameters": {
"maxItems": 50
},
"typeVersion": 1
},
{
"id": "0eafb581-632e-464e-8b1c-ebd0955adf2e",
"name": "付箋",
"type": "n8n-nodes-base.stickyNote",
"position": [
816,
-224
],
"parameters": {
"content": "## CRM Lookup\nAdditional lookup for candidates already in your CRM based on filter tags."
},
"typeVersion": 1
},
{
"id": "cad1b0ef-9e8f-4582-b046-c05b9726979e",
"name": "付箋1",
"type": "n8n-nodes-base.stickyNote",
"position": [
272,
-208
],
"parameters": {
"color": 5,
"content": "## Job Title Mutation \nGenerate 5 similar job titles based on the job description to enhance search radius"
},
"typeVersion": 1
},
{
"id": "c60d77f0-a047-4b50-82ab-ae2084cff794",
"name": "付箋2",
"type": "n8n-nodes-base.stickyNote",
"position": [
208,
368
],
"parameters": {
"color": 5,
"content": "## Scoring \nScore the candidate initially on a scale of 0-5 based on the job description and their Apollo profile."
},
"typeVersion": 1
},
{
"id": "07fefcc3-2f4c-4240-8d77-5a9e006c7567",
"name": "GPT-4.1-mini",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
464,
400
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini",
"cachedResultName": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "VN9Tey257wj5pSUX",
"name": "Resource Hub Agent"
}
},
"typeVersion": 1.2
},
{
"id": "7b35a4c2-6c83-4250-b154-1104d5a0c18a",
"name": "スコアリングと事前選考",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
480,
224
],
"parameters": {
"text": "=You are Job-Fit Reasoning Agent.\\nYour task: Given one LinkedIn profile (in JSON format) and one job description (in plain text), output a recruiter-ready fit analysis focused on clear reasoning and a general fit score.\\n\\nLinkedIn Profile to analyze: {{ $json.LinkedIn_profile }}\\nCandidates Employment History:\\n{{ $json.employment_history }}\\n\\nJob Description to Compare with: {{ $('Set Fields').item.json['Job Title'] }} - {{ $('Set Fields').item.json['Job Description'] }}\n\n\\n\\nYou must research the companies mentioned on the work experiences to understand their industry and product to better assess the industry fit based on the companies the candidate worked at. Make sure to gather as much information about their role and company as possible to assess their skills and expertise.\\n\\nYou must analyze and output both:\\n\\nclear reasoning for these four aspects:\\nexperience_fit_reason\\nindustry_fit_reason\\nseniority_fit_reason\\ngeneral_fit_reason\\n\\na general_fit_score (integer from 0 to 5) where:\\n5 = perfect fit,\\n4 = strong fit,\\n3 = moderate fit,\\n2 = weak fit,\\n1 = very weak fit,\\n0 = no fit\\n\\nINPUTS\\n\\nYou will receive:\\n\\ncandidate_profile\\njob_description\\n\\nOUTPUT FORMAT\\n\\nYou must return exactly one minified JSON object — no line breaks, no Markdown, no commentary.\\n\\nThe structure must be:\\n\\n\\\"candidate_name\\\": \\\"\\\",\\n\\n\\\"candidate_linkedinUrl\\\": \\\"\\\",\\n\\\"job_title_target\\\": \\\"\\\",\\n\\\"experience_fit_reason\\\": \\\"\\\",\\n\\\"industry_fit_reason\\\": \\\"\\\",\\n\\\"seniority_fit_reason\\\": \\\"\\\",\\n\\\"general_fit_reason\\\": \\\"\\\",\\n\\\"general_fit_score\\\": 0\\n\\nFormatting Rules:\\n\\nEach reason must be ≤ 40 words, concise and fact-based.\\ngeneral_fit_score must be an integer between 0 and 5.\\nIf any information is missing, mention it conservatively (\\\"Data missing\\\" or \\\"Information not available\\\").\\nMust output valid JSON immediately.\\n\\nCHAIN OF THOUGHTS TO FOLLOW\\n\\nUNDERSTAND the candidate profile and job description.\\nIDENTIFY key experiences, industries, and seniority levels.\\nCROSS-REFERENCE company industries using public information.\\nANALYZE fit for experience, industry, and seniority separately.\\nSUMMARIZE the overall fit in one general reasoning sentence.\\nDECIDE the general_fit_score based on the overall strength of the match.\\nOUTPUT the result following the exact JSON structure.\\n\\nWHAT NOT TO DO\\n\\nNEVER output numeric scores for individual aspects other than general_fit_score.\\nNEVER exceed 40 words per reason.\\nNEVER format in Markdown, tables, or non-JSON formats.\\nNEVER omit any of the six required fields.\\nNEVER guess information.\\nIf uncertain or data is missing, state it clearly.\\nNEVER write vague, generic, or non-factual reasons.",
"promptType": "define"
},
"typeVersion": 1.6
},
{
"id": "1e89a8d3-1092-4e9d-aef8-0ed4f12c5d47",
"name": "データ構造化",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"onError": "continueRegularOutput",
"position": [
928,
224
],
"parameters": {
"text": "=Format the input into the following JSON:\n\n{\n \"type\": \"object\",\n \"properties\": {\n \"candidate_name\": {\n \"type\": \"string\",\n \"description\": \"The full name of the candidate from the LinkedIn profile.\"\n },\n \"candidate_linkedinUrl\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"The LinkedIn profile URL of the candidate.\"\n },\n \"job_title_target\": {\n \"type\": \"string\",\n \"description\": \"The role title extracted from the job description.\"\n },\n \"experience_fit_reason\": {\n \"type\": \"string\",\n \"description\": \"Short factual reasoning (≤ 40 words) on how the candidate's experience fits the role requirements.\"\n },\n \"industry_fit_reason\": {\n \"type\": \"string\",\n \"description\": \"Short factual reasoning (≤ 40 words) on how the candidate's past industries align with the target industry.\"\n },\n \"seniority_fit_reason\": {\n \"type\": \"string\",\n \"description\": \"Short factual reasoning (≤ 40 words) on whether the candidate's seniority matches the role's level.\"\n },\n \"general_fit_reason\": {\n \"type\": \"string\",\n \"description\": \"Short overall assessment (≤ 40 words) summarizing the candidate's general fit.\"\n },\n \"general_fit_score\": {\n \"type\": \"integer\",\n \"minimum\": 0,\n \"maximum\": 5,\n \"description\": \"General fit score: 5 = perfect fit, 4 = strong fit, 3 = moderate fit, 2 = weak fit, 1 = very weak fit, 0 = no fit.\"\n }\n },\n \"required\": [\n \"candidate_name\",\n \"candidate_linkedinUrl\",\n \"job_title_target\",\n \"experience_fit_reason\",\n \"industry_fit_reason\",\n \"seniority_fit_reason\",\n \"general_fit_reason\",\n \"general_fit_score\"\n ],\n \"additionalProperties\": false\n}\n\n\nInput:\n{{ $json.text }}\n",
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.6
},
{
"id": "c72b963a-76c1-49be-8b8c-61cc9c3e66e3",
"name": "職種名称バリエーション生成",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
272,
0
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini",
"cachedResultName": "GPT-4.1-MINI"
},
"options": {},
"messages": {
"values": [
{
"content": "=Here is the Job Information:\n\nJob Title:\n{{ $('Set Fields').item.json[\"Job Title\"] }}\n\nJob Description:\n{{ $('Set Fields').item.json[\"Job Description\"] }}"
},
{
"role": "system",
"content": "=YOU ARE A WORLD-CLASS EXPERT IN JOB TITLE NORMALIZATION, SEARCH OPTIMIZATION, AND TALENT IDENTIFICATION. YOUR MISSION IS TO TRANSFORM A GIVEN JOB TITLE AND JOB DESCRIPTION INTO A CLEAN, STANDARDIZED TITLE AND GENERATE UP TO 5 VARIATIONS OF SIMILAR JOB TITLES TO MAXIMIZE MATCHING ACCURACY FOR AUTOMATED CANDIDATE SEARCHES.\n\n###INSTRUCTIONS###\n\n- YOU MUST READ AND UNDERSTAND the provided JOB TITLE and JOB DESCRIPTION.\n- YOU MUST CLEAN the original JOB TITLE by removing unnecessary words, overly specific terms, internal jargon, or formatting inconsistencies to produce a STANDARDIZED VERSION.\n- YOU MUST CREATE UP TO 5 VARIATIONS that represent ALTERNATIVE YET EQUIVALENT job titles commonly used in the industry for the same or very similar roles.\n- FOCUS on INDUSTRY-STANDARD TERMS, maintaining RELEVANCE and avoiding niche variations unless widely recognized.\n- PRIORITIZE broader and common titles that would yield HIGH SEARCH MATCHES while remaining ROLE-ACCURATE.\n- OUTPUT MUST BE JSON FORMAT AND EACH ITEM MUST BE A SEPARATED JOB TITLE.\n- INCLUDE the CLEANED TITLE as the first item, followed by the variations.\n\n###CHAIN OF THOUGHTS###\n\nFOLLOW these steps sequentially to ENSURE EXPERT OUTPUT:\n\n1. UNDERSTAND:\n 1.1. CAREFULLY READ the input JOB TITLE and JOB DESCRIPTION.\n 1.2. EXTRACT the core role, seniority, and function from the description.\n\n2. BASICS:\n 2.1. IDENTIFY KEY RESPONSIBILITIES, skills, and the focus of the role.\n 2.2. DETERMINE whether the role is technical, managerial, operational, etc.\n\n3. BREAK DOWN:\n 3.1. STRIP the job title down to its essential function (e.g., \"Marketing Ninja\" → \"Marketing Specialist\").\n 3.2. REMOVE internal lingo, quirky titles, redundant adjectives, and unusual capitalization.\n\n4. ANALYZE:\n 4.1. COMPARE the extracted role with industry standards and benchmark titles.\n 4.2. MAP the role to common synonyms or alternative phrasings used across companies.\n\n5. BUILD:\n 5.1. FORMULATE a CLEAN, INDUSTRY-STANDARD JOB TITLE.\n 5.2. CREATE UP TO 5 VARIATIONS reflecting similar common titles, adjusting for slight seniority shifts if necessary (e.g., \"Software Engineer\" → \"Backend Developer\").\n\n6. EDGE CASES:\n 6.1. IF the job title is already standard, CLEAN only if needed (e.g., remove extra descriptors).\n 6.2. IF the job title is highly specific, GENERALIZE it slightly without losing its essential meaning.\n\n7. FINAL ANSWER:\n 7.1. OUTPUT in the following JSON FORMAT:\n\n{\n\"jobtitle1\": \"...\",\n\"jobtitle2\": \"...\",\n\"jobtitle3\": \"...\",\n\"jobtitle4\": \"...\",\n\"jobtitle5\": \"...\"\n}"
}
]
},
"simplify": false,
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"id": "VN9Tey257wj5pSUX",
"name": "Resource Hub Agent"
}
},
"typeVersion": 1.8
},
{
"id": "1ab51082-aff7-4a69-af50-eb4de77acdbd",
"name": "GPT 4.1-mini",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
944,
400
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini",
"cachedResultName": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "VN9Tey257wj5pSUX",
"name": "Resource Hub Agent"
}
},
"typeVersion": 1.2
},
{
"id": "f6683bf5-59c5-4beb-8475-68b0a74bf46d",
"name": "付箋3",
"type": "n8n-nodes-base.stickyNote",
"position": [
688,
368
],
"parameters": {
"color": 5,
"content": "## Data Structuring \nFormat the whole profile into a structured candidate profile."
},
"typeVersion": 1
},
{
"id": "9f67e5a0-062e-4901-a711-fb2eb4bc07a2",
"name": "付箋4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1968,
32
],
"parameters": {
"color": 4,
"width": 300,
"content": "## Candidate Assessment \nCreate a detailed candidate to job matching assessment which looks at more data points and outputs a structured reasoning."
},
"typeVersion": 1
},
{
"id": "acf10533-a532-4b3d-aaf3-b0d1efd01522",
"name": "付箋5",
"type": "n8n-nodes-base.stickyNote",
"position": [
2576,
32
],
"parameters": {
"color": 4,
"width": 340,
"content": "## Outreach Message Creation \nUses the final assessment and the job description to write a fully personalized email and LinkedIn message to the candidate."
},
"typeVersion": 1
},
{
"id": "730a3948-0d6c-466d-a711-41ea4cf48006",
"name": "メッセージ生成",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
2640,
224
],
"parameters": {
"text": "=Name of the candidate: {{ $('LinkedIn Profile Enrichment').item.json.firstName }} {{ $('LinkedIn Profile Enrichment').item.json.lastName }}\n\nJob Description:\n{{ $('Set Fields').item.json['Job Title'] }} - {{ $('Set Fields').item.json['Job Description'] }}\n\n\nCandidate to Job Match Assessment:\n{{ JSON.stringify($('Create Candidate Assessment').item.json.output) }}",
"messages": {
"messageValues": [
{
"message": "=You are a recruiting assistant who is specalized in writing outreach emails to candidates who are great fits for a specific job role you are recruiting for. You are given a job description and a detailed assessment of why the candidate would be a fit to use as context for your message. You specifically write a LinkedIn Message and a cold email to the candidate that follows the below principles.\n\nCold email:\n- Less than 75 words\n- Make it 80% about them\n- Conversatinal tone and simple language\n- Prompt with a subtle non-salesy call to action\n- Use formatting with line breaks to make the email skimmable\n- Never start with \"I hope this email finds you well or similar\"\n\nLinkedIn Message:\n- Less than 60 words\n- Very conversational\n- Reference something from their profile why you're reaching out\n- Prompt with a subtle non-sales CTA or question\n\nBoth messages should have a consultative approach that positions you as a trusted career advisor. Use insights from the job description and why it is a match to build trust and rapport. \n\nYou will only return the finished email copy, a subject line and LinkedIn message as a JSON in the followin format:\n\n{\n\"Email_Subject\": \"...\",\n\"Email_Body\": \"...\",\n\"LinkedIn_DM\": \"...\"\n}"
}
]
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.6
},
{
"id": "804b0d8c-dbc6-432e-8e76-ba4ee3e2c478",
"name": "Apollo People Search1",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueRegularOutput",
"position": [
880,
0
],
"parameters": {
"url": "https://api.apollo.io/api/v1/mixed_people/search",
"method": "POST",
"options": {
"pagination": {
"pagination": {
"parameters": {
"parameters": [
{
"name": "page",
"value": "={{ $pageCount + 1 }}"
}
]
},
"maxRequests": 5,
"requestInterval": 1000,
"limitPagesFetched": true
}
}
},
"sendQuery": true,
"sendHeaders": true,
"queryParameters": {
"parameters": [
{
"name": "person_titles[]",
"value": "={{ $json['choices[0].message.content'] }}"
},
{
"name": "per_page",
"value": "10"
},
{
"name": "page",
"value": "1"
},
{
"name": "include_similar_titles",
"value": "false"
},
{
"name": "person_locations[]",
"value": "={{ $('Set Fields').item.json.Location }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Cache-Control",
"value": "no-cache"
},
{
"name": "accept",
"value": "application/json"
},
{
"name": "x-api-key",
"value": "<YOUR-API-KEY>"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "5569f4b8-8cec-4b5e-abe2-9961047c4edc",
"name": "分割出力1",
"type": "n8n-nodes-base.splitOut",
"position": [
624,
0
],
"parameters": {
"options": {},
"fieldToSplitOut": "choices[0].message.content"
},
"typeVersion": 1
},
{
"id": "22d3cac3-1a18-459b-ab3f-6e0a13cd5341",
"name": "分割出力2",
"type": "n8n-nodes-base.splitOut",
"position": [
1120,
0
],
"parameters": {
"options": {},
"fieldToSplitOut": "people"
},
"typeVersion": 1
},
{
"id": "f81ab349-0341-4ede-b8de-1c54db86862b",
"name": "重複削除",
"type": "n8n-nodes-base.removeDuplicates",
"position": [
1360,
0
],
"parameters": {
"compare": "selectedFields",
"options": {},
"fieldsToCompare": "id"
},
"typeVersion": 2
},
{
"id": "46abf579-2fd4-4f1a-934f-159b6686938e",
"name": "フィールド設定",
"type": "n8n-nodes-base.set",
"position": [
-160,
0
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "042c76b7-29ab-4bad-a652-73a1237a1a97",
"name": "Job Title",
"type": "string",
"value": "={{ $json[\"Job Title\"] }}"
},
{
"id": "65c69019-fa6b-442d-a15b-a2b7eaa58ad9",
"name": "Job Description",
"type": "string",
"value": "={{ $json[\"Job Description\"] }}"
},
{
"id": "d0c619d7-1801-467d-82ad-6ec972ca11fd",
"name": "Location",
"type": "string",
"value": "={{ $json.Location }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "619fc71c-5025-42a3-a609-d634347bede7",
"name": "付箋6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1888,
400
],
"parameters": {
"color": 5,
"height": 224,
"content": "## LI Enrichment\n\nUse your preferred API to get the fully enriched LinkedIn profile.\n\nCan check on Apify or RapidAPI for example."
},
"typeVersion": 1
},
{
"id": "9c6f3779-b7b4-4464-86b3-5fd664443cf7",
"name": "付箋7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-304,
-480
],
"parameters": {
"width": 464,
"height": 352,
"content": "## YouTube video about the workflow\n**Check out this video for a breakdown of the workflow:**\n\n@[youtube](ppbXEab8334)"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "7dc92dd1-cd91-4dd8-8c25-5e0b82e66701",
"connections": {
"d862618e-277a-4834-bfc0-d136e9f4d3e2": {
"main": [
[
{
"node": "0210a953-a2a9-413e-8aaa-088b18ae65dd",
"type": "main",
"index": 0
}
]
]
},
"be084c1b-b26c-44ce-83d2-36b30c3fbf1f": {
"main": [
[
{
"node": "7b35a4c2-6c83-4250-b154-1104d5a0c18a",
"type": "main",
"index": 0
}
]
]
},
"a0bfc042-3318-4532-b017-11c8a0c29a04": {
"main": [
[
{
"node": "07044fd4-a20f-4156-876a-59769fc7265e",
"type": "main",
"index": 0
}
],
[]
]
},
"46abf579-2fd4-4f1a-934f-159b6686938e": {
"main": [
[
{
"node": "0d40609c-7358-4974-b22d-525e0952e748",
"type": "main",
"index": 0
}
]
]
},
"5569f4b8-8cec-4b5e-abe2-9961047c4edc": {
"main": [
[
{
"node": "804b0d8c-dbc6-432e-8e76-ba4ee3e2c478",
"type": "main",
"index": 0
}
]
]
},
"22d3cac3-1a18-459b-ab3f-6e0a13cd5341": {
"main": [
[
{
"node": "f81ab349-0341-4ede-b8de-1c54db86862b",
"type": "main",
"index": 0
}
]
]
},
"4a5133d1-5fe7-442a-adc5-d7768ea67da0": {
"main": [
[
{
"node": "be084c1b-b26c-44ce-83d2-36b30c3fbf1f",
"type": "main",
"index": 0
}
]
]
},
"07044fd4-a20f-4156-876a-59769fc7265e": {
"main": [
[
{
"node": "d862618e-277a-4834-bfc0-d136e9f4d3e2",
"type": "main",
"index": 0
}
]
]
},
"1ab51082-aff7-4a69-af50-eb4de77acdbd": {
"ai_languageModel": [
[
{
"node": "1e89a8d3-1092-4e9d-aef8-0ed4f12c5d47",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"07fefcc3-2f4c-4240-8d77-5a9e006c7567": {
"ai_languageModel": [
[
{
"node": "7b35a4c2-6c83-4250-b154-1104d5a0c18a",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"1e89a8d3-1092-4e9d-aef8-0ed4f12c5d47": {
"main": [
[
{
"node": "a0bfc042-3318-4532-b017-11c8a0c29a04",
"type": "main",
"index": 0
}
]
]
},
"f81ab349-0341-4ede-b8de-1c54db86862b": {
"main": [
[
{
"node": "4a5133d1-5fe7-442a-adc5-d7768ea67da0",
"type": "main",
"index": 0
}
]
]
},
"730a3948-0d6c-466d-a711-41ea4cf48006": {
"main": [
[
{
"node": "b484f8dc-cdb8-4677-9bc1-32c3b6445518",
"type": "main",
"index": 0
}
]
]
},
"969da01e-2879-4ce1-8cfa-301071ec9950": {
"main": [
[
{
"node": "46abf579-2fd4-4f1a-934f-159b6686938e",
"type": "main",
"index": 0
}
]
]
},
"44a619cc-dd31-4d5f-b92f-de9698d8bf5d": {
"ai_languageModel": [
[
{
"node": "dc324e00-8cff-4211-b0bb-c507cf3e2815",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"b7cda9cc-7d41-43e6-a35b-2fb04e1d2d2c": {
"ai_languageModel": [
[
{
"node": "36f9423a-cd41-49e0-aa29-0053be48e51c",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"cbd1b94c-e226-43fb-9038-ddfb50b3f95c": {
"ai_languageModel": [
[
{
"node": "ba1a5442-8bf3-4b69-a9d8-32f484b71659",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"1da9e1e4-c00a-42b9-ae90-3839a377bf60": {
"ai_languageModel": [
[
{
"node": "3ad0031f-6d11-4f30-9091-9d4baa4534c6",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"0d40609c-7358-4974-b22d-525e0952e748": {
"main": [
[
{
"node": "c72b963a-76c1-49be-8b8c-61cc9c3e66e3",
"type": "main",
"index": 0
}
]
]
},
"d3b3ac81-05b7-43da-8fb0-9adce71dd23f": {
"ai_languageModel": [
[
{
"node": "730a3948-0d6c-466d-a711-41ea4cf48006",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"804b0d8c-dbc6-432e-8e76-ba4ee3e2c478": {
"main": [
[
{
"node": "22d3cac3-1a18-459b-ab3f-6e0a13cd5341",
"type": "main",
"index": 0
}
]
]
},
"b13f8c75-28f2-4354-8d70-bf0fa6c0337b": {
"ai_outputParser": [
[
{
"node": "dc324e00-8cff-4211-b0bb-c507cf3e2815",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"dc324e00-8cff-4211-b0bb-c507cf3e2815": {
"ai_outputParser": [
[
{
"node": "1e89a8d3-1092-4e9d-aef8-0ed4f12c5d47",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"e5f163d5-f202-425b-912e-19b57f53cb0b": {
"ai_outputParser": [
[
{
"node": "ba1a5442-8bf3-4b69-a9d8-32f484b71659",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"8568fb71-172a-4289-bcde-c45328e88dde": {
"ai_outputParser": [
[
{
"node": "3ad0031f-6d11-4f30-9091-9d4baa4534c6",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"ba1a5442-8bf3-4b69-a9d8-32f484b71659": {
"ai_outputParser": [
[
{
"node": "36f9423a-cd41-49e0-aa29-0053be48e51c",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"3ad0031f-6d11-4f30-9091-9d4baa4534c6": {
"ai_outputParser": [
[
{
"node": "730a3948-0d6c-466d-a711-41ea4cf48006",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"36f9423a-cd41-49e0-aa29-0053be48e51c": {
"main": [
[
{
"node": "730a3948-0d6c-466d-a711-41ea4cf48006",
"type": "main",
"index": 0
}
]
]
},
"0210a953-a2a9-413e-8aaa-088b18ae65dd": {
"main": [
[
{
"node": "36f9423a-cd41-49e0-aa29-0053be48e51c",
"type": "main",
"index": 0
}
]
]
},
"c72b963a-76c1-49be-8b8c-61cc9c3e66e3": {
"main": [
[
{
"node": "5569f4b8-8cec-4b5e-abe2-9961047c4edc",
"type": "main",
"index": 0
}
]
]
},
"7b35a4c2-6c83-4250-b154-1104d5a0c18a": {
"main": [
[
{
"node": "1e89a8d3-1092-4e9d-aef8-0ed4f12c5d47",
"type": "main",
"index": 0
}
]
]
},
"b484f8dc-cdb8-4677-9bc1-32c3b6445518": {
"main": [
[]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級 - その他, AI要約, マルチモーダルAI
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
毎日の WhatsApp グループ スマート分析:GPT-4.1 による分析と音声メッセージの transcrição
毎日の WhatsApp グループ インタラクティブ分析:GPT-4.1 分析と音声メッセージ文字起こし
If
Set
Code
+
If
Set
Code
52 ノードDaniel Lianes
その他
n8nノードの探索(可視化リファレンスライブラリ内)
n8nノードを可視化リファレンスライブラリで探索
If
Ftp
Set
+
If
Ftp
Set
113 ノードI versus AI
その他
WordPressブログの自動化プロフェッショナル版(先端研究)v2.1マーケットプラグイン
GPT-4o、Perplexity AI、そして多言語対応を使ったSEO最適化ブログ作成の自動化
If
Set
Xml
+
If
Set
Xml
125 ノードDaniel Ng
コンテンツ作成
AIを使用してウイルスのなYouTube動画を検出し、メールレポートを送信
AIを使ってウイルスのなYouTube動画を検出し、メールレポートを送信する
Set
Code
Sort
+
Set
Code
Sort
26 ノードgclbck
その他
動のAIネットワークリサーチャー:プレーンTextからカスタムCSV
GPT-4とLinkupを活用したカスタムCSVへのテキスト変換を実現する動のAIウェブリサーチャー
Set
Code
Split Out
+
Set
Code
Split Out
16 ノードGuillaume Duvernay
その他
Gemini AI と Airtable から画像で Shopify 製品一覧を生成
Gemini AI と Airtable を使用して、画像からShopify製品一覧を生成する
If
Set
Code
+
If
Set
Code
33 ノードMANISH KUMAR
コンテンツ作成
ワークフロー情報
難易度
上級
ノード数40
カテゴリー3
ノードタイプ15
作成者
Fabian Herhold
@fabianherhCo-Founder of Automindz Solutions AI & Automation Agency focused on recruiting
外部リンク
n8n.ioで表示 →
このワークフローを共有