job-resume-agent
job-resume-agent
Система адаптации резюме, основанная на доказательствах. Получив описание вакансии, обнаруженное в браузере, и структурированный банк опыта, собранный пользователем, она создаёт резюме в формате LaTeX/PDF, читаемое ATS, где каждый пункт прослеживается до конкретного доказательства, предоставленного пользователем. Любая формулировка, которую модель вывела, обобщила или перефразировала, наглядно помечается и должна быть одобрена пользователем перед экспортом.
Продукт отказывается выдумывать. Если требуемый навык или достижение не подкреплено доказательствами, система прямо сообщает об этом, а не выдумывает их.
Статус: проверка концепции. Репозиторий включает детерминированный MCP-сервер, модуль привязки доказательств, безопасный рендерер LaTeX, CLI и тесты. В него пока не входят расширение для Chrome и адаптеры внешних LLM-провайдеров.
Быстрый старт
Требуется Python 3.11+.
python -m pip install -e ".[dev]"
resume-agent tailor --bank docs/example-experience-bank.yaml --jd path/to/job-description.txt --json
resume-agent tailor --bank docs/example-experience-bank.yaml --jd path/to/job-description.txt --export --out ./outЧтобы запустить MCP-сервер через stdio:
resume-agent serveДля личного использования задайте RESUME_AGENT_BANK_PATH, указывающий на локальный банк с вашими собственными данными. Храните заполненное резюме и личный банк в каталоге .private/; этот каталог игнорируется Git. Пример банка, включённый в репозиторий, содержит контактные данные-заглушки и безопасен для публикации.
Related MCP server: mcp-overleaf-server
Зачем это нужно
Большинство инструментов «адаптации резюме с помощью ИИ» оптимизируют совпадение ключевых слов и плавность текста в ущерб фактической достоверности. Они без колебаний добавят «руководил командой из 10 человек» или «сократил задержку на 40%», даже если пользователь никогда ничего такого не утверждал. Это карьерный риск для пользователя и проблема доверия для получателя резюме.
Этот проект придерживается противоположной позиции: модель — это поисковик и редактор, работающий с собственными доказательствами пользователя, а не генератор достижений. Адаптация означает отбор, переупорядочивание и переформулирование — но никогда выдумывание. Критерии приёмки, реализующие этот принцип, описаны в docs/product-requirements.md.
Структура продукта
Три слабо связанных компонента:
Расширение для Chrome. Определяет, когда на активной вкладке открыто описание вакансии на поддерживаемом сайте (LinkedIn, Greenhouse, Lever, Ashby, Workday, обычный текст). Предлагает действие Generate Tailored Resume. Отправляет описание вакансии (JD) в локальный бэкенд и открывает интерфейс проверки, когда черновик готов.
Локальный бэкенд + веб-приложение. Владеет банком опыта, конвейером адаптации, матрицей доказательств и рендерером LaTeX/PDF. По умолчанию работает на
localhost. Поставляется с интерфейсом проверки: сравнение бок о бок (diff) с базовым резюме, ссылки на доказательства для каждого пункта, тепловая карта покрытия ключевыми словами, предупреждения о неподтверждённых утверждениях, одобрение/отклонение/редактирование для каждого пункта.Адаптеры провайдеров (BYO account). Пользователь подключает собственную учётную запись OpenAI, Anthropic или локальную (Ollama). Мы не проксируем запросы через наши серверы, а в режиме local-first не храним ключи провайдеров в размещённой БД — см.
docs/security-and-privacy.md.
Публичный эталонный LaTeX-шаблон находится в templates/resume.template.tex и служит визуальным и структурным ориентиром для рендерера. Персональные данные (имя, email, ссылки, телефон, гражданство) объявлены в шаблоне как макросы, чтобы их можно было переопределить приватным оверлеем. Исходник резюме самого мейнтейнера, содержащий реальные PII, находится в .private/alan-resume-source.tex и игнорируется Git — относитесь к нему как к каноническому рабочему примеру того, как выглядит заполненный шаблон, а не как к файлу, который поставляется с репозиторием. Минимальный банк опыта, созданный на основе этого приватного исходника, находится в docs/example-experience-bank.yaml.
Что не входит в задачи (v1)
Никакой помощи в выдумывании. Никаких «предложить пункт, который вы могли бы добавить». Никаких «заполнить правдоподобную метрику».
Никакого размещённого мультитенантного SaaS. MVP работает локально (local-first). Облачная синхронизация отложена (см. дорожную карту).
Никакого автоматического отклика. Мы не отправляем заявки, не пишем рекрутерам и не составляем сопроводительные письма. Это вне рамок проекта.
Никакого скрейпинга закрытых досок вакансий. Расширение читает текущую открытую страницу в собственной сессии браузера пользователя; оно не обходит сайты.
Никакого хранения API-ключей провайдеров на серверной стороне в v1. Ключи хранятся в связке ключей ОС или в локальном хранилище расширения.
Никакого «рейтинга» резюме. Числовые оценки ATS — псевдонаука без участия самой ATS. Мы показываем покрытие ключевыми словами и покрытие доказательствами, а не оценку.
Никакого скрейпинга LinkedIn для наполнения банка опыта. Импорт возможен только вручную или из загруженного пользователем PDF/LaTeX.
Карта документации
Файл | Назначение |
Пользовательские истории, критерии приёмки, не-цели, принципы UX | |
Схема системы, компоненты, интерфейс адаптера провайдера, валидация LaTeX | |
Схема банка опыта, ссылки на доказательства, схема артефакта адаптированного резюме | |
Модель угроз, обоснование разрешений расширения, хранение ключей, потоки данных | |
Поэтапный план разработки от M0 (скелет) до M5 (многопользовательское облако) | |
Протокол фундаментального архитектурного решения | |
Пример банка, полученный только из приватного | |
Принципы разработки, стандарты кодирования, подход к ревью |
Структура репозитория (целевая)
job-resume-agent/
├── templates/
│ └── resume.template.tex # public, PII-free reference LaTeX template
├── .private/ # git-ignored; maintainer's real resume source lives here
├── README.md
├── CONTRIBUTING.md
├── docs/ # (this repo, today)
├── apps/
│ ├── extension/ # Chrome MV3 extension (TS)
│ ├── backend/ # FastAPI (Python) + SQLite
│ └── web/ # React review UI
├── packages/
│ ├── providers/ # provider adapter interface + impls
│ ├── tailoring/ # retrieval, rewrite, evidence-matrix builder
│ ├── latex/ # renderer, validator, PDF pipeline
│ └── schema/ # shared Zod/Pydantic schemas
└── tests/
└── fixtures/ # JD samples, expected evidence matricesВ отслеживаемом дереве сегодня существуют только templates/resume.template.tex, README.md, CONTRIBUTING.md и docs/. Каталог .private/ присутствует в локальной копии мейнтейнера, но игнорируется Git и не поставляется. Остальное — цель фазы M1 (см. дорожную карту).
Зафиксированные допущения
Это разумные допущения, которые данный дизайн принимает без уточнения у пользователя. Изменить их можно, открыв ADR.
Local-first, однопользовательский MVP. Облако и многопользовательский режим — вопросы v2. См.
docs/adr/001-local-first-provider-agnostic.md.Собственная учётная запись провайдера (BYO). Мы не предоставляем LLM как сервис. Пользователь выбирает OpenAI, Anthropic или Ollama, а мы обращаемся к нему с их учётными данными.
LaTeX — источник истины для адаптированного артефакта. PDF — это результат сборки. Базовый шаблон пользователя (
templates/resume.template.tex, при необходимости дополняемый приватным файлом, например.private/alan-resume-source.tex) задаёт границы макета.Python-бэкенд, расширение на TypeScript + веб-интерфейс. Соответствует экосистеме ML/LaTeX на бэкенде и браузерной платформе на фронтенде.
Сначала Chrome. Firefox/Safari могут последовать за ним за счёт совместимости с MV3, как только интерфейс стабилизируется.
Банк принадлежит пользователю. Пользователь может в любой момент экспортировать полный банк в YAML и удалить локальную БД одной командой.
Каждый сгенерированный пункт несёт данные о происхождении (provenance). Ни один пункт не попадает в PDF без хотя бы одной ссылки
evidence_idв артефакте адаптированного резюме.
Открытые вопросы
Отслеживаются в docs/roadmap.md#open-questions.
This server cannot be deployed
Maintenance
Related MCP Connectors
Store your CV once, then get tailored .docx resumes, cover letters and keyword gaps for a job.
Build an ATS-friendly resume and check it against a job description, fully offline.
ATS resume checker and AI resume builder: score, tailor to a job, cover letters, PDF export.
Resume builder with native MCP — create and edit resumes from your AI assistant.
Related MCP Servers
- AlicenseAqualityDmaintenanceGenerates professional PDF resumes using LaTeX templates through natural language descriptions. Supports 9 professional templates, AI-powered resume tailoring, and organized folder management for job applications.423MIT
- AlicenseAqualityCmaintenanceTailors LaTeX résumés, CVs, and cover letters to job descriptions by injecting truthfully-selected content from a master CV, compiling PDFs, and logging applications.111MIT
- AlicenseNot gradedqualityCmaintenanceEnables drafting, validating, and reviewing tailored CVs and cover letters from private local career inputs, with reproducible PDF builds and application tracking support.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to tailor a resume to any job description by extracting keywords, analyzing gaps and ATS compliance, managing versions, and compiling PDF/LaTeX outputs entirely locally without external API keys.MIT