career-fit-cn
其他 活跃维护

career-fit-cn

whaojie797-design/career-fit-cn

智能体框架提供中国本土化候选人岗位匹配评分能力,基于五项加权维度评估候选人适配度,同时内置年龄歧视、996、竞业限制等本土化风险识别规则,可直接接入招聘类智能体工作流。

0
Stars 标星
0
Forks 分支
0
Watchers 关注
0
Open Issues
Python
主要语言
MIT
开源协议
185 KB
仓库大小
1 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:whaojie797-design/career-fit-cn
git clone https://github.com/whaojie797-design/career-fit-cn.git
git clone git@github.com:whaojie797-design/career-fit-cn.git
README.md main

MIT
Python
Zero deps
CI

career-fit-cn

China-aware candidate ↔ role fit scoring — for agents.

中国职场适配度评估:把中国职场特有的制度性因素(35 岁门槛、996/大小周、竞业协议、城市/落户、薪资现实度)量化进「候选人 ↔ 岗位」的适配度评分,并明确标注红线。

demo


Before / After

Before — An agent judging a JD only looks at skill overlap, ignores
institutional risk, and gives over-optimistic advice that falls apart on the
ground (age ceilings, 996, non-compete).

After — A fit report with China-specific landmines flagged: total score +
five dimension breakdowns + red-flag warnings + next-step suggestions for the
agent.


What it does

  • assess — score a candidate profile against a role, output a structured
    fit report (FIT_REPORT.md + fit-state.json, machine-readable for agents).
  • report — re-render the last report from the store.
  • Five weighted dimensions: skill (0.35) · experience (0.20) ·
    location (0.15) · compensation (0.15) · redflag (0.15).
  • China-specific red flags: age_35 (candidate age ≥ 35 → heavy penalty),
    996 / size_week (candidate declines → penalty), non_compete (candidate
    declines → caution penalty). Any triggered flag marks the report HIGH_RISK.
  • Zero third-party dependencies — pure standard library; a tiny YAML-subset
    parser (or JSON) is included. No pip install.

Install

Clone into your agent's skills directory. No pip install required.

Codex

git clone https://github.com/whaojie797-design/career-fit-cn ~/.codex/skills/career-fit-cn

Claude Code

git clone https://github.com/whaojie797-design/career-fit-cn ~/.claude/skills/career-fit-cn

Cursor

git clone https://github.com/whaojie797-design/career-fit-cn ~/.cursor/skills/career-fit-cn

Quick start

python scripts/fit.py assess --profile profile.yml --role role.yml --store .fitstore
python scripts/fit.py report --store .fitstore

profile.yml / role.yml accept either a small YAML subset or JSON.

# profile.yml
skills: [Python, Kubernetes, PostgreSQL]
years: 7
age: 32
city: 上海
expect_salary: 55
accept_996: true
accept_noncompete: true
# role.yml
required_skills: [Python, Kubernetes, PostgreSQL]
min_years: 5
city: 上海
salary_range: [50, 70]
redflags: ["996"]

Sample report (real)

$ python scripts/fit.py assess --profile profile.yml --role role.yml --store .fs
Total fit: 91/100   Risk: HIGH_RISK
  skill        100   (missing: none)
  experience   100   (10 yrs vs 8 required)
  location     100   (上海 vs 上海)
  compensation 100   (expect 60 vs [50.0, 80.0])
  redflag      40   (1 triggered)

Suggestions:
  - 重点确认年龄门槛:该岗位存在 35 岁风险,建议优先核实 JD 与实际用人偏好

A clean match (all dimensions 100, no red flags triggered) reports
Total fit: 100/100 Risk: OK.


How it works

  1. Load profile and role (YAML subset or JSON).
  2. skill — coverage of required skills by the candidate's skills.
  3. experience — years vs required, linear penalty below the bar.
  4. location — city equality vs mismatch.
  5. compensation — expected salary vs the role's range (over-asking penalized).
  6. redflag — subtract China-specific penalties for each triggered flag.
  7. Total = weighted sum; HIGH_RISK if any red flag fires, else LOW_FIT if
    skill/experience < 40, else OK.
  8. Write FIT_REPORT.md + fit-state.json.

Everything is deterministic; the test suite runs entirely against local
fixtures (tests/fixtures/).


Limitations

  • Scoring is heuristic and explainable, not a hiring decision. It surfaces
    risk factors; a human still decides.
  • City matching is exact-string only (no 同城圈 / 落户 equivalence logic).
  • Only the documented red-flag tags are recognized; unknown tags are recorded
    but not auto-penalized. Extend score.py (_REDFLAG_PENALTY) to add more.
  • Salary comparison treats the range as annual, in the same unit as
    expect_salary; it does not adjust for 13薪 / 股票 / 补贴.

License

MIT © 2026 whaojie797-design