A terminal-based LLM-powered resume coaching tool
Project description
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 examplesinterview— Agentic behavioral interview that asks resume-tailored questions, fact-checks answers against your resume, and scores them across ownership, technical competence, problem-solving, and collaborationrefine— Interactive chat that coaches a single resume bullet, rating it on every turn and suggesting improvementsgenerate-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
evaluateandinterview - Configurable persona (recruiter, hiring manager, senior engineer) and level (intern through senior) for evaluations
Getting Started
Prerequisites
- Python 3.12 or higher
- An NVIDIA NIM API key (get one at build.nvidia.com)
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ffe692a10d768fb81327e87073d4678d6ac87e1fb1676b9727dd7cc06091ccff
|
|
| MD5 |
10e611f9eb8fa9fa2be60a06439deaca
|
|
| BLAKE2b-256 |
36199f00d7b4b95ad56273ab0d51737c44c38bae66955b9b3cde00d135072484
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ab239b4652ace081b8606ce28c41e6051505908364a5df8fb3eed53de69565a5
|
|
| MD5 |
7f76fbbe448bba5cee41dab84a75d054
|
|
| BLAKE2b-256 |
2435a3cc75fc6a7683939325345bb493a5833e26201615b2cf78ece1c775c120
|