Skip to main content
Glama

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.

Структура продукта

Три слабо связанных компонента:

  1. Расширение для Chrome. Определяет, когда на активной вкладке открыто описание вакансии на поддерживаемом сайте (LinkedIn, Greenhouse, Lever, Ashby, Workday, обычный текст). Предлагает действие Generate Tailored Resume. Отправляет описание вакансии (JD) в локальный бэкенд и открывает интерфейс проверки, когда черновик готов.

  2. Локальный бэкенд + веб-приложение. Владеет банком опыта, конвейером адаптации, матрицей доказательств и рендерером LaTeX/PDF. По умолчанию работает на localhost. Поставляется с интерфейсом проверки: сравнение бок о бок (diff) с базовым резюме, ссылки на доказательства для каждого пункта, тепловая карта покрытия ключевыми словами, предупреждения о неподтверждённых утверждениях, одобрение/отклонение/редактирование для каждого пункта.

  3. Адаптеры провайдеров (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.

Карта документации

Файл

Назначение

docs/product-requirements.md

Пользовательские истории, критерии приёмки, не-цели, принципы UX

docs/technical-architecture.md

Схема системы, компоненты, интерфейс адаптера провайдера, валидация LaTeX

docs/data-model.md

Схема банка опыта, ссылки на доказательства, схема артефакта адаптированного резюме

docs/security-and-privacy.md

Модель угроз, обоснование разрешений расширения, хранение ключей, потоки данных

docs/roadmap.md

Поэтапный план разработки от M0 (скелет) до M5 (многопользовательское облако)

docs/adr/001-local-first-provider-agnostic.md

Протокол фундаментального архитектурного решения

docs/example-experience-bank.yaml

Пример банка, полученный только из приватного .private/alan-resume-source.tex мейнтейнера

CONTRIBUTING.md

Принципы разработки, стандарты кодирования, подход к ревью

Структура репозитория (целевая)

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.

  1. Local-first, однопользовательский MVP. Облако и многопользовательский режим — вопросы v2. См. docs/adr/001-local-first-provider-agnostic.md.

  2. Собственная учётная запись провайдера (BYO). Мы не предоставляем LLM как сервис. Пользователь выбирает OpenAI, Anthropic или Ollama, а мы обращаемся к нему с их учётными данными.

  3. LaTeX — источник истины для адаптированного артефакта. PDF — это результат сборки. Базовый шаблон пользователя (templates/resume.template.tex, при необходимости дополняемый приватным файлом, например .private/alan-resume-source.tex) задаёт границы макета.

  4. Python-бэкенд, расширение на TypeScript + веб-интерфейс. Соответствует экосистеме ML/LaTeX на бэкенде и браузерной платформе на фронтенде.

  5. Сначала Chrome. Firefox/Safari могут последовать за ним за счёт совместимости с MV3, как только интерфейс стабилизируется.

  6. Банк принадлежит пользователю. Пользователь может в любой момент экспортировать полный банк в YAML и удалить локальную БД одной командой.

  7. Каждый сгенерированный пункт несёт данные о происхождении (provenance). Ни один пункт не попадает в PDF без хотя бы одной ссылки evidence_id в артефакте адаптированного резюме.

Открытые вопросы

Отслеживаются в docs/roadmap.md#open-questions.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Tailors 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.
    11
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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