Skip to main content

A terminal-based LLM-powered resume coaching tool

Project description

PyPI Version Python Versions PyPI Downloads License CI security: bandit

Resume Roast

A terminal-based LLM-powered resume coaching tool. Get brutal, structured feedback on your resume, refine individual bullet points through back-and-forth chat, or generate new resume blocks from scratch.

Features

  • evaluate — Submit a PDF or DOCX resume and receive a structured roast: per-category scores, highlighted strengths and weaknesses, and concrete rewrite suggestions with before/after examples
  • interview — Agentic behavioral interview that asks resume-tailored questions, fact-checks answers against your resume, and scores them across ownership, technical competence, problem-solving, and collaboration
  • refine — Interactive chat that coaches a single resume bullet, rating it on every turn and suggesting improvements
  • generate-block — Chat-based interviewer that gathers details about a role or project, then generates a formatted resume block rated against our bullet-writing principles
  • Multiple LLM models to choose from, with token usage and cost reporting — per reply in the chat sessions, per run for evaluate and interview
  • Configurable persona (recruiter, hiring manager, senior engineer) and level (intern through senior) for evaluations

Getting Started

Prerequisites

Installation

pip install resume-roast

For development:

git clone https://github.com/jfang324/resume-roast.git
cd resume-roast
poetry install

First-Time Setup

Set your NVIDIA API key:

resume-roast config credentials

You can also configure the model, persona, seniority level, and the remaining settings:

resume-roast config settings

Configuration is stored in ~/.resume-roast/.

Usage

Commands

Command Arguments & options Description
evaluate <path> <path> — PDF or DOCX resume Roast a resume: scores, strengths/weaknesses, and rewrite suggestions
interview <path> <path> — PDF or DOCX resume
--report — save a Markdown report to ~/.resume-roast/interview-reports/
Run an agentic behavioral interview and score the answers
refine <bullet> <bullet> — the bullet text to coach Coach a single resume bullet through a back-and-forth chat
generate-block (none) Interview you about a role or project, then generate a resume block
config credentials (none) Set the API key for each provider
config settings (none) Choose each setting from its allowed values
show credentials (none) Print saved API keys, masked
show settings (none) Print every setting's current value

--debug is a global option, so it goes before the command — resume-roast --debug evaluate resume.pdf. It writes full debug logs (including raw prompts and responses containing resume content) to ~/.resume-roast/logs/debug.log.

Evaluate a Resume

resume-roast evaluate path/to/resume.pdf

Extracts your resume, sends it to the LLM for structured analysis, and prints a diff-highlighted report with scores and rewrite suggestions.

Refine a Bullet

resume-roast refine "Managed a team of 5 engineers"

Opens an interactive chat. The LLM coaches you, rating the bullet on every reply and suggesting improvements. Available commands:

Command Action
/replace <text> Replace the bullet with a new version (re-rates it)
/generate <notes> Generate a candidate rewrite (notes optional)
/help Show available commands
/exit End the session
(plain text) Conversational coaching turn

Generate a Block

resume-roast generate-block

Opens an interactive chat. The LLM interviews you about a role or project, asking questions to gather specifics. Type /generate when you're ready to produce a formatted resume block (header + 3-6 bullet points). /generate always produces a block, rated 0-10 — if the details are thin it still generates, then names what would raise the score. Available commands:

Command Action
/generate <notes> Generate a resume block (notes optional)
/help Show available commands
/exit End the session
(plain text) Answer questions, add details

Interview

resume-roast interview path/to/resume.pdf

Starts an agentic behavioral interview. The LLM generates questions tailored to your resume, asks them one at a time, fact-checks your answers against the resume, and probes deeper with follow-ups when needed. After all questions, produces a competency report with per-category scores, strengths, and growth areas.

Pass --report to also save a detailed Markdown copy — verdict, per-question evidence, and fact-checks — under ~/.resume-roast/interview-reports/. The file is named by timestamp and resume (e.g. 20260723-142530-resume.md), so repeated runs accumulate without overwriting. Nothing is written if the interview ends before any answer is scored.

Available commands:

Command Action
/exit End the interview early

Development

See docs/development.md for setup and development commands.

Tools & Technologies

Core

  • Python 3.12+
  • Typer (CLI framework)
  • Rich (terminal output, spinners, diff rendering)
  • pymupdf4llm (PDF to Markdown extraction)
  • mammoth (DOCX to Markdown extraction)
  • defusedxml (safe XML parsing for DOCX metadata parts)
  • openai SDK (NVIDIA NIM API client)

Code Quality

  • Ruff (linting + formatting)
  • Pyright (strict type checking)
  • Bandit (security linting)
  • pre-commit hooks

Testing

  • pytest
  • coverage (branch coverage, 85% minimum)
  • pytest-asyncio

Build & Package

  • Poetry

License

This project is licensed under the MIT License — see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

resume_roast-1.0.3.tar.gz (76.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

resume_roast-1.0.3-py3-none-any.whl (123.0 kB view details)

Uploaded Python 3

File details

Details for the file resume_roast-1.0.3.tar.gz.

File metadata

  • Download URL: resume_roast-1.0.3.tar.gz
  • Upload date:
  • Size: 76.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.4 CPython/3.12.7 Windows/11

File hashes

Hashes for resume_roast-1.0.3.tar.gz
Algorithm Hash digest
SHA256 ffe692a10d768fb81327e87073d4678d6ac87e1fb1676b9727dd7cc06091ccff
MD5 10e611f9eb8fa9fa2be60a06439deaca
BLAKE2b-256 36199f00d7b4b95ad56273ab0d51737c44c38bae66955b9b3cde00d135072484

See more details on using hashes here.

File details

Details for the file resume_roast-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: resume_roast-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 123.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.4 CPython/3.12.7 Windows/11

File hashes

Hashes for resume_roast-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 ab239b4652ace081b8606ce28c41e6051505908364a5df8fb3eed53de69565a5
MD5 7f76fbbe448bba5cee41dab84a75d054
BLAKE2b-256 2435a3cc75fc6a7683939325345bb493a5833e26201615b2cf78ece1c775c120

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page