SuperAPI AI Directory

assess-interview-candidate

Frontend & websites

View repository

Updated 10-15 21:11

About this skill

Candidate Assessment and Interview Report

Objective

Organize the resume and job requirements into two layers of material:

  1. The backend retains the complete job model, evidence ledger, sources, assumptions, and scoring data for review.
  2. The HTML for interviewers retains only three modules: "Candidate Introduction, Resume Doubts and Exaggeration Screening, Interview Questions," in plain Chinese.

Always distinguish between facts explicitly provided by the candidate, external corroboration, inferences, and unknowns. The final hiring decision is made by a person with the authority to do so.

Portable Operation Conventions

This Skill does not depend on a specific Agent, Skill installation root directory, or command-line shell. Any Agent capable of reading local files and running Python 3.10 or above can use it; PDF processing, online verification, and browser checks are performed according to the capabilities actually available in the current host.

  • First resolve <skill-dir> as the directory containing this SKILL.md , without guessing a fixed installation path.
  • <python> indicates the Python 3 launcher available on the current system. Windows typically uses py -3 or python, while macOS and Linux typically use python3 or python; first confirm the actually available option with a version command.
  • <approved-root>、<output-dir> etc. are path placeholders and do not imply a fixed path separator. Combine paths through the host file API or pathlib , and pass paths containing spaces or non-ASCII characters as a single complete argument.
  • Command examples use single-line, shell-independent argument forms. Do not rely on Bash line continuation characters, environment variable expansion, the current user's home directory structure, or an Agent's proprietary tool names.
  • agents/ The files in are only optional interface metadata for a specific host; the core workflow is governed by this file,references/、scripts/、assets/ and evals/ .

When encountering capability differences, handle them according to agent-portability.md . When necessary capabilities are missing, clearly report the verification that was not completed, and do not write unexecuted steps as completed.

Result Contract

Each complete run generates the following in a new case directory:

input/       原始简历、岗位要求和用户提供的链接
normalized/  经文字提取与视觉核对的文本及案件清单
research/    查询和来源记录
models/      岗位模型、证据账本、行为假设和面试蓝图
interview/   初始评分状态
output/      完整后台数据、精简报告数据和离线 HTML
audit/       运行、校验和隐私排除记录

Key outputs:

output/assessment-data.json
output/interviewer-report-data.json
output/<候选人姓名>-候选人评估与面试报告.html

The HTML file name, browser title, and the top heading of the page must all include the candidate's name. Do not overwrite existing cases or reports.

Read Before Starting

First resolve <skill-dir> as the directory containing this file.

  1. Read each time workflow-contract.md、evidence-and-inference-policy.md and privacy-and-fairness-cn.md。
  2. Before building the job model, read job-modeling.md。
  3. Before online verification of the candidate's professional evidence, read research-and-identity-policy.md。
  4. When generating questions, read structured-interview-methods.md and scoring-and-coverage.md。
  5. For AI, LLM, Agent, or engineering positions, read role-adapter-ai-llm-engineering.md。
  6. Before writing JSON, read the corresponding Schema; the interviewer report must read schema-interviewer-report.json。

Input Gate

Required inputs:

  • A readable candidate resume;
  • Job requirements or the actual tasks confirmed by the recruiter;
  • Output root directory; if not provided, use the current directory under candidate-cases/。

Obtain as much as possible:

  • Company work location, job level, on-site work and travel requirements;
  • Professional links voluntarily provided by the candidate;
  • The permitted scope of online verification of the candidate's professional information;
  • The competency weights and thresholds confirmed by the role expert.

When a resume or job requirements are missing, use REQUIRED_INPUT_MISSING to stop and do not create a case. When the company location is missing, continue generating, but state "distance cannot be calculated, company address pending". When the candidate's online verification permission is missing, close that branch; it does not affect local resume analysis.

Workflow

1. Create a case and fully read the materials

<python> "<skill-dir>/scripts/create_candidate_case.py" --root "<approved-root>" --role-slug "<role-slug>"

Copy the original input and record the hash; do not move or delete user files. For PDF resumes, use the fixed restricted copy in the case directory input/resume-original.pdf, while retaining the original file name and hash in the case inventory. PDFs must use both the text extraction capability and page-by-page visual inspection capability available in the current host to verify the page count, names, timeline, tables, text in images, and extraction omissions. To ensure complete verification, the original file and page-by-page extracted text may retain phone numbers, email addresses, ID numbers, or precise addresses; therefore input/ and normalized/ are both handled as restricted candidate materials; such content must not enter online queries, interviewer data, or HTML. If page-by-page visual inspection cannot be completed, use PDF_VISUAL_CHECK_UNAVAILABLE to stop generating the final report, and explain the missing capability.

During page-by-page visual inspection, also record photo status:

  • When there is no candidate personal headshot on the page, use not_present;
  • When there is a suspected headshot but it cannot be reliably confirmed to be the candidate themself, use ambiguous;
  • When it is confirmed that there is a candidate headshot on the page, but the current tools cannot reliably extract it, use extraction_unavailable;
  • Use this only when the headshot comes from the original resume PDF, has been visually verified against the corresponding page, and the page number and extraction location can be recorded: included。

First check the PDF's embedded images; if the headshot is not a standalone image, crop it from the corresponding page. All extraction results must be converted to PNG, and after conversion visually compared again with the PDF page; formats such as JPEG and PPM cannot be embedded directly. Do not supplement images from public homepages or other files, and do not use face recognition, similarity matching, photo age estimation, or appearance analysis. After selecting the image, run the following script; the script requires the source to be input/resume-original.pdfwithin the case, and before decompression it checks dimensions, validates the PNG structure and pixel data, removes metadata and file trailing content not required for display, and then outputs an embedded image:

<python> "<skill-dir>/scripts/prepare_candidate_photo.py" --input "<visually-confirmed-image>" --resume-pdf "<original-resume-pdf>" --page <one-based-page> --extraction-method embedded_image --image-index <zero-based-image-index>

When cropping from a page, change the last two parameters to --extraction-method page_crop --crop-box <x,y,width,height>. The script is only responsible for validating format, dimensions, hash, and structured source; it cannot replace visual identity confirmation.

2. Build the current role model

Break down the role according to "work outputs → key tasks → competencies → target proficiency → acceptable evidence → verification methods". Record importance, frequency, impact of failure, and whether it is required upon entry. When employer confirmation is missing, mark it as tentative; do not automatically treat education, years of experience, or company prestige as competencies.

Conduct current role research on fast-changing roles that contains no candidate identity information; prioritize official recruitment pages, primary technical materials, standards, and occupational frameworks.

3. Build the resume evidence ledger

Break down claims related to the role's important competencies one by one, recording the original text location, context, task, the person's own actions, results, boundaries of personal contribution, verifiable materials, and remaining gaps. If the resume does not mention a certain competency, this only means "currently insufficient evidence" and must not be directly written as "does not possess".

Use neutral language such as "unclear description" or "verifiable gap" for concerns. Prioritize checking:

  • Only states "participated" but does not specify the person's own division of work;
  • Completed a feature but does not explain whether it was independently designed, an adaptation of an open-source solution, or a simple invocation;
  • Mentions growth, accuracy, or cost reduction but provides no baseline, time range, or calculation basis;
  • The boundary between team, paper, or platform results and personal contribution is unclear;
  • Key competencies for the role consist only of skill nouns, with no runnable artifacts or verification process.

4. Optional verification of public professional evidence

Only research professional materials that are permitted, publicly accessible, identity-confirmed, and directly relevant to the role. A page found by the system requires at least two consistent professional anchors; the same name is not sufficient to confirm identity. Do not search for age, place of origin, marriage, family, or private life. No public homepage, paper, or code repository must not result in a deduction.

5. Retain a complete backend audit trail

Continue generating the role model, evidence ledger, candidate perspective, nine categories of role behavior hypotheses, interview blueprint, scoring status, source records, and output/assessment-data.json. These objects are for auditing and manual review and are not directly displayed in the interviewer HTML.

6. Generate streamlined interviewer data

According to schema-interviewer-report.json generate output/interviewer-report-data.json。

Candidate profile

  • The name must use the explicit name in the candidate's materials.
  • personal_info Store only birth information, place of birth, hometown or place of origin, marital status, and current city that the candidate voluntarily provides; if not provided, display "not provided"; do not search for or supplement it.
  • When a date of birth is available, calculate the exact age in years as of the report date; when only birth year and month or birth year is available, calculate an approximate age and mark it "approx." At the same time, store the original birth information, normalized date, conversion cutoff date, and source location.
  • Place the photo in candidate_overview.candidate_photo, and do not place it in personal_info. Only when status=included does the HTML display the local data: image; in other states, do not retain a blank photo field.
  • Only when the candidate does not provide birth information may an independent candidate_overview.timeline_age_estimatebe generated: prioritize the earliest undergraduate enrollment time explicitly stated in the resume; if there is no enrollment time, infer the enrollment year only when both the undergraduate graduation time and program duration are explicitly stated. Graduation month or date cannot prove enrollment month or date, so the back-calculation anchor is uniformly reduced to year precision. Center on the undergraduate enrollment age of 18, fixed to the 16–20 age range, and include the date uncertainty caused by anchor precision in the upper and lower bounds.
  • Subsequent times such as graduate enrollment or work start can only be used to check chronological order and cannot be used alone as age anchors. When the timeline conflicts or evidence is insufficient, do not output a numerical range; inferred results must be marked "not self-reported by the candidate."
  • Schools, degrees, majors, employers, positions, times, and cities explicitly provided by the candidate should be summarized directly; if a city is not written, display "not provided"; do not infer it from the school or employer address.
  • Photos, age (including the age range inferred from the resume), place of origin, and marital status do not enter person-job matching, competency scoring, stability prediction, hiring decisions, or candidate ranking.
  • For person-job matching, use only "meets", "has relevant foundation, needs interview confirmation", and "currently insufficient evidence".
  • List current residence, company location, actual commute, relocation willingness, on-site work, business travel, and earliest start date separately. Place of birth or hometown cannot replace current residence for distance calculation.

Resume concerns and exaggeration screening

List only the 0–8 items directly related to the core competencies of the position, in descending order of competency importance. For each item, state clearly: the corresponding competency, the exact wording from the resume, what is unclear, why it needs verification, and how to verify it. Do not output internal status codes, competency numbers, or English assessment terminology in the visible text.

Interview questions

Generate 12–18 questions arranged by priority. The questions must be directly readable by the interviewer. For each position-related question, provide the purpose of asking, specific manifestations of a good/average/poor answer, plus bonus points and deduction points.

The question bank must include:

  • Common core professional questions and at least one real work sample;
  • Verification questions corresponding to this candidate's core resume claims;
  • Questions on communication, collaboration and responsibility, crisis handling, or stressful situations;
  • Current place of residence, commuting/relocation, start date, and on-site work arrangements; these questions only record the conditions of both parties and are not scored;
  • One optional marital status question that may be skipped. This question only records the candidate's voluntary answer, has no good or bad rating, no bonus points, and no deduction points; the candidate may decline to answer.

7. Generate offline HTML

The HTML only embeds interviewer-report-data.json, not the full assessment-data.json. The page contains exactly three main modules:

  1. Candidate profile;
  2. Resume doubts and exaggeration screening;
  3. Interview questions.

The avatar appears in the candidate profile only when candidate_photo.status=included , and it is noted that it comes from the resume PDF, is display-only, and does not participate in evaluation or ranking. The career age range uses a separate label, clearly stating that it is inferred rather than self-reported by the candidate. Each question supports: clicking "Mark" defaults to yellow "May ask"; the dropdown can change it to red "Must ask", blue "Alternative", or cancel it; recording "good/average/poor/not asked" and notes. Location, start date, and other self-reported questions only record "recorded/prefer not to answer/not asked". Key marks and answers are automatically saved to the current browser locally, and can be exported or cleared. No network requests may be sent, no external resources may be loaded, and candidate materials must not be saved to remote services.

The page does not display resume evidence scores, overall scores, weights, coverage rates, thresholds, comparability, source tables, the nine categories of behavioral hypotheses, or internal English statuses. This information remains in the backend files.

Usage:

<python> "<skill-dir>/scripts/derive_timeline_age.py" --report-date "<YYYY-MM-DD>" --undergraduate-start "<YYYY-or-YYYY-MM-or-YYYY-MM-DD>" --source-locator "<resume-page-or-section>"
<python> "<skill-dir>/scripts/derive_timeline_age.py" --report-date "<YYYY-MM-DD>" --undergraduate-graduation "<YYYY-or-YYYY-MM-or-YYYY-MM-DD>" --degree-duration-years <explicit-duration> --source-locator "<resume-page-or-section>"
<python> "<skill-dir>/scripts/validate_interviewer_report_data.py" "<interviewer-report-data.json>"
<python> "<skill-dir>/scripts/render_candidate_report.py" --data "<interviewer-report-data.json>" --output "<candidate-report-file>"
<python> "<skill-dir>/scripts/validate_candidate_report.py" "<candidate-report-file>"

To check subsequent timelines, you may repeatedly pass in --consistency-check-json. Each parameter is a JSON object containing event、date and source_locator when there is a clear contradiction. timeline_conflict。

The renderer will reject output whose filename does not contain the candidate's name.

8. Validation and delivery

Continue validating the backend objects:

<python> "<skill-dir>/scripts/validate_case_contract.py" --job-model "<job-model.json>" --sources "<sources.json>" --evidence-ledger "<evidence-ledger.json>" --blueprint "<interview-blueprint.json>" --score-state "<score-state.json>" --assessment-data "<assessment-data.json>"
<python> "<skill-dir>/scripts/validate_source_log.py" "<sources.json>"
<python> "<skill-dir>/scripts/validate_evidence_ledger.py" "<evidence-ledger.json>"
<python> "<skill-dir>/scripts/calculate_interview_score.py" --blueprint "<interview-blueprint.json>" --state "<score-state.json>"

Write the command, time, exit code, errors, and warnings to audit/validation.json. At delivery, explain the case directory, HTML file, number of sources adopted and rejected, key unknowns, validation results, and content still requiring manual confirmation.

Stop conditions

  • REQUIRED_INPUT_MISSING: missing resume or job requirements;
  • PDF_VISUAL_CHECK_UNAVAILABLE: the current host cannot complete page-by-page visual verification of the PDF;
  • AUTHORITY_UNCONFIRMED: unable to confirm the right to process the resume;
  • IDENTITY_UNRESOLVED: the identity on the candidate's career page cannot be confirmed;
  • PRIVATE_ACCESS_REQUIRED: requires logging into a private account or bypassing permissions;
  • SENSITIVE_DATA_HIT: online results contain private or sensitive content that should not be processed;
  • CONTACT_DETAIL_LEAK: email addresses, mobile phone numbers, ID numbers, or other contact information that should not be displayed appear in interviewer data or the HTML;
  • JOB_RELEVANCE_MISSING: the information cannot be mapped to job tasks;
  • AUTOMATED_ADVERSE_ACTION: Requires automatic rejection, ranking, or triggering adverse decisions;
  • HUMAN_REVIEW_MISSING: Intends to use results without human confirmation for hiring decisions.

Stopping a networked branch does not prevent continued processing of approved local materials.

Complete check

  • The PDF has passed text extraction and page-by-page visual inspection.
  • Photo status has been confirmed page by page; when a photo is displayed, its normalized bytes, dimensions, hash, original PDF hash, page number, and extraction location are traceable, non-displayed metadata and trailing content have been removed, and no public avatars or biometric analysis have been used.
  • Backend positions, evidence, sources, blueprints, and scoring objects are mutually traceable.
  • The HTML file name, browser title, and page main heading all contain the candidate's name.
  • The HTML has only three main modules, and the number of questions is 12–18.
  • The interviewer data and HTML do not contain email addresses, mobile phone numbers, ID numbers, or precise addresses.
  • Schools, employers, and cities explicitly provided by the candidate have been summarized; missing items have not been inferred.
  • When birth information exists, age has been converted according to the report date, and resume-based estimation is disabled; when birth information does not exist, the age fact displays "not provided," and resume-based estimation objects are generated according to explicit undergraduate time anchors, or insufficient evidence/time conflicts are transparently recorded.
  • Photos, age (including resume-based estimation intervals), native place, and marital status have not entered job matching, scoring, stability judgment, or ranking.
  • Resume doubts are ranked by job importance, using neutral, plain Chinese.
  • Questions can be read directly, and judgment references and plus/minus scoring criteria are specific.
  • Highlighting, answers, notes, local recovery, export, and clearing are all available.
  • The page is available offline, has no external resources, safely escapes text, and is readable on mobile.
  • The final output does not contain automatic hiring, elimination, ranking, personality diagnosis, or false certainty.