Repository navigation
Description
Контекст
Добавить в проект новую группу reference-проектов — по работе с резюме (генерация, хранение, адаптация под вакансию). Это отдельный трек от уже утверждённых трёх references по автооткликам (#590), у которых другая предметная область.
Мотив: цель пользователя — максимизация дохода, и качество резюме напрямую на неё влияет. Сейчас в hhru резюме — внешний артефакт на hh.ru; мы его только поднимаем (bump) и читаем. Идея адаптации резюме под конкретную вакансию, машинно-читаемого хранения и предсказуемой генерации в проекте не проработана.
Кандидаты по задачам
| Задача | Проекты |
|---|---|
| Проверить и адаптировать резюме под конкретную вакансию | Resume Matcher |
| Собрать резюме через веб-интерфейс | Reactive Resume, OpenResume |
| Получить предсказуемый машинно-читаемый PDF | RenderCV, sb2nov/resume |
| Хранить резюме как структурированные данные | JSON Resume CLI, YAMLResume |
| Нужен готовый минималистичный LaTeX-шаблон | McDowell CV |
Метрики (снято 2026-08-26 через GitHub API)
Отсортировано по звёздам.
| Проект | ★ | Коммиты | Контриб. | Open PR | Open issues | Язык | Лицензия | Последний push |
|---|---|---|---|---|---|---|---|---|
| AmruthPillai/Reactive-Resume | 41741 | 5754 | 221 | 6 | 112 | TypeScript | MIT | 2026-08-25 |
| srbhr/Resume-Matcher | 28247 | 1456 | 83 | 44 | 22 | TypeScript | Apache-2.0 | 2026-08-11 |
| rendercv/rendercv | 17431 | 1961 | 59 | 33 | 40 | Python | MIT | 2026-05-01 |
| xitanggg/open-resume | 8862 | 36 | 6 | 46 | 98 | TypeScript | AGPL-3.0 | 2024-10-29 |
| sb2nov/resume | 6933 | 51 | 12 | 14 | 21 | TeX | MIT | 2026-05-17 |
| jsonresume/resume-cli | 4719 | 596 | 61 | 0 | 6 | JavaScript | MIT | архивирован |
| dnl-blkv/mcdowell-cv | 2704 | 38 | 3 | 4 | 14 | TeX | MIT | 2024-05-10 |
| yamlresume/yamlresume | 1503 | 454 | 18 | 8 | 20 | TypeScript | MIT | 2026-08-26 |
Что сразу видно из метрик
Звёзды здесь плохой одиночный критерий — их надо читать вместе с активностью и лицензией:
jsonresume/resume-cliархивирован. 4.7k звёзд, но репозиторий заморожен. Сам формат JSON Resume при этом остаётся живым стандартом — как reference стоит рассматривать спецификацию формата, не этот CLI.open-resume— AGPL-3.0. Несовместима с портированием кода в наш проект; допустим только clean-room перенос поведения. Плюс последний push — октябрь 2024, 36 коммитов, 6 контрибьюторов, 46 открытых PR при 98 issues: соотношение говорит о заброшенности.mcdowell-cv— 38 коммитов, 3 контрибьютора, push май 2024. Это по сути готовый шаблон, а не развивающийся проект. Для роли «взять LaTeX-шаблон» этого достаточно, но как источник архитектурных решений он бесполезен.rendercv— единственный на Python, что важно для нашей кодовой базы: потенциальное переиспользование, а не только идей. 1961 коммит, 59 контрибьюторов, MIT.Reactive-Resume— самый живой (5754 коммита, 221 контрибьютор, push вчера), но это полноценное веб-приложение, а мы CLI-first. Ценность — в модели данных и наборе полей, не в архитектуре.Resume-Matcherближе всего к реально нужной нам задаче (адаптация резюме под вакансию), Apache-2.0, активен. 44 открытых PR при 22 issues — стоит проверить, не разъезжается ли проект.
Что сделать
Это issue на фиксацию references, не на портирование. Дальнейшая работа — отдельным research-issue по образцу #590.
- Зафиксировать ревизии (commit SHA) выбранных проектов, чтобы research был воспроизводим.
- Отсеять кандидатов, не проходящих по лицензии/активности:
open-resume(AGPL + заброшен),resume-cli(архивирован — брать спецификацию формата вместо кода). - Определить, какая из задач таблицы вообще релевантна
hhru. Проект CLI-first и работает с резюме, которое живёт на hh.ru, — веб-конструктор резюме и генерация PDF могут оказаться вне скоупа целиком. Это главный вопрос, и ответить на него надо до любого research по коду. - Для прошедших фильтр — research по исходникам (не по README), с привязкой к
file:line.
Критерии приёмки
- Список references зафиксирован с ревизиями и лицензиями.
- По каждому отсеянному явно записана причина отсева.
- Есть ответ на вопрос, какие задачи из таблицы релевантны CLI-инструменту для hh.ru, а какие нет.
- Ни одна рекомендация не основана только на README или числе звёзд.
Activity
axisrow commentedon Aug 29, 2026
Отложено (2026-08-29)
Решение пользователя: сейчас не приоритет. Воркера не спавнить, пока не будет явной просьбы.
Что изменилось с момента заведения issue
Тело писалось 2026-08-26 с посылкой «идея адаптации резюме под вакансию в проекте не проработана». За три дня эпик #750 закрыл три из пяти задач таблицы своими силами, без портирования:
CandidateFactsв конфиге, PR feat(config): структурированные факты кандидата в конфиге (#751) #756);Кластеры при этом сняты с живой выдачи hh.ru (#752, 432 вакансии), а не заимствованы у reference-проекта.
Что осталось бы делать при возврате к задаче
Главный вопрос issue («какие задачи таблицы релевантны CLI-инструменту, работающему с резюме на hh.ru») теперь имеет предварительный ответ: релевантен один кандидат — Resume-Matcher (Apache-2.0, активен), это сверка резюме с вакансией. Остальные семь отсеиваются:
open-resume— AGPL-3.0 + заброшен (push 2024-10);resume-cli— архивирован (брать спецификацию формата, не код);То есть при возврате разумный скоуп — узкий research по одному Resume-Matcher по образцу #590, а не аудит восьми проектов.
Метрики в теле снимались 2026-08-26 и к моменту возврата устареют — пересчитать.
axisrow commentedon Aug 30, 2026
Ресерч завершён (2026-08-30), README обновлён
PR: (создаётся, см. ниже). Метрики в теле issue пересчитывать не стал —
скоуп уже сузился комментарием от 2026-08-29 до одного кандидата
(Resume-Matcher), пересчёт восьми проектов был бы избыточен для узкого
research.
Разбор по коду (не по README)
srbhr/Resume-Matcher — единственный прошедший фильтр. Ревизия
116f9cc3b00e1ac91734a6c2679bf41ea64a0edc(main, push 2026-08-11),Apache-2.0, Python (FastAPI) backend + TypeScript frontend.
Прочитан код
apps/backend/app/services/:ats.py— чисто локальный (без LLM) скоринг совпадения резюме/вакансии:keyword_match (0.55) + skills_coverage (0.25) + section_completeness (0.20).
improver.py::_ALLOWED_PATH_PATTERNS/_BLOCKED_FIELD_NAMES— LLMправит резюме под вакансию только через regex-whitelist путей
(summary, description-поля, списки skills/languages/certs); поля вроде
company/institution/title/years в blocklist — LLM физически не может их
тронуть.
refiner.py::validate_master_alignment— постфактум-проверка: любойнавык/сертификат/работодатель в адаптированной версии, которого нет в
исходном («мастер») резюме, репортится как
fabricated_*critical-нарушение.Это предметный аналог нашего входного гейта в
questionnaires/(
STRICT_CLUSTERS+templates.is_compliance_text, см. CLAUDE.md) —только на другом конце: не gate до генерации, а verify после. Полезно
как референс для будущей задачи «адаптация резюме под вакансию», если она
появится отдельным issue.
Отсеяно (причины зафиксированы в README)
скоупа (наше резюме живёт на hh.ru, правится по DOM). OpenResume
дополнительно AGPL-3.0 (портирование кода закрыто) + заброшен (push 2024-10).
вне скоупа по той же причине (наш артефакт — не файл).
внутри проекта (
CandidateFacts, feat(config): структурированные факты кандидата для адаптации резюме #751), без заимствования.Ответ на главный вопрос issue
Из восьми задач таблицы кандидатов CLI-инструменту для hh.ru релевантна
ровно одна — адаптация резюме под вакансию (Resume-Matcher). Веб-
конструктор, генерация PDF и отдельное JSON/YAML-хранение резюме вне
скоупа: у нас резюме — внешний артефакт на hh.ru, а не локальный файл.
Правка README: новая подгруппа «Адаптация и хранение резюме» в разделе
«Похожие проекты» (после «Поднятие резюме»).