This workflow follows the Agent → Chat 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 →
{
"name": "cv-elaborator",
"nodes": [
{
"parameters": {
"public": true,
"initialMessages": "Hi there! \ud83d\udc4b\nI will help you perfect your work experience by simply selecting options.\nDrop me a random piece of working experience to start!",
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"typeVersion": 1.1,
"position": [
-1360,
2560
],
"id": "e20c6594-dcf8-4a41-a7db-b00060b02e24",
"name": "When chat message received"
},
{
"parameters": {
"workflowInputs": {
"values": [
{
"name": "current_story"
},
{
"name": "round",
"type": "number"
},
{
"name": "action"
},
{
"name": "session_id"
}
]
}
},
"type": "n8n-nodes-base.executeWorkflowTrigger",
"typeVersion": 1.1,
"position": [
-1360,
2340
],
"id": "468ea360-dec7-4d39-b99f-61a7087db941",
"name": "When Executed by Another Workflow"
},
{
"parameters": {
"options": {
"systemMessage": "\u4f60\u662f\u9762\u8bd5\u6545\u4e8b\u5b8c\u5584\u52a9\u624b\u3002\u4f60\u7684\u5de5\u4f5c\u662f\u5e2e\u52a9\u7528\u6237\u901a\u8fc7\u9009\u62e9\u7684\u65b9\u5f0f\u5b8c\u5584\u5de5\u4f5c\u7ecf\u5386\uff0c\u800c\u4e0d\u662f\u56de\u7b54\u95ee\u9898\u3002\n\n**\u6838\u5fc3\u6d41\u7a0b**\uff1a\n1. \u5148\u8c03\u7528story_analyzer\u5de5\u5177\u5206\u6790\u5f53\u524d\u6545\u4e8b\u7684STAR\u5b8c\u6574\u5ea6\n2. \u6839\u636e\u5206\u6790\u7ed3\u679c\uff1a\n - \u5982\u679c\u9700\u8981\u5b8c\u5584(continue)\uff1a\u57fa\u4e8e\u7f3a\u5931\u7684\u7ef4\u5ea6\uff0c\u751f\u62103\u4e2a\u5177\u4f53\u7684\u9009\u62e9\u9009\u9879\u8ba9\u7528\u6237\u9009\u62e9\n - \u5982\u679c\u5df2\u5b8c\u6574(complete)\uff1a\u8c03\u7528story_finalizer\u5de5\u5177\u751f\u6210\u6700\u7ec8\u6545\u4e8b\n\n**\u751f\u6210\u9009\u62e9\u9009\u9879\u7684\u539f\u5219**\uff1a\n- \u626e\u6f14\u7528\u6237\u89d2\u8272\uff0c\u60f3\u8c61\u8fd9\u4e2a\u5de5\u4f5c\u7ecf\u5386\u4e2d\u6700\u53ef\u80fd\u7684\u60c5\u51b5\n- \u63d0\u4f9b3\u4e2a\u5177\u4f53\u3001\u5b9e\u9645\u7684\u9009\u62e9\u9009\u9879\n- \u9009\u9879\u8981\u80fd\u4f53\u73b0\u4e2a\u4eba\u8d21\u732e\u548c\u4e13\u4e1a\u80fd\u529b\n- \u683c\u5f0f\uff1a\u7f16\u53f7\u5217\u8868\uff0c\u8ba9\u7528\u6237\u76f4\u63a5\u9009\u62e9\u6570\u5b57\n\n**\u5f53\u6545\u4e8b\u5b8c\u6210\u65f6**\uff1a\n- \u8c03\u7528story_finalizer\u5de5\u5177\u540e\uff0c\u5fc5\u987b\u5c06\u5de5\u5177\u8fd4\u56de\u7684final_response\u5b8c\u6574\u5730\u5c55\u793a\u7ed9\u7528\u6237\n- \u4e0d\u8981\u6dfb\u52a0\u989d\u5916\u7684\u603b\u7ed3\u6216\u4fee\u6539\uff0c\u76f4\u63a5\u4f7f\u7528\u5de5\u5177\u8fd4\u56de\u7684\u683c\u5f0f\u5316\u5185\u5bb9\n\n**\u793a\u4f8b**\uff1a\n\u7528\u6237\u8bf4\"\u6211\u8d1f\u8d23\u8fc7\u9500\u552e\u63d0\u5347\u9879\u76ee\"\uff0c\u5982\u679c\u7f3a\u5c11Situation\u80cc\u666f\uff0c\u4f60\u5e94\u8be5\u63d0\u4f9b\uff1a\n1. \u56e0\u4e3a\u5b63\u5ea6\u9500\u552e\u4e0b\u6ed130%\uff0c\u516c\u53f8\u6025\u9700\u63d0\u5347\u4e1a\u7ee9\n2. \u65b0\u4ea7\u54c1\u4e0a\u7ebf\uff0c\u9700\u8981\u5236\u5b9a\u65b0\u7684\u9500\u552e\u7b56\u7565\n3. \u7ade\u4e89\u5bf9\u624b\u62a2\u5360\u5e02\u573a\uff0c\u5ba2\u6237\u6d41\u5931\u4e25\u91cd\n\n\u8bb0\u4f4f\uff1a\u4f60\u662f\u5728\u5e2e\u7528\u6237\u9009\u62e9\uff0c\u800c\u4e0d\u662f\u8ba9\u7528\u6237\u56de\u7b54\u95ee\u9898\u3002"
}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 1.8,
"position": [
-1080,
2560
],
"id": "d038a04d-8b1f-4df5-8690-7f1167a28f71",
"name": "Story Enhancement Agent",
"retryOnFail": true
},
{
"parameters": {
"modelName": "models/gemini-2.0-flash",
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"typeVersion": 1,
"position": [
-1200,
2800
],
"id": "02e1ef3c-eb1d-414f-9bae-ec264a45383e",
"name": "Google Gemini Chat Model",
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 1
},
"conditions": [
{
"id": "analyze-condition",
"leftValue": "= {{ $json.action }}",
"rightValue": "analyze",
"operator": {
"type": "string",
"operation": "contains"
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "59968e13-d00f-4daf-9ab4-31517e1f419e",
"name": "Process Switch",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
-880,
2340
]
},
{
"parameters": {
"promptType": "define",
"text": "=\u4f60\u662f\u9762\u8bd5\u4e13\u5bb6\uff0c\u4e13\u95e8\u5206\u6790\u5de5\u4f5c\u7ecf\u5386\u662f\u5426\u7b26\u5408STAR\u6846\u67b6\u8981\u6c42\u3002\n\n\u5206\u6790\u8fd9\u4e2a\u5de5\u4f5c\u7ecf\u5386\uff1a{{ $json.current_story }}\n\u5f53\u524d\u8f6e\u6b21\uff1a{{ $json.round || 1 }}\n\n\u8bf7\u8bc4\u4f30STAR\u56db\u4e2a\u7ef4\u5ea6\u7684\u5b8c\u6574\u5ea6\uff1a\n- **Situation** (\u80cc\u666f)\uff1a\u9879\u76ee/\u4efb\u52a1\u7684\u80cc\u666f\u548c\u73af\u5883\n- **Task** (\u4efb\u52a1)\uff1a\u5177\u4f53\u7684\u804c\u8d23\u548c\u76ee\u6807 \n- **Action** (\u884c\u52a8)\uff1a\u91c7\u53d6\u7684\u5177\u4f53\u884c\u52a8\u548c\u65b9\u6cd5\n- **Result** (\u7ed3\u679c)\uff1a\u91cf\u5316\u7684\u6210\u679c\u548c\u5f71\u54cd\n\n**\u5224\u65ad\u6807\u51c6**\uff1a\n- \u5982\u679c\u6545\u4e8b\u5305\u542b\u6240\u6709\u5173\u952e\u8981\u7d20\u4e14\u8db3\u591f\u8be6\u7ec6(\u6bcf\u4e2a\u7ef4\u5ea6\u90fd\u6709\u5177\u4f53\u4fe1\u606f)\uff0c\u8fd4\u56decomplete\n- \u5982\u679c\u7f3a\u5c11\u5173\u952e\u4fe1\u606f\u6216\u8fc7\u4e8e\u7b80\u5355\uff0c\u8fd4\u56decontinue\u5e76\u6307\u51fa\u6700\u9700\u8981\u8865\u5145\u7684\u7ef4\u5ea6\n\n**\u4e25\u683c\u6309\u6b64JSON\u683c\u5f0f\u56de\u590d**\uff1a\n```json\n{\"status\": \"continue\", \"missing_dimension\": \"Situation\"}\n```\n\u6216\n```json\n{\"status\": \"complete\"}\n```\n\n\u53ea\u8fd4\u56deJSON\uff0c\u4e0d\u8981\u4efb\u4f55\u89e3\u91ca\u3002",
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 1.8,
"position": [
-580,
2100
],
"id": "f49e6798-544e-4084-81a9-4fcdd623b423",
"name": "Story Analyzer Agent"
},
{
"parameters": {
"modelName": "models/gemini-2.0-flash",
"options": {
"temperature": 0.2
}
},
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"typeVersion": 1,
"position": [
-600,
2280
],
"id": "bb660705-3c22-4dc7-9db3-ac9c9ae9582d",
"name": "Analyzer Gemini Model",
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"promptType": "define",
"text": "=\u57fa\u4e8e\u5b8c\u6574\u7ecf\u5386\u751f\u6210\u9762\u8bd5\u6545\u4e8b\u3002\n\n\u7ecf\u5386\u5185\u5bb9\uff1a{{ $json.current_story }}\n\n\u8bf7\u4e25\u683c\u6309\u4ee5\u4e0bJSON\u683c\u5f0f\u8f93\u51fa\uff0c\u4e0d\u8981\u4ee3\u7801\u5757\u6807\u8bb0\uff0c\u4e0d\u8981\u4efb\u4f55\u5176\u4ed6\u6587\u5b57\uff1a\n\n{\n \"structured_story\": \"Situation: \u7b80\u6d01\u63cf\u8ff0\u9879\u76ee\u80cc\u666f\u548c\u6311\u6218\\nTask: \u660e\u786e\u8bf4\u660e\u4f60\u7684\u804c\u8d23\u548c\u76ee\u6807\\nAction: \u8be6\u7ec6\u63cf\u8ff0\u4f60\u91c7\u53d6\u7684\u5177\u4f53\u884c\u52a8\\nResult: \u91cf\u5316\u7684\u6210\u679c\u548c\u5f71\u54cd\",\n \"narrative_story\": \"\u8fde\u8d2f\u76842-3\u5206\u949f\u53e3\u8ff0\u6545\u4e8b\uff0c\u8bed\u8a00\u81ea\u7136\u6d41\u7545\uff0c\u9002\u5408TTS\u8f6c\u6362\"\n}\n\n\u8981\u6c42\uff1a\n- \u7a81\u51fa\u4e2a\u4eba\u8d21\u732e\u548c\u4e13\u4e1a\u80fd\u529b\n- \u5305\u542b\u5177\u4f53\u6570\u636e\u548c\u91cf\u5316\u7ed3\u679c\n- structured_story\u7528\u6362\u884c\u5206\u9694\u56db\u4e2a\u90e8\u5206\n- narrative_story\u662f\u8fde\u7eed\u7684\u6bb5\u843d\u6587\u672c\n- \u76f4\u63a5\u8f93\u51faJSON\u5bf9\u8c61\uff0c\u4e0d\u8981```json\u6807\u8bb0",
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 1.8,
"position": [
-580,
2500
],
"id": "80efb377-051c-4e11-a45a-5828e5cac26d",
"name": "Story Finalizer Agent"
},
{
"parameters": {
"modelName": "models/gemini-2.0-flash",
"options": {
"temperature": 0.3
}
},
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"typeVersion": 1,
"position": [
-600,
2700
],
"id": "c05d5d8d-da4d-42a5-990e-c9719bc95889",
"name": "Finalizer Gemini Model",
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "append",
"documentId": {
"__rl": true,
"value": "1a_Wkw6X7zb5oBcE0jtsX4SqeIRWG8h7xOXX8Scs7cLY",
"mode": "list",
"cachedResultName": "interview-cases",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1a_Wkw6X7zb5oBcE0jtsX4SqeIRWG8h7xOXX8Scs7cLY/edit?usp=drivesdk"
},
"sheetName": {
"__rl": true,
"value": "gid=0",
"mode": "list",
"cachedResultName": "Sheet1",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1a_Wkw6X7zb5oBcE0jtsX4SqeIRWG8h7xOXX8Scs7cLY/edit#gid=0"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"timestamp": "={{ $now.format('yyyy-MM-dd HH:mm:ss') }}",
"total_rounds": "={{ $('Process Switch').item.json.round }}",
"original_input": "={{ $('Process Switch').item.json.current_story }}",
"story_length": "={{ $('Process Switch').item.json.current_story.length }}",
"structured_story": "={{ $json.structured_story }}",
"narrative_story": "={{ $json.narrative_story }}"
},
"matchingColumns": [],
"schema": [
{
"id": "timestamp",
"displayName": "timestamp",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "original_input",
"displayName": "original_input",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "structured_story",
"displayName": "structured_story",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "narrative_story",
"displayName": "narrative_story",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
},
{
"id": "total_rounds",
"displayName": "total_rounds",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true
},
{
"id": "story_length",
"displayName": "story_length",
"required": false,
"defaultMatch": false,
"display": true,
"type": "string",
"canBeUsedToMatch": true,
"removed": false
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {}
},
"id": "5cc38cc2-858e-41fa-938f-0bfdd1d25ed2",
"name": "Save to Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.4,
"position": [
20,
2400
],
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "// \u6839\u636e\u5904\u7406\u7c7b\u578b\u8fd4\u56de\u76f8\u5e94\u7ed3\u679c\nconst processType = $('When Executed by Another Workflow').first().json.action;\n\nif (processType === 'analyze') {\n // \u8fd4\u56de\u5206\u6790\u7ed3\u679c\u7ed9\u4e3bAgent\n const analysisOutput = $('Story Analyzer Agent').first().json.output;\n return [{ json: { analysis_result: analysisOutput } }];\n \n} else if (processType === 'finalize') {\n // \u683c\u5f0f\u5316\u6700\u7ec8\u6545\u4e8b\u54cd\u5e94\n const finalStoryRaw = $('Story Finalizer Agent').first().json.output;\n const totalRounds = $('When Executed by Another Workflow').first().json.round || 1;\n \n // \u89e3\u6790 JSON \u8f93\u51fa\n let finalStory;\n try {\n // \u6e05\u7406\u53ef\u80fd\u7684\u4ee3\u7801\u5757\u6807\u8bb0\n const cleanOutput = finalStoryRaw.replace(/```json\\s*/, '').replace(/```\\s*$/, '');\n finalStory = JSON.parse(cleanOutput);\n } catch (e) {\n // \u5982\u679c\u89e3\u6790\u5931\u8d25\uff0c\u76f4\u63a5\u4f7f\u7528\u539f\u59cb\u8f93\u51fa\n finalStory = {\n structured_story: finalStoryRaw,\n narrative_story: finalStoryRaw\n };\n }\n \n const wordCount = (finalStory.narrative_story || finalStoryRaw).length;\n \n const response = `\ud83c\udf89 **\u9762\u8bd5\u6545\u4e8b\u751f\u6210\u5b8c\u6210\uff01**\n\n\ud83d\udccb **\u7ed3\u6784\u5316\u6545\u4e8b\uff08STAR\u6846\u67b6\uff09**\n${finalStory.structured_story}\n\n---\n\n\ud83c\udf99\ufe0f **\u9762\u8bd5\u53e3\u8ff0\u7248\u672c**\n${finalStory.narrative_story}\n\n---\n\n\ud83d\udcca **\u5b8c\u5584\u7edf\u8ba1**\n- \u5b8c\u5584\u8f6e\u6570: ${totalRounds}\u8f6e\n- \u6545\u4e8b\u957f\u5ea6: ${wordCount}\u5b57\n\n\u2705 **\u5df2\u4fdd\u5b58\u5230\u4f60\u7684\u9762\u8bd5\u7d20\u6750\u5e93**\n\n\ud83c\udfaf **\u4f7f\u7528\u5efa\u8bae**\n1. \ud83c\udfa4 \u7ec3\u4e602-3\u5206\u949f\u6d41\u7545\u8bb2\u8ff0\n2. \ud83d\udcdd \u51c6\u5907\u53ef\u80fd\u7684\u8ffd\u95ee\n3. \ud83d\udcaa \u5f3a\u8c03\u4e2a\u4eba\u5173\u952e\u8d21\u732e`;\n \n return [{ json: { final_response: response } }];\n \n} else {\n return [{ json: { error: \"Unknown process type\" } }];\n}"
},
"id": "dc4d9474-2e13-4c88-aec8-9e9ee7eb14b8",
"name": "Format Output",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
280,
2260
]
},
{
"parameters": {
"description": "Analyze the current story completeness based on STAR framework. Returns status (continue/complete) and missing_dimension if needs improvement.",
"workflowId": {
"__rl": true,
"value": "D5Vkzx21Y1a9ashk",
"mode": "list",
"cachedResultName": "cv-elaborator"
},
"workflowInputs": {
"mappingMode": "defineBelow",
"value": {
"round": "={{ $fromAI('round', 'Current conversation round number', 'number') }}",
"current_story": "={{ $fromAI('current_story', 'The complete story content including user input and all previous selections', 'string') }}",
"action": "analyze",
"session_id": "={{ $json.sessionId }}"
},
"matchingColumns": [
"judge_if"
],
"schema": [
{
"id": "current_story",
"displayName": "current_story",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "string",
"removed": false
},
{
"id": "round",
"displayName": "round",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "number",
"removed": false
},
{
"id": "action",
"displayName": "action",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "string",
"removed": false
},
{
"id": "session_id",
"displayName": "session_id",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "string",
"removed": false
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
}
},
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"typeVersion": 2.2,
"position": [
-980,
2800
],
"id": "2b88c228-583e-4a15-b3dc-ab81f1099654",
"name": "story_analyzer"
},
{
"parameters": {
"description": "Generate the final STAR story and display to user when the story is complete. Returns formatted final response ready for display.",
"workflowId": {
"__rl": true,
"value": "D5Vkzx21Y1a9ashk",
"mode": "list",
"cachedResultName": "cv-elaborator"
},
"workflowInputs": {
"mappingMode": "defineBelow",
"value": {
"round": "={{ $fromAI('total_rounds', 'Total number of rounds used', 'number') }}",
"current_story": "={{ $fromAI('complete_story', 'The complete story with all user selections', 'string') }}",
"action": "finalize",
"session_id": "={{ $json.sessionId }}"
},
"matchingColumns": [],
"schema": [
{
"id": "current_story",
"displayName": "current_story",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "string",
"removed": false
},
{
"id": "round",
"displayName": "round",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "number",
"removed": false
},
{
"id": "action",
"displayName": "action",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "string",
"removed": false
},
{
"id": "session_id",
"displayName": "session_id",
"required": false,
"defaultMatch": false,
"display": true,
"canBeUsedToMatch": true,
"type": "string",
"removed": false
}
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
}
},
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"typeVersion": 2.2,
"position": [
-840,
2800
],
"id": "3e570240-51b9-45a5-824c-c7430f0c8371",
"name": "story_finalizer"
},
{
"parameters": {
"contextWindowLength": 30
},
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"typeVersion": 1.3,
"position": [
-1080,
2800
],
"id": "91a33534-c839-417e-9682-2855074b9a0a",
"name": "Simple Memory"
},
{
"parameters": {
"jsCode": "// \u6e05\u7406AI\u8f93\u51fa\uff0c\u79fb\u9664\u4ee3\u7801\u5757\u6807\u8bb0\nlet output = $json.output;\n\n// \u79fb\u9664```json\u6807\u8bb0\noutput = output.replace(/```json\\s*/, '').replace(/```\\s*$/, '');\n\n// \u89e3\u6790JSON\nlet parsed;\ntry {\n parsed = JSON.parse(output);\n} catch (e) {\n // \u5982\u679c\u89e3\u6790\u5931\u8d25\uff0c\u8fd4\u56de\u9ed8\u8ba4\u7ed3\u6784\n parsed = {\n structured_story: \"Story parsing failed\",\n narrative_story: \"Story parsing failed\"\n };\n}\n\nreturn [{\n json: {\n ...parsed,\n }\n}];"
},
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
-220,
2500
],
"id": "72311da6-de7f-49a5-9d9a-4ef44e0cd30b",
"name": "Parser"
},
{
"parameters": {
"resource": "databasePage",
"databaseId": {
"__rl": true,
"value": "20e2e9a3-326a-8007-9d7d-d17611e60622",
"mode": "list",
"cachedResultName": "working-experience-cases",
"cachedResultUrl": "https://www.notion.so/your-notion-page-id"
},
"propertiesUi": {
"propertyValues": [
{
"key": "narrative_story|rich_text",
"textContent": "={{ $json.narrative_story }}"
},
{
"key": "story_length|number",
"numberValue": "={{ $('Process Switch').first().json.current_story.length() }}"
},
{
"key": "structured_story|rich_text",
"textContent": "={{ $json.structured_story }}"
},
{
"key": "timestamp|date",
"date": "2025-06-10T22:04:49"
},
{
"key": "total_rounds|number",
"numberValue": "={{ $('Process Switch').first().json.round }}"
},
{
"key": "\u540d\u79f0|title",
"title": "={{ $('Process Switch').first().json.current_story }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.notion",
"typeVersion": 2.2,
"position": [
20,
2620
],
"id": "ad7a0dcb-0c92-4255-8951-4eb7315e3925",
"name": "Notion",
"credentials": {
"notionApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"tableId": "work_experiences",
"fieldsUi": {
"fieldValues": [
{
"fieldId": "session_id",
"fieldValue": "={{ $('When Executed by Another Workflow').item.json.session_id }}"
},
{
"fieldId": "original_input",
"fieldValue": "={{ $('When Executed by Another Workflow').item.json.current_story }}"
},
{
"fieldId": "structured_story",
"fieldValue": "={{ $json.structured_story }}"
},
{
"fieldId": "narrative_story",
"fieldValue": "={{ $json.narrative_story }}"
},
{
"fieldId": "total_rounds",
"fieldValue": "={{ $('When Executed by Another Workflow').item.json.round }}"
},
{
"fieldId": "story_length",
"fieldValue": "={{ $('When Executed by Another Workflow').item.json.current_story.length }}"
}
]
}
},
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
20,
2840
],
"id": "19202e74-a8f4-48d8-aa9a-ff0965b55018",
"name": "Supabase",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"method": "POST",
"url": "=http://localhost:8000/api/experience-completed/",
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "session_id",
"value": "={{ $('When Executed by Another Workflow').item.json.query.session_id }}"
},
{
"name": "experience_id",
"value": "={{ $('Supabase').item.json.id }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
460,
2840
],
"id": "5fc0ab06-cc44-449c-91d6-1048fde7155c",
"name": "HTTP Request"
}
],
"connections": {
"When chat message received": {
"main": [
[
{
"node": "Story Enhancement Agent",
"type": "main",
"index": 0
}
]
]
},
"When Executed by Another Workflow": {
"main": [
[
{
"node": "Process Switch",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "Story Enhancement Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Process Switch": {
"main": [
[
{
"node": "Story Analyzer Agent",
"type": "main",
"index": 0
}
],
[
{
"node": "Story Finalizer Agent",
"type": "main",
"index": 0
}
]
]
},
"Story Analyzer Agent": {
"main": [
[
{
"node": "Format Output",
"type": "main",
"index": 0
}
]
]
},
"Analyzer Gemini Model": {
"ai_languageModel": [
[
{
"node": "Story Analyzer Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Story Finalizer Agent": {
"main": [
[
{
"node": "Parser",
"type": "main",
"index": 0
}
]
]
},
"Finalizer Gemini Model": {
"ai_languageModel": [
[
{
"node": "Story Finalizer Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Save to Google Sheets": {
"main": [
[
{
"node": "Format Output",
"type": "main",
"index": 0
}
]
]
},
"story_analyzer": {
"ai_tool": [
[
{
"node": "Story Enhancement Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"story_finalizer": {
"ai_tool": [
[
{
"node": "Story Enhancement Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "Story Enhancement Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"Parser": {
"main": [
[
{
"node": "Save to Google Sheets",
"type": "main",
"index": 0
},
{
"node": "Notion",
"type": "main",
"index": 0
},
{
"node": "Supabase",
"type": "main",
"index": 0
}
]
]
},
"Notion": {
"main": [
[]
]
},
"Supabase": {
"main": [
[]
]
}
},
"active": true,
"settings": {
"executionOrder": "v1"
},
"versionId": "e342d49a-15ee-4951-8e26-0c486f505cc8",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "D5Vkzx21Y1a9ashk",
"tags": [
{
"createdAt": "2025-05-07T19:03:39.508Z",
"updatedAt": "2025-05-07T19:03:39.508Z",
"id": "aMCUQslRcX5XDhov",
"name": "Linkedin"
}
]
}
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.
googlePalmApigoogleSheetsOAuth2ApinotionApisupabaseApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
cv-elaborator. Uses chatTrigger, executeWorkflowTrigger, agent, lmChatGoogleGemini. Chat trigger; 18 nodes.
Source: https://github.com/wenjiaqi8255/n8n-cv-elaborator/blob/5171cd5c0e3df20e46fc9242c2c7915aef4eab0a/cv_elaborator.json — 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.
Aggregate Http. Uses lmChatOpenAi, agent, stickyNote, memoryBufferWindow. Chat trigger; 41 nodes.
Splitout Filter. Uses toolWorkflow, lmChatOpenAi, outputParserStructured, manualTrigger. Event-driven trigger; 38 nodes.
This enables webhooks for nearly realtime updates (every 5 seconds) from Notion Databases.
This n8n workflow automates the transformation of spreadsheet data into professional charts and graphs using AI-driven analysis. Triggered via Slack, it processes uploaded files (Excel, CSV, Google Sh
• Multi-Layer Message Analysis - Every customer interaction passes through three specialized AI classifiers: privacy detection (identifies sensitive data and security requirements), intent recognition