
{
    "id": 15,
    "title": {
        "en": "CV Analysis and Candidate Evaluation",
        "de": "Lebenslaufanalyse und Kandidatenbewertung",
        "zh": "简历分析和候选人评估"},
    "description": {
        "en": "This is a workflow that helps companies evaluate resumes, HR uploads a job description first, then submits multiple resumes via the chat window for evaluation.",
        "de": "Dies ist ein Workflow, der Unternehmen bei der Bewertung von Lebensläufen hilft. Die Personalabteilung lädt zunächst eine Stellenbeschreibung hoch und reicht dann mehrere Lebensläufe über das Chat-Fenster zur Bewertung ein.",
        "zh": "帮助公司评估简历的工作流。HR首先上传职位描述，通过聊天窗口提交多份简历进行评估。"},
    "canvas_type": "Other",
    "dsl": {
            "components": {
                "Agent:AfraidBearsShare": {
                    "downstream": [
                        "Message:TenLizardsShake"
                    ],
                    "obj": {
                        "component_name": "Agent",
                        "params": {
                            "delay_after_error": 1,
                            "description": "",
                            "exception_comment": "",
                            "exception_default_value": "",
                            "exception_goto": [],
                            "exception_method": null,
                            "frequencyPenaltyEnabled": false,
                            "frequency_penalty": 0.5,
                            "llm_id": "deepseek-chat@DeepSeek",
                            "maxTokensEnabled": false,
                            "max_retries": 1,
                            "max_rounds": 1,
                            "max_tokens": 4096,
                            "mcp": [],
                            "message_history_window_size": 12,
                            "outputs": {
                                "content": {
                                    "type": "string",
                                    "value": ""
                                }
                            },
                            "parameter": "Precise",
                            "presencePenaltyEnabled": false,
                            "presence_penalty": 0.5,
                            "prompts": [
                                {
                                    "content": "HR is asking about: {sys.query}\n\nJob description is {begin@JD}\n\nResume is {IterationItem:EagerGiftsOpen@item}",
                                    "role": "user"
                                }
                            ],
                            "sys_prompt": "# HR Resume Batch Processing Agent \n\n## Mission Statement\n\nYou are a professional HR resume processing agent designed to handle large-scale resume screening . Your primary goal is to extract standardized candidate information and provide efficient JD matching analysis in a clear, hierarchical text format.And always use Chinese to answer questions, and always separate each resume information with paragraphs.\n\n## Core Capabilities\n\n### 1. Standardized Information Extraction\n\n- Extract 6 key data points from each resume\n\n\n- Normalize all information to consistent format\n\n- Ensure data quality and completeness\n\n- Provide confidence levels for extracted information\n\n### 3. JD Matching Analysis\n\n1. Score: [X/10]  \n\n2. Matching Analysis:  \n\n- Clearly state the main points of alignment between resume and job description.  \n\n- Mention any strong matches in experience, skills, or education.  \n\n- Indicate if there are any gaps or mismatches.  \n\n\n\n- Content length must always be between 30-50 characters\n\n### Output Specifications\n\n\n\n\n**Important requirement**: No subheadings\n\n\n\n-  Full name without titles\n\n- Primary phone/email in standard format\n\n- Most recent educational institution\n\n- Numeric value (years of experience or graduation year)\n\n- Current residence city only\n\n- JD Matching Analysis\n\n\n## Processing Workflow\n\n### Step 1: File Analysis\n\n### Step 2: Information Extraction\n\n### Step 3: JD Matching Analysis\n\n### Step 4: Text Formatting\n\n### Step 5: Output complete context\uff08Strictly keep one line per message and do not merge. The content of the second resume and the previous resume are not allowed to be on the same line\uff09",
                            "temperature": "0.1",
                            "temperatureEnabled": true,
                            "tools": [],
                            "topPEnabled": false,
                            "top_p": 0.75,
                            "user_prompt": "",
                            "visual_files_var": ""
                        }
                    },
                    "parent_id": "Iteration:PetiteBanksWarn",
                    "upstream": [
                        "IterationItem:EagerGiftsOpen"
                    ]
                },
                "Iteration:PetiteBanksWarn": {
                    "downstream": [],
                    "obj": {
                        "component_name": "Iteration",
                        "params": {
                            "items_ref": "sys.files",
                            "outputs": {
                                "evaluation": {
                                    "ref": "Agent:AfraidBearsShare@content",
                                    "type": "Array<string>"
                                }
                            }
                        }
                    },
                    "upstream": [
                        "begin"
                    ]
                },
                "IterationItem:EagerGiftsOpen": {
                    "downstream": [
                        "Agent:AfraidBearsShare"
                    ],
                    "obj": {
                        "component_name": "IterationItem",
                        "params": {
                            "outputs": {
                                "index": {
                                    "type": "integer"
                                },
                                "item": {
                                    "type": "unkown"
                                }
                            }
                        }
                    },
                    "parent_id": "Iteration:PetiteBanksWarn",
                    "upstream": []
                },
                "Message:TenLizardsShake": {
                    "downstream": [],
                    "obj": {
                        "component_name": "Message",
                        "params": {
                            "content": [
                                "\n\n\n\n{Agent:AfraidBearsShare@content}"
                            ]
                        }
                    },
                    "parent_id": "Iteration:PetiteBanksWarn",
                    "upstream": [
                        "Agent:AfraidBearsShare"
                    ]
                },
                "begin": {
                    "downstream": [
                        "Iteration:PetiteBanksWarn"
                    ],
                    "obj": {
                        "component_name": "Begin",
                        "params": {
                            "enablePrologue": true,
                            "inputs": {
                                "JD": {
                                    "name": "Job Description",
                                    "optional": false,
                                    "options": [],
                                    "type": "line"
                                }
                            },
                            "mode": "conversational",
                            "prologue": "Hi there! I help you assess how well candidates match your job description. Just upload the JD and candidate resumes to begin."
                        }
                    },
                    "upstream": []
                }
            },
            "globals": {
                "sys.conversation_turns": 0,
                "sys.files": [],
                "sys.query": "",
                "sys.user_id": ""
            },
            "graph": {
                "edges": [
                    {
                        "data": {
                            "isHovered": false
                        },
                        "id": "xy-edge__beginstart-Iteration:PetiteBanksWarnend",
                        "source": "begin",
                        "sourceHandle": "start",
                        "target": "Iteration:PetiteBanksWarn",
                        "targetHandle": "end"
                    },
                    {
                        "data": {
                            "isHovered": false
                        },
                        "id": "xy-edge__IterationItem:EagerGiftsOpenstart-Agent:AfraidBearsShareend",
                        "source": "IterationItem:EagerGiftsOpen",
                        "sourceHandle": "start",
                        "target": "Agent:AfraidBearsShare",
                        "targetHandle": "end"
                    },
                    {
                        "data": {
                            "isHovered": false
                        },
                        "id": "xy-edge__Agent:AfraidBearsSharestart-Message:TenLizardsShakeend",
                        "source": "Agent:AfraidBearsShare",
                        "sourceHandle": "start",
                        "target": "Message:TenLizardsShake",
                        "targetHandle": "end"
                    }
                ],
                "nodes": [
                    {
                        "data": {
                            "form": {
                                "enablePrologue": true,
                                "inputs": {
                                    "JD": {
                                        "name": "Job Description",
                                        "optional": false,
                                        "options": [],
                                        "type": "line"
                                    }
                                },
                                "mode": "conversational",
                                "prologue": "Hi there! I help you assess how well candidates match your job description. Just upload the JD and candidate resumes to begin."
                            },
                            "label": "Begin",
                            "name": "begin"
                        },
                        "id": "begin",
                        "measured": {
                            "height": 76,
                            "width": 200
                        },
                        "position": {
                            "x": 50,
                            "y": 200
                        },
                        "selected": false,
                        "sourcePosition": "left",
                        "targetPosition": "right",
                        "type": "beginNode"
                    },
                    {
                        "data": {
                            "form": {
                                "items_ref": "sys.files",
                                "outputs": {
                                    "evaluation": {
                                        "ref": "Agent:AfraidBearsShare@content",
                                        "type": "Array<string>"
                                    }
                                }
                            },
                            "label": "Iteration",
                            "name": "Iteration"
                        },
                        "dragging": false,
                        "height": 300,
                        "id": "Iteration:PetiteBanksWarn",
                        "measured": {
                            "height": 300,
                            "width": 762
                        },
                        "position": {
                            "x": 664.2911321008794,
                            "y": 300.8643508010756
                        },
                        "resizing": false,
                        "selected": false,
                        "sourcePosition": "right",
                        "targetPosition": "left",
                        "type": "group",
                        "width": 762
                    },
                    {
                        "data": {
                            "form": {
                                "outputs": {
                                    "index": {
                                        "type": "integer"
                                    },
                                    "item": {
                                        "type": "unkown"
                                    }
                                }
                            },
                            "label": "IterationItem",
                            "name": "IterationItem"
                        },
                        "dragging": false,
                        "extent": "parent",
                        "id": "IterationItem:EagerGiftsOpen",
                        "measured": {
                            "height": 40,
                            "width": 80
                        },
                        "parentId": "Iteration:PetiteBanksWarn",
                        "position": {
                            "x": 61.93019203023471,
                            "y": 108.67650329471616
                        },
                        "selected": false,
                        "type": "iterationStartNode"
                    },
                    {
                        "data": {
                            "form": {
                                "delay_after_error": 1,
                                "description": "",
                                "exception_comment": "",
                                "exception_default_value": "",
                                "exception_goto": [],
                                "exception_method": null,
                                "frequencyPenaltyEnabled": false,
                                "frequency_penalty": 0.5,
                                "llm_id": "deepseek-chat@DeepSeek",
                                "maxTokensEnabled": false,
                                "max_retries": 1,
                                "max_rounds": 1,
                                "max_tokens": 4096,
                                "mcp": [],
                                "message_history_window_size": 12,
                                "outputs": {
                                    "content": {
                                        "type": "string",
                                        "value": ""
                                    }
                                },
                                "parameter": "Precise",
                                "presencePenaltyEnabled": false,
                                "presence_penalty": 0.5,
                                "prompts": [
                                    {
                                        "content": "HR is asking about: {sys.query}\n\nJob description is {begin@JD}\n\nResume is {IterationItem:EagerGiftsOpen@item}",
                                        "role": "user"
                                    }
                                ],
                                "sys_prompt": "# HR Resume Batch Processing Agent \n\n## Mission Statement\n\nYou are a professional HR resume processing agent designed to handle large-scale resume screening . Your primary goal is to extract standardized candidate information and provide efficient JD matching analysis in a clear, hierarchical text format.And always use Chinese to answer questions, and always separate each resume information with paragraphs.\n\n## Core Capabilities\n\n### 1. Standardized Information Extraction\n\n- Extract 6 key data points from each resume\n\n\n- Normalize all information to consistent format\n\n- Ensure data quality and completeness\n\n- Provide confidence levels for extracted information\n\n### 3. JD Matching Analysis\n\n1. Score: [X/10]  \n\n2. Matching Analysis:  \n\n- Clearly state the main points of alignment between resume and job description.  \n\n- Mention any strong matches in experience, skills, or education.  \n\n- Indicate if there are any gaps or mismatches.  \n\n\n\n- Content length must always be between 30-50 characters\n\n### Output Specifications\n\n\n\n\n**Important requirement**: No subheadings\n\n\n\n-  Full name without titles\n\n- Primary phone/email in standard format\n\n- Most recent educational institution\n\n- Numeric value (years of experience or graduation year)\n\n- Current residence city only\n\n- JD Matching Analysis\n\n\n## Processing Workflow\n\n### Step 1: File Analysis\n\n### Step 2: Information Extraction\n\n### Step 3: JD Matching Analysis\n\n### Step 4: Text Formatting\n\n### Step 5: Output complete context\uff08Strictly keep one line per message and do not merge. The content of the second resume and the previous resume are not allowed to be on the same line\uff09",
                                "temperature": "0.1",
                                "temperatureEnabled": true,
                                "tools": [],
                                "topPEnabled": false,
                                "top_p": 0.75,
                                "user_prompt": "",
                                "visual_files_var": ""
                            },
                            "label": "Agent",
                            "name": "Evaluation Agent"
                        },
                        "dragging": false,
                        "extent": "parent",
                        "id": "Agent:AfraidBearsShare",
                        "measured": {
                            "height": 84,
                            "width": 200
                        },
                        "parentId": "Iteration:PetiteBanksWarn",
                        "position": {
                            "x": 294.68729149618423,
                            "y": 129.28319861966708
                        },
                        "selected": false,
                        "sourcePosition": "right",
                        "targetPosition": "left",
                        "type": "agentNode"
                    },
                    {
                        "data": {
                            "form": {
                                "content": [
                                    "\n\n\n\n{Agent:AfraidBearsShare@content}"
                                ]
                            },
                            "label": "Message",
                            "name": "Evaluation Result"
                        },
                        "dragging": false,
                        "extent": "parent",
                        "id": "Message:TenLizardsShake",
                        "measured": {
                            "height": 56,
                            "width": 200
                        },
                        "parentId": "Iteration:PetiteBanksWarn",
                        "position": {
                            "x": 612.0402980856167,
                            "y": 82.64699341056763
                        },
                        "selected": false,
                        "sourcePosition": "right",
                        "targetPosition": "left",
                        "type": "messageNode"
                    },
                    {
                        "data": {
                            "form": {
                                "text": "The agent can also save evaluation results to your Google Sheet using MCP.\n\nhttps://github.com/xing5/mcp-google-sheets"
                            },
                            "label": "Note",
                            "name": "Google Sheet MCP"
                        },
                        "dragHandle": ".note-drag-handle",
                        "dragging": false,
                        "height": 130,
                        "id": "Note:SixtyHeadsShout",
                        "measured": {
                            "height": 130,
                            "width": 337
                        },
                        "position": {
                            "x": 619.4967244976884,
                            "y": 619.3395083567394
                        },
                        "resizing": false,
                        "selected": false,
                        "sourcePosition": "right",
                        "targetPosition": "left",
                        "type": "noteNode",
                        "width": 337
                    },
                    {
                        "data": {
                            "form": {
                                "text": "HR uploads a job description first, then submits multiple resumes via the chat window for evaluation."
                            },
                            "label": "Note",
                            "name": "Candidate Evaluation Workflow"
                        },
                        "dragHandle": ".note-drag-handle",
                        "dragging": false,
                        "height": 157,
                        "id": "Note:LuckyDeerSearch",
                        "measured": {
                            "height": 157,
                            "width": 452
                        },
                        "position": {
                            "x": 457.08115218140847,
                            "y": -6.323496705283823
                        },
                        "resizing": false,
                        "selected": false,
                        "sourcePosition": "right",
                        "targetPosition": "left",
                        "type": "noteNode",
                        "width": 452
                    }
                ]
            },
            "history": [],
            "messages": [],
            "path": [],
            "retrieval": []
        },
    "avatar": "data:image/png;base64,[encoded data, 7344 characters]"
}