JobOK: an evidence-driven job-search Agent Skill for Chinese-speaking candidates
Job OK: 面向中文求职者的证据驱动求职 Agent Skill,支持优势挖掘、岗位匹配、简历优化、面试训练和投递跟踪。
At a glance
- What is it?
- JobOK turns real experience into a traceable evidence chain for resumes, job matching and interview practice. It refuses to invent history or auto-apply, which is the point and also the limit.
- Who is it for?
- JobOK suits Chinese-speaking candidates who already have real experience but cannot articulate it, and who are willing to answer probing questions and paste real job descriptions themselves. It is the wrong tool for anyone who wants automated mass applications or a resume rewritten without their input.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 92 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 18, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The problem JobOK targets: resumes that say "assisted" and interviews that fall apart
The README opens with a diagnosis rather than a feature list: many candidates do not lack ability, they lack a way to describe it. The stated symptoms are concrete. Resumes default to "participated, assisted, responsible" with no action and no result. Interviewers push on project details and the story collapses. Candidates read many job descriptions without knowing which ones to target. And when they use AI to edit a resume, the edit slides from phrasing improvement into packaging and fabrication.
JobOK is built for that last failure mode in particular. It is aimed at Chinese-speaking job seekers, including students, interns and career switchers, who have real material (coursework, internships, clubs, part-time work, self-study, even failed projects) but no structure for turning it into something a hiring manager can verify. The README is explicit that it is not a shortcut: it describes itself as a system that forces you to explain yourself clearly. That framing matters, because it sets the expectation that the user does most of the work and the Agent does the interrogation.
How the evidence chain works: from profile.yaml to application-tracker.csv
The architecture is a local file workflow, not a service. The README shows the intended pipeline as a vertical flow: real experience, then an evidence chain, then job signals, then matching against real job descriptions, then resume versions, then an interview story bank, then application tracking and review.
Each stage produces a named artifact. Intake produces profile.yaml and asks about target city, target role, constraints and risks before touching the resume. The experience asset library produces experience-assets.md. Strength mining produces strengths.md, and the README states that every strength must complete the chain evidence, behavior, capability, job signal. Role hypotheses produce target-roles.csv with three to five testable directions, which the README contrasts with personality-based fortune telling. Job description normalization produces jobs.jsonl from descriptions, screenshots, links or exported tables the user supplies. Matching produces job-matches.csv, scored on evidence, hard requirements, interest, practical constraints and risk. Resume review produces resume-review.md, where every suggestion must trace back to real experience and anything lacking evidence is tagged needs_proof. Interview training produces interview-story-bank.md. Tracking produces application-tracker.csv with applications, replies, interviews, rejections and review notes.
The design decision worth noting is the needs_proof tag. Instead of silently filling a gap with plausible language, the system marks the gap and leaves it visible. That is a deliberate trade-off: the output reads worse than a polished AI rewrite, but it stays defensible when an interviewer asks where a claim came from.
Installing JobOK into an Agent Skill directory
The README offers three installation paths. The preferred one is to let the Agent install it. In Codex, Claude Code or another Agent that supports Skills, you paste the repository URL and ask the Agent to install it. The Agent places the repository in the corresponding local Skill directory. After that, restart the Agent or open a new session.
The README gives this example prompt, which also doubles as the first real use:
$job-ok
我是应届生,目标是深圳的 AI 应用实习/产品运营实习。
我会上传简历,并粘贴 3 个真实 JD。
请先问我必要问题,再帮我建立求职案例目录。What you should see is the Agent asking clarifying questions before creating a case folder, rather than immediately rewriting a resume. The README is explicit that Intake comes first.
If automatic installation is unavailable, the manual fallback is a clone into the Skill directory. The Codex example is:
git clone https://github.com/GresonKwan/JobOK.git ~/.codex/skills/job-okFor project-scoped use, the README shows cloning into a project directory instead:
git clone https://github.com/GresonKwan/JobOK.git .agents/skills/job-okDependencies are optional. The README states that basic use needs no dependencies, and that parsing PDF or DOCX resumes is what requires requirements-optional.txt. That install can use a mainland-China mirror:
python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements-optional.txtPer-tool instructions for Claude Code, Codex and project-level installs live in docs/install-cn.md.
The case folder is the actual product surface
JobOK writes everything into a dated case directory under job-search-cases, named with a date and a user slug. The README lists the full layout: brief.yaml, a raw folder split into resume and job-posts, then profile.yaml, experience-assets.md, strengths.md, target-roles.csv, jobs.jsonl, job-matches.csv, resume-review.md, a resume-versions directory, interview-story-bank.md, interview-practice.md, application-tracker.csv and review-log.md.
This is a plain-file design, and it has consequences worth stating. You can diff two resume versions, you can read job-matches.csv in a spreadsheet, and you can keep the whole thing under version control. Nothing requires a database or a running server. The cost is that the folder is only as good as what you put in it: if you paste three job descriptions, matching runs against three job descriptions. The README's own matching example acknowledges this by telling the Agent to keep roles scoring below 60 in an observation pool rather than recommending them, which implies the score is a filter for a small, user-supplied set, not a market-wide ranking.
What JobOK will not do, and when it is the wrong tool
The README devotes a section to refusals, and they are specific: it will not fabricate experience, will not promise an offer, will not auto-apply, will not message recruiters automatically, will not bulk-crawl recruitment platforms, will not bypass logins, captchas or platform restrictions, and will not rank candidates or make hiring decisions for employers.
That list rules out the most common reason people search for a job-search tool. If your goal is to submit hundreds of applications while you sleep, JobOK is not that and says so. The safety section adds that users may paste job descriptions from Boss Zhipin, Liepin, LinkedIn or a university careers site, and may upload screenshots, exported tables or visible browser pages, but that JobOK only organizes and analyzes information the user is authorized to provide. Every application, direct message, resume submission or platform action is meant to be confirmed and executed by the user.
There is a second limitation that is less about policy and more about design. The evidence chain is only as strong as the user's willingness to be questioned. A candidate who wants a finished resume in one pass will find the intake questions, the needs_proof tags and the one-question-at-a-time interview drill slow. The README's own interview example asks the Agent to check structure, evidence, job relevance, filler and risk expression, and to ask only one follow-up question at a time. That pacing is deliberate, and it is also friction.
How JobOK differs from a general-purpose resume AI
The obvious alternative is a general writing assistant: paste a resume and a job description, ask for a rewrite, get polished bullets in one turn. That approach optimizes for output speed and surface quality. JobOK optimizes for traceability. The difference shows up in what each produces when evidence is missing. A general assistant will usually produce a confident sentence anyway, because fluency is the objective. JobOK's resume-review.md is supposed to mark that gap as needs_proof instead.
A second contrast is scope. A resume rewriter touches one document. JobOK maintains a case folder where the resume is one artifact among several, connected to strengths.md, job-matches.csv and interview-story-bank.md. The interview story bank is the part a single-document tool has no place for, and it is arguably where the value compounds: the same evidence chain that justifies a resume bullet also supplies the follow-up answer when an interviewer probes it.
The trade-off is real in both directions. JobOK requires more input, produces messier intermediate files and depends on an Agent host that supports Skills. A one-shot rewriter works anywhere and finishes in seconds. If you already write precise, evidence-backed resumes and only need tone edits, JobOK's structure is overhead.
Maintenance, licence and what to check before committing
JobOK is MIT licensed, which permits commercial and private use, modification and redistribution provided the copyright notice and licence text are retained. That is a permissive choice with few obligations, but it is not legal advice, and anyone embedding it in a product should read LICENSE and their own counsel's view.
The repository is not archived. The last push was on 2026-06-18, which is roughly three months before today, so the code has moved recently enough that describing it as unmaintained would be inaccurate, while calling it actively developed would overstate what a single push date proves. There are no retrieved releases, so installation means cloning the default branch rather than pinning a version tag. That matters for reproducibility: if you clone today and clone again in six months, you may get different behavior with no changelog entry you were forced to read. CHANGELOG.md exists in the repository root, so checking it before and after an upgrade is the practical habit.
Upgrade cost is low by construction. The Skill is a set of markdown references, templates, scripts and an agents/openai.yaml manifest, with no service to redeploy. The one thing to watch is the case folder format. If a future change alters the schema of jobs.jsonl or job-matches.csv, existing case directories may not line up with new tooling, and the README does not document a migration path. Keeping case folders under version control makes that visible rather than silent.
Editorial conclusion
JobOK suits Chinese-speaking candidates who already have real experience but cannot articulate it, and who are willing to answer probing questions and paste real job descriptions themselves. It is the wrong tool for anyone who wants automated mass applications or a resume rewritten without their input. Before adopting it, read docs/safety-cn.md for the data boundary, check that your Agent supports Skill installation into ~/.codex/skills/job-ok or a project-level .agents/skills/job-ok directory, and confirm whether you need the optional PDF and DOCX parsing dependencies.
Frequently asked questions
Does JobOK automatically apply to jobs for me?
No. The README states directly that JobOK does not auto-apply, does not message recruiters automatically, and does not bulk-crawl recruitment platforms. Any application, direct message or resume submission is left for the user to confirm and execute.
Do I need to install Python dependencies to use JobOK?
Basic use needs no dependencies, according to the README. The optional requirements-optional.txt is only needed when parsing PDF or DOCX resumes, and the README offers a Tsinghua PyPI mirror command for that install.
Where does JobOK store my resume and job description files?
It creates a dated case folder under job-search-cases, named with a date and a user slug. The layout includes a raw folder with resume and job-posts subdirectories alongside profile.yaml, jobs.jsonl and the other generated artifacts.
Community notes