Skip to main content

AI-Powered Resume Builder - Polish, tailor, and optimize your resume locally

Project description

BT Resume

A free, local AI resume helper that polishes your resume bullets, tailors your resume to job descriptions, and formats new experience — all running privately on your own machine. No API keys, no subscriptions, no data leaving your device.

License: MIT PyPI version Python Versions GitHub Release


Quick Start

Prerequisites

Install & Run

pip install btr-resume
btr serve

That's it. Your browser opens to http://localhost:5000 with the BT Resume web UI.

First run: btr serve will automatically prompt you to install Ollama and download the Mistral 7B model (~700MB). Just follow the on-screen instructions.


Why BT Resume?

Most AI resume tools cost money, require an account, or send your personal data to external servers. This is my take on a free alternative — built from scratch in Python + React, powered by open-source LLMs that run entirely on your device.


Features

  • Bullet Polish — rewrites weak resume bullets into strong, ATS-optimized ones using proven resume writing formulas
  • Job Tailoring — aligns your resume language and keywords to match a specific job description without changing your real experience
  • Experience Updater — describe a new project or role in plain English and get polished, formatted resume bullets back
  • Resume Grading — get scores and feedback on your resume's effectiveness
  • PDF + TXT input — works with both plain text and real PDF resumes
  • PDF output — generates a clean, formatted PDF resume ready to send
  • 100% offline — no internet connection required after setup, no API keys, completely free

Commands

Command Description
btr serve Start the server and open the browser (same as plain btr)
btr Start the server and open the browser
btr setup Manual setup: install Ollama and download the AI model

Configuration

BT Resume is zero-config by default, but you can customize via environment variables:

Variable Default Description
BT_RESUME_HOST 127.0.0.1 Server bind address
BT_RESUME_PORT 5000 Server port
BT_RESUME_DEBUG false Enable debug logging
BT_RESUME_OLLAMA_HOST http://127.0.0.1:11434 Ollama server URL
BT_RESUME_ENABLE_ANALYTICS true Anonymous usage tracking (set to false to disable)
BT_RESUME_SECRET_KEY (auto-generated) Flask secret key (persisted across restarts)

Example:

BT_RESUME_PORT=8080 BT_RESUME_DEBUG=true btr serve

Requirements

  • OS: Windows, macOS, or Linux
  • Python: 3.10+
  • RAM: 8GB+ recommended
  • Disk: 2GB+ free space (for the AI model)
  • Ollama: Installed automatically on first run

Tech Stack

Layer Tool
Frontend React 19 + TypeScript + Vite
Backend Python 3.10+ / Flask
LLM Runtime Ollama
AI Model Mistral 7B (fast, efficient)
PDF Reading pdfplumber
PDF Generation ReportLab
Distribution PyPI — pip install btr-resume

Building from Source

# Clone the repo
git clone https://github.com/rasumeng/BT-Resume.git
cd BT-Resume

# Install Python package in editable mode
pip install -e .

# Build the web frontend
cd web
npm install
npm run build
cd ..

# Start the server
btr serve

Project Structure

BT-Resume/
├── btr/                          # CLI package (btr serve, btr setup)
│   ├── __init__.py
│   ├── __main__.py               # python -m btr
│   └── cli.py                    # CLI commands
├── backend/                      # Flask REST API
│   ├── app.py                    # Flask app with CORS
│   ├── routes/                   # API endpoint definitions
│   ├── services/                 # Business logic (LLM, PDF, tailoring)
│   └── config.py                 # Backend configuration
├── core/                         # Shared Python modules
│   ├── prompts/                  # LLM prompt templates
│   ├── pdf/                      # PDF generation components
│   ├── resume_model.py           # Data models
│   └── utils.py                  # Utility functions
├── web/                          # React SPA frontend
│   ├── src/                      # Components, screens, styles
│   ├── package.json
│   └── vite.config.ts
├── pyproject.toml
└── README.md

Architecture

┌─────────────────────┐
│  React Web UI       │  ← Served by Flask / opened in browser
│  (User Interface)    │
└──────────┬──────────┘
           │ HTTP/JSON (localhost)
           ▼
┌─────────────────────┐
│  Flask REST API     │  ← Python Backend
│  (localhost:5000)    │
└──────────┬──────────┘
           │
           ▼
┌─────────────────────┐
│  Ollama LLM         │  ← Local AI Model (Mistral 7B)
│  (localhost:11434)   │     Runs entirely offline
└─────────────────────┘

License

MIT License — see LICENSE


Author

Built by Robert Asumeng LinkedIn | GitHub

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

btr_resume-1.0.2.tar.gz (213.8 kB view details)

Uploaded Source

Built Distribution

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

btr_resume-1.0.2-py3-none-any.whl (230.5 kB view details)

Uploaded Python 3

File details

Details for the file btr_resume-1.0.2.tar.gz.

File metadata

  • Download URL: btr_resume-1.0.2.tar.gz
  • Upload date:
  • Size: 213.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for btr_resume-1.0.2.tar.gz
Algorithm Hash digest
SHA256 28f8d3dbf7ddb3438ae18825a9f121445299bff3c83d0f6215c0dd6d535d5c37
MD5 12729fe265bfafc3ea8ccbc627479cbe
BLAKE2b-256 7e65a122da6877653f5cea18300d4d716d337a35c680e0e307c7938877fde43c

See more details on using hashes here.

File details

Details for the file btr_resume-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: btr_resume-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 230.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for btr_resume-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4d383f7db82c446ddf1e648fc1f3c7f7bca71996013c4e4af1081ce8de65973d
MD5 db5920343a3c65ecfac0e0a1e1d2d044
BLAKE2b-256 9714f43262f4503677fe01931a092d66d26dd2f75a55e5a818438bd1845322b0

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