SuperAPI AI Directory

qiaomu-campus-resume

Office & productivity

View repository

Updated 10-15 16:46

About this skill

Qiaomu University Student Résumé

Organize scattered, real student experience into a submittable, editable, reviewable HTML and PDF résumé. Credible content takes priority over rhetoric, and job relevance takes priority over stacking information.

Usage Boundaries

  • Applicable: current students, recent graduates, and early-career job seekers within three years of graduation; by default, it covers both Chinese campus recruitment and technical positions.
  • Not applicable: academic application CVs, senior executive résumés, portfolio websites, cover letters, proxy submissions, or recruitment platform account operations.
  • Do not promise "pass rates," "interview invitation rates," or ATS scores; only report the structure, keywords, text extraction, and file checks actually performed.
  • Do not fabricate companies, projects, responsibilities, tech stacks, awards, user numbers, or performance figures. All verifiable statements must enter the factual evidence chain.

Four Capability Routes

First determine the materials the user already has and their explicit intent; do not pull every request back into the same interview set:

Entry First Action Completion Condition
Write a résumé from scratch via Q&A Read Conversational Interview and Collection, start from the target position or the strongest experience, and ask only one question per round The fact ledger passes the interview gate and is confirmed by the user, then generate the default single-theme PDF
Provide old résumé optimization First extract and restate the existing facts, do not ask again; when the user wants content changes, only ask about gaps that would change the expression Content optimization goes through the full evidence gate; layout-only changes go through the "layout fast path"
Provide JD-targeted customization Simultaneously extract the JD's required qualifications, preferred qualifications, and responsibilities, and build a JD 要求 → 已有证据 / 缺口 → 简历位置 mapping Only write keywords that have evidence; clearly mark gaps, and do not disguise JD requirements as candidate skills
Generate multiple styles at once Fix the same confirmed set of facts and directly use --all-themes to generate six core themes Six HTML/PDF files, checklists, and batch verification all pass, and each page is reviewed

Layout Fast Path: Use only when the user explicitly requests "do not change the content, only beautify/rearrange/change the template." Run extract_resume.py, show the extracted summary of name, education, experience, skills, and timeline, and ask the user to confirm once; then use source_resume to mark the original facts, run validate_resume.py and render. Do not force the user to add two new pieces of evidence, and do not make unsolicited content rewrites; if the original text has contradictions, placeholders, or missing contact information that affect submission, ask only one blocking question, and omit anything that cannot be confirmed or mark it as a draft.

Compact Workflow

  1. Create a working directory: Create a separate output directory in the user's workspace; keep the original files, do not overwrite, rename, or upload them to external services.

  2. Choose an entry point according to the four capability routes and start the conversation:

    • If there is an old résumé: run scripts/extract_resume.py Extract text and preserve the source path; when a scanned document has no text, perform OCR only after obtaining explicit consent.
    • No old resume, insufficient information, or user requests an interview: must read Conversational interview and collection, using a one-question-one-answer mode. Ask only one core question per round, and include the current judgment that the user can correct; do not send a giant questionnaire.
    • With a job JD: simultaneously extract must-have requirements, nice-to-haves, job duties, keywords, and mismatches; without a JD, generate a general version based on the target job family.
  3. Dig deep and maintain the fact ledger: except for the pure formatting quick path, prioritize following the strongest experience to probe layer by layer into the situation, personal responsibilities, key actions, results, evidence, and interview explainability; every 2–3 rounds, restate the confirmed facts and remaining gaps in no more than 5 items. Write the process locally to interview-ledger.json, mark publicly shareable results as evidence_type. Follow authenticity and evidence。

  4. Determine strategy: must read resume writing and formatting best practices and content and job strategy, establish the JD 要求 → 证据 → 简历位置 mapping; choose the target job, language, and one-page/two-page limit. According to Six-theme system select the core theme, and follow font and print typography system. When the user mentions ResumeCollection, a template number, or wants to see more concise options, read ResumeCollection concise reference catalog, and choose a single restructuring preset or a six-preset comparison output.

  5. Pass generation gate: when creating from 0, optimizing content, or customizing for a JD, run python3 scripts/assess_interview.py interview-ledger.json; only after the target job, basic information, education, two usable pieces of evidence, skills evidence chain, key doubts, and personal confirmation all pass may you proceed to final generation. The pure formatting quick path changes to the four gates of "source extraction successful, fact summary confirmed,source_resume evidence types complete,validate_resume.py passed." If the user asks to stop midway, deliver the fact summary and precise gaps; unless the corresponding gate is passed, only clearly labeled draft JSON/HTML may be generated, and the PDF must not be disguised as the final version.

  6. Confirm and draft the data file: first show the user a brief fact summary of "target job / core experience / usable numbers / skills / discarded items / remaining doubts" and obtain explicit confirmation. Then according to data contract write resume-data.json; when estimation is needed, it must be conservative, explicitly marked, and confirmed by the student.

  7. Content review: check each bullet's action, context/scope, result, and evidence according to A-C-R-E; check the timeline, individual/team boundaries, correspondence between skills and projects, numerical evidence, spelling, links, section order, and naturalness of job keywords. After running validate_resume.py , handle warnings one by one for weak responsibility words, overly long bullets, isolated skills, and insufficient result signals; do not fabricate numbers just so that "every item has a number."

  8. Render: by default, generate only one most suitable resume:

    python3 scripts/render_resume.py resume-data.json --theme tech --output-dir output
    

    By default, choose one core theme based on the job, and automatically choose sparse / balanced / dense density based on the actual content volume, generating one HTML and a text-based PDF; only when the user explicitly requests a comparison, use --all-themes Or refer to the preset batch command. Border declarations are only allowed for page headers and section titles. border-bottom Divider lines; prohibited: border-radius, closed borders, top edges, side rules, sidebars, and card outlines. Light page-header washes without outlines or rounded corners, or full-width horizontal section color bands, are allowed. Chinese PDFs must actually embed the locally declared font of the theme; the Kami theme requires TsangerJinKai02 W04, and W05 is used for titles only when installed.

    Use when the user selects the ResumeCollection reference preset:

    python3 scripts/render_resume.py resume-data.json --reference-style rc-071 --output-dir output
    # 或一次生成六个参考预设
    python3 scripts/render_resume.py resume-data.json --all-reference-styles --output-dir output
    
  9. Acceptance: For a single theme, run first validate_resume.py --theme <id>; for batch comparison only, run:

    python3 scripts/validate_style_set.py resume-data.json output/resume_六风格清单.json --output output/validation-all.json
    

    Single-theme output can still use validate_resume.py --theme <id>. Then follow Visual and PDF acceptance to convert each page into an image and inspect page by page; confirm there is no overflow, orphan line, break, overlap, or abnormal blank space, and that pdftotext can read out the name, contact information, and standard sections.

  10. Delivery: By default, provide 1 final PDF, the corresponding HTML,resume-data.json and a validation report; for from 0, content optimization, or JD customization, additionally provide interview-ledger.json, and for the pure layout fast path, additionally provide the source extracted text. Only deliver multi-theme files when the user explicitly requests a comparison. Use no more than 5 notes to explain positioning, core content trade-offs, and facts that still require the person's confirmation.

Router Rules

  • Default to one page; first delete weak information, and only expand to two pages when real and role-relevant internships/projects still cannot be clearly presented with body text no smaller than 9.1pt.
  • When no style is specified, let the content and role determine one default theme and generate one; only generate six sets when a comparison is explicitly requested, and when a theme is explicitly specified, generate only that theme.
  • When the user says "generate multiple/different styles/generate all at once for comparison," by default generate six core themes at once, without first asking them to choose a single template; all versions must share the same factual data.
  • When the user only asks to beautify or rearrange an old resume, take the layout fast path and preserve the original facts and wording boundaries; do not automatically expand "beautify" into fabricated quantified results or rewritten career experience.
  • When the user provides a JD, first give a requirements-evidence-gaps summary, then rearrange and rewrite according to the evidence; JD keywords without evidence must not enter the skills section or experience bullets.
  • The ResumeCollection reference presets are an explicit option and are not mixed into the default core six themes; when a number is specified, generate only that preset, and only generate all six reference presets when a comparison is requested.
  • Reference presets only absorb the layout skeleton; copying or packaging upstream DOCX, preview images, photos, icons, and fonts is prohibited.
  • All six themes are single-column with standard sections; do not use "two columns look better" as a reason to sacrifice ATS text order.
  • When the target role is unclear, first provide 1 default direction and at most 2 alternatives based on experience evidence; only ask follow-up questions when the choice would significantly change the content.
  • In conversational interviews, ask only one core question at a time; the question must include the current judgment or recommended answer, and allow the student to correct it directly. Do not request the entire resume's fields in bulk in one message.
  • After digging deep into one experience until the "personal contribution-action-result-evidence-explainability" loop is closed, then switch to the next one; do not repeatedly ask for information the user has already proactively covered.
  • "Whatever," "you decide," and "should be about right" do not equal factual confirmation; first give a specific restatement and require confirmation. The user can say "skip," "I don't know," or "stop the interview" at any time.
  • For technical roles, prioritize projects, technical decisions, personal contributions, and explainable results; for non-technical roles, replace "skills" with role-relevant competencies and tools.
  • Keywords may only be added when supported by facts; skills mentioned in the JD must not be written into the candidate's resume just because they "match."
  • For weak experience, prioritize uncovering scope, complexity, constraints, collaboration, and completeness; do not force it into commercial impact.
  • Contact information and personal links in the output are private data; do not write them into reports, examples, logs, or external services.

Gate Ladder

  • Interview gate: when starting from 0, doing content optimization, or JD customization,assess_interview.py the goal, basic information, education, at least two role-relevant pieces of evidence, skill evidence chain, zero blocking doubts, and explicit self-confirmation must be confirmed; if not passed, only a factual summary or draft may be delivered.
  • Formatting fast-path gate: old resume extraction succeeds, factual summary is confirmed by the user, each experience has source_resume evidence type,validate_resume.py passes; the user is not required to redo two in-depth interviews just to change the layout.
  • Content gate:validate_resume.py key fields, evidence types, timeline, links, section order, and placeholders must be confirmed; weak responsibility words, isolated skills, overly long bullets, and insufficient result signals must be fixed or supported by factual basis. If the pure formatting fast path retains a source warning because the user explicitly prohibits copy changes, the delivery must state "only formatting optimized, content optimization not completed," and must not silently rewrite or claim the content has been optimized.
  • Rendering gate: HTML and PDF must be generated from the same JSON; at least one border-bottom divider,border-radius and closing/top/side border declarations must be 0.
  • Theme gate: core theme ID, reference preset ID, core color, target font, and HTML's data-theme / data-reference-style must be consistent; batch output must contain exactly six list entries.
  • Typography gate: HTML must use the 1.5 typography system and adaptive density markers, and declare the target Chinese font and Latin font layers; px, italic, link color blocks, and incorrect capitalization of technical terms must be 0.
  • PDF gate: A4, 1–2 pages, unencrypted, text extractable, contains key fields; for Chinese use pdffonts to prove the theme target font is actually embedded, where Kami must be TsangerJinKai02.
  • Visual gate: each page must be actually reviewed; only deliver after there is no cropping, overlap, breakage, orphan lines, or abnormal blank space.

Output Contract

  • Conversation: natural chat-style question and answer; 1 core question per round, with the current judgment; regularly restate confirmed facts and the next gap.
  • Fact ledger: when starting from 0, doing content optimization, or JD customization, local interview-ledger.json stores confirmed facts, doubts, evidence associations, and confirmation status; the pure formatting fast path may skip creating an interview ledger, but must retain the local extracted text and one fact confirmation. Neither is uploaded to external services.
  • PDF: one set by default; A4, 1–2 pages, text selectable and extractable, no password, no remote font/image dependencies. Batch comparisons are generated only when the user explicitly requests them.
  • HTML: same source as the final PDF, locally modifiable, fixed print styles.
  • JSON: stores content and evidence types; do not render private source notes into the public resume.
  • Six-style list: record theme ID, Chinese name, applicable scenarios, and delivery path.
  • Reference style list: when selecting batch reference presets, additionally record preset ID, base theme, source number, source link, and delivery path.
  • Verification report: record structure, facts, color, fonts, page count, text extraction, and file checks by topic; aesthetic conclusions must come from actually viewing page by page.

Copyright (c) 向阳乔木 X: https://x.com/vista8 · GitHub: https://github.com/joeseesun/