btr-resume 1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. btr_resume-1.0/LICENSE +21 -0
  2. btr_resume-1.0/PKG-INFO +240 -0
  3. btr_resume-1.0/README.md +211 -0
  4. btr_resume-1.0/backend/__init__.py +1 -0
  5. btr_resume-1.0/backend/app.py +262 -0
  6. btr_resume-1.0/backend/config.py +98 -0
  7. btr_resume-1.0/backend/routes/__init__.py +1 -0
  8. btr_resume-1.0/backend/routes/resume_routes.py +876 -0
  9. btr_resume-1.0/backend/routes/track_routes.py +87 -0
  10. btr_resume-1.0/backend/services/__init__.py +1 -0
  11. btr_resume-1.0/backend/services/alteration_service.py +258 -0
  12. btr_resume-1.0/backend/services/cache_service.py +192 -0
  13. btr_resume-1.0/backend/services/feedback_service.py +148 -0
  14. btr_resume-1.0/backend/services/file_service.py +639 -0
  15. btr_resume-1.0/backend/services/job_tailor_service.py +362 -0
  16. btr_resume-1.0/backend/services/llm/__init__.py +8 -0
  17. btr_resume-1.0/backend/services/llm/parsers.py +263 -0
  18. btr_resume-1.0/backend/services/llm/service.py +372 -0
  19. btr_resume-1.0/backend/services/llm_service.py +540 -0
  20. btr_resume-1.0/backend/services/llm_service_deprecated.py +23 -0
  21. btr_resume-1.0/backend/services/ollama_service.py +377 -0
  22. btr_resume-1.0/backend/wsgi.py +9 -0
  23. btr_resume-1.0/btr/__init__.py +0 -0
  24. btr_resume-1.0/btr/__main__.py +2 -0
  25. btr_resume-1.0/btr/cli.py +124 -0
  26. btr_resume-1.0/btr_resume.egg-info/PKG-INFO +240 -0
  27. btr_resume-1.0/btr_resume.egg-info/SOURCES.txt +55 -0
  28. btr_resume-1.0/btr_resume.egg-info/dependency_links.txt +1 -0
  29. btr_resume-1.0/btr_resume.egg-info/entry_points.txt +2 -0
  30. btr_resume-1.0/btr_resume.egg-info/requires.txt +10 -0
  31. btr_resume-1.0/btr_resume.egg-info/top_level.txt +4 -0
  32. btr_resume-1.0/core/__init__.py +0 -0
  33. btr_resume-1.0/core/pdf/__init__.py +8 -0
  34. btr_resume-1.0/core/pdf/components.py +103 -0
  35. btr_resume-1.0/core/pdf/generator.py +237 -0
  36. btr_resume-1.0/core/pdf/styling.py +85 -0
  37. btr_resume-1.0/core/pdf_generator.py +521 -0
  38. btr_resume-1.0/core/pdf_generator_deprecated.py +21 -0
  39. btr_resume-1.0/core/prompts/__init__.py +31 -0
  40. btr_resume-1.0/core/prompts/bullet_prompts.py +81 -0
  41. btr_resume-1.0/core/prompts/grading_prompts.py +30 -0
  42. btr_resume-1.0/core/prompts/job_prompts.py +56 -0
  43. btr_resume-1.0/core/prompts/parsing_prompts.py +308 -0
  44. btr_resume-1.0/core/prompts/resume_prompts.py +106 -0
  45. btr_resume-1.0/core/prompts.py +601 -0
  46. btr_resume-1.0/core/resume_model.py +403 -0
  47. btr_resume-1.0/core/utils.py +113 -0
  48. btr_resume-1.0/pyproject.toml +53 -0
  49. btr_resume-1.0/setup.cfg +4 -0
  50. btr_resume-1.0/web/__init__.py +0 -0
  51. btr_resume-1.0/web/dist/BTR-Icon.png +0 -0
  52. btr_resume-1.0/web/dist/BTR-Logo.svg +450 -0
  53. btr_resume-1.0/web/dist/assets/index-Cl0KAkJH.js +9 -0
  54. btr_resume-1.0/web/dist/assets/index-WzMIpsl1.css +2 -0
  55. btr_resume-1.0/web/dist/favicon.svg +4 -0
  56. btr_resume-1.0/web/dist/icons.svg +24 -0
  57. btr_resume-1.0/web/dist/index.html +23 -0
btr_resume-1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 BTF Resume
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,240 @@
1
+ Metadata-Version: 2.4
2
+ Name: btr-resume
3
+ Version: 1.0
4
+ Summary: AI-Powered Resume Builder - Polish, tailor, and optimize your resume locally
5
+ Author-email: Robert Asumeng <asumengrobert787@gmail.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/rasumeng/BT-Resume
8
+ Project-URL: Repository, https://github.com/rasumeng/BT-Resume
9
+ Classifier: Development Status :: 4 - Beta
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3.10
12
+ Classifier: Programming Language :: Python :: 3.11
13
+ Classifier: Programming Language :: Python :: 3.12
14
+ Classifier: Topic :: Office/Business :: News/Diary
15
+ Classifier: Topic :: Text Processing :: General
16
+ Requires-Python: >=3.10
17
+ Description-Content-Type: text/markdown
18
+ License-File: LICENSE
19
+ Requires-Dist: Flask>=3.1
20
+ Requires-Dist: flask-cors>=6.0
21
+ Requires-Dist: pdfplumber>=0.11
22
+ Requires-Dist: reportlab>=4.4
23
+ Requires-Dist: PyMuPDF>=1.24
24
+ Requires-Dist: requests>=2.32
25
+ Requires-Dist: PyPDF2>=3.0
26
+ Provides-Extra: gunicorn
27
+ Requires-Dist: gunicorn>=20; extra == "gunicorn"
28
+ Dynamic: license-file
29
+
30
+ # BT Resume
31
+
32
+ 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.
33
+
34
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
35
+ [![GitHub Release](https://img.shields.io/github/v/release/rasumeng/BT-Resume)](https://github.com/rasumeng/BT-Resume/releases)
36
+
37
+ ---
38
+
39
+ ## Why BT Resume?
40
+
41
+ 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.
42
+
43
+ ---
44
+
45
+ ## Features
46
+
47
+ - **Bullet Polish** — rewrites weak resume bullets into strong, ATS-optimized ones using proven resume writing formulas
48
+ - **Job Tailoring** — aligns your resume language and keywords to match a specific job description without changing your real experience
49
+ - **Experience Updater** — describe a new project or role in plain English and get polished, formatted resume bullets back
50
+ - **Resume Grading** — get scores and feedback on your resume's effectiveness
51
+ - **PDF + TXT input** — works with both plain text and real PDF resumes
52
+ - **PDF output** — generates a clean, formatted PDF resume ready to send
53
+ - **Auto-updates** — automatically stays up-to-date with new features and fixes
54
+ - **100% offline** — no internet connection required after setup, no API keys, completely free
55
+
56
+ ---
57
+
58
+ ## Tech Stack
59
+
60
+ | Layer | Tool |
61
+ |---|---|---|
62
+ | Frontend | React 19 + TypeScript + Vite |
63
+ | Backend Language | Python 3.10+ |
64
+ | LLM Runtime | [Ollama](https://ollama.com) |
65
+ | Bullet Polish Model | Mistral 7B (fast, efficient) |
66
+ | PDF Reading | pdfplumber |
67
+ | PDF Generation | ReportLab |
68
+ | REST API | Flask with CORS |
69
+ | Distribution | PyPI (`pip install btr-resume`) |
70
+
71
+ ---
72
+
73
+ ## Quick Start
74
+
75
+ ### Quick Install (pip)
76
+
77
+ ```bash
78
+ pip install btr-resume
79
+ btr serve
80
+ ```
81
+
82
+ Opens the web UI at `http://localhost:5000`.
83
+
84
+ ### Manual Setup (Development)
85
+
86
+ ```bash
87
+ # Install Python package in editable mode
88
+ pip install -e .
89
+
90
+ # Build the web frontend
91
+ cd web
92
+ npm install
93
+ npm run build
94
+ cd ..
95
+
96
+ # Start the server
97
+ btr serve
98
+ ```
99
+
100
+ ---
101
+
102
+ ## Requirements
103
+
104
+ - Python 3.10+
105
+ - [Ollama](https://ollama.com) (auto-installed via `btr setup`)
106
+ - 8GB+ RAM recommended
107
+ - 2GB+ free disk space
108
+
109
+ ---
110
+
111
+ ## Usage
112
+
113
+ ### Application Tabs
114
+
115
+ | Tab | Description |
116
+ |-----|-------------|
117
+ | **My Resumes** | View and manage all your resumes |
118
+ | **Polish** | Enhance your bullet points with AI |
119
+ | **Tailor** | Customize resume for specific job descriptions |
120
+ | **Feedback** | Submit feature requests and bug reports |
121
+
122
+ ### First Run Setup
123
+
124
+ ```bash
125
+ btr setup
126
+ ```
127
+
128
+ This will install Ollama (if needed) and download the AI model (~500MB-1GB).
129
+
130
+ Then start the app:
131
+
132
+ ```bash
133
+ btr serve
134
+ ```
135
+
136
+ ---
137
+
138
+ ## Project Structure
139
+
140
+ ```
141
+ BT-Resume/
142
+ ├── btr/ # CLI package (btr serve, btr setup)
143
+ │ ├── __init__.py
144
+ │ ├── __main__.py # python -m btr
145
+ │ └── cli.py # CLI commands
146
+ ├── backend/ # Flask REST API
147
+ │ ├── app.py # Flask app with CORS
148
+ │ ├── routes/ # API endpoint definitions
149
+ │ ├── services/ # Business logic (LLM, PDF, tailoring)
150
+ │ └── config.py # Backend configuration
151
+ ├── core/ # Shared Python modules
152
+ │ ├── prompts/ # LLM prompt templates
153
+ │ ├── pdf/ # PDF generation components
154
+ │ ├── resume_model.py # Data models
155
+ │ └── utils.py # Utility functions
156
+ ├── web/ # React SPA frontend
157
+ │ ├── src/ # Components, screens, styles
158
+ │ ├── package.json
159
+ │ └── vite.config.ts
160
+ ├── pyproject.toml
161
+ └── README.md
162
+ ```
163
+
164
+ ---
165
+
166
+ ## Architecture
167
+
168
+ ### Application Flow
169
+ ```
170
+ ┌─────────────────────┐
171
+ │ React Web UI │ ← Served by Flask / opened in browser
172
+ │ (User Interface) │
173
+ └──────────┬──────────┘
174
+ │ HTTP/JSON (localhost)
175
+
176
+ ┌─────────────────────┐
177
+ │ Flask REST API │ ← Python Backend
178
+ │ (localhost:5000) │
179
+ └──────────┬──────────┘
180
+
181
+
182
+ ┌─────────────────────┐
183
+ │ Ollama LLM │ ← Local AI Model (Mistral 7B)
184
+ │ (localhost:11434) │ Runs entirely offline
185
+ └─────────────────────┘
186
+ ```
187
+
188
+ ### API Endpoints
189
+ - `GET /api/health` — Backend health check
190
+ - `GET /api/status` — Detailed service status
191
+ - `GET /api/list-resumes` — List all resumes
192
+ - `GET /api/get-resume` — Load specific resume
193
+ - `PUT /api/update-resume` — Update resume content
194
+ - `POST /api/delete-resume` — Delete a resume
195
+ - `POST /api/polish-bullets` — Enhance bullet points
196
+ - `POST /api/tailor-resume` — Customize for job
197
+ - `POST /api/grade-resume` — Score and analyze
198
+ - `POST /api/parse-resume` — Parse uploaded resume
199
+ - `POST /api/save-resume-pdf` — Generate PDF output
200
+
201
+ ---
202
+
203
+ ## Building from Source
204
+
205
+ ### Prerequisites
206
+ - Python 3.10+
207
+ - Node.js 18+ (for web frontend)
208
+ - Git
209
+
210
+ ### Build Commands
211
+
212
+ ```bash
213
+ # Install the package in editable mode
214
+ pip install -e .
215
+
216
+ # Build the web frontend
217
+ cd web
218
+ npm install
219
+ npm run build
220
+ cd ..
221
+
222
+ # Build the Python wheel
223
+ python -m build
224
+ ```
225
+
226
+ ### Output
227
+ Built wheel: `dist/btr_resume-*.whl`
228
+
229
+ ---
230
+
231
+ ## License
232
+
233
+ MIT License - see [LICENSE](LICENSE)
234
+
235
+ ---
236
+
237
+ ## Author
238
+
239
+ Built by Robert Asumeng
240
+ [LinkedIn](https://www.linkedin.com/in/robertasumeng) | [GitHub](https://github.com/rasumeng)
@@ -0,0 +1,211 @@
1
+ # BT Resume
2
+
3
+ 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.
4
+
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
6
+ [![GitHub Release](https://img.shields.io/github/v/release/rasumeng/BT-Resume)](https://github.com/rasumeng/BT-Resume/releases)
7
+
8
+ ---
9
+
10
+ ## Why BT Resume?
11
+
12
+ 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.
13
+
14
+ ---
15
+
16
+ ## Features
17
+
18
+ - **Bullet Polish** — rewrites weak resume bullets into strong, ATS-optimized ones using proven resume writing formulas
19
+ - **Job Tailoring** — aligns your resume language and keywords to match a specific job description without changing your real experience
20
+ - **Experience Updater** — describe a new project or role in plain English and get polished, formatted resume bullets back
21
+ - **Resume Grading** — get scores and feedback on your resume's effectiveness
22
+ - **PDF + TXT input** — works with both plain text and real PDF resumes
23
+ - **PDF output** — generates a clean, formatted PDF resume ready to send
24
+ - **Auto-updates** — automatically stays up-to-date with new features and fixes
25
+ - **100% offline** — no internet connection required after setup, no API keys, completely free
26
+
27
+ ---
28
+
29
+ ## Tech Stack
30
+
31
+ | Layer | Tool |
32
+ |---|---|---|
33
+ | Frontend | React 19 + TypeScript + Vite |
34
+ | Backend Language | Python 3.10+ |
35
+ | LLM Runtime | [Ollama](https://ollama.com) |
36
+ | Bullet Polish Model | Mistral 7B (fast, efficient) |
37
+ | PDF Reading | pdfplumber |
38
+ | PDF Generation | ReportLab |
39
+ | REST API | Flask with CORS |
40
+ | Distribution | PyPI (`pip install btr-resume`) |
41
+
42
+ ---
43
+
44
+ ## Quick Start
45
+
46
+ ### Quick Install (pip)
47
+
48
+ ```bash
49
+ pip install btr-resume
50
+ btr serve
51
+ ```
52
+
53
+ Opens the web UI at `http://localhost:5000`.
54
+
55
+ ### Manual Setup (Development)
56
+
57
+ ```bash
58
+ # Install Python package in editable mode
59
+ pip install -e .
60
+
61
+ # Build the web frontend
62
+ cd web
63
+ npm install
64
+ npm run build
65
+ cd ..
66
+
67
+ # Start the server
68
+ btr serve
69
+ ```
70
+
71
+ ---
72
+
73
+ ## Requirements
74
+
75
+ - Python 3.10+
76
+ - [Ollama](https://ollama.com) (auto-installed via `btr setup`)
77
+ - 8GB+ RAM recommended
78
+ - 2GB+ free disk space
79
+
80
+ ---
81
+
82
+ ## Usage
83
+
84
+ ### Application Tabs
85
+
86
+ | Tab | Description |
87
+ |-----|-------------|
88
+ | **My Resumes** | View and manage all your resumes |
89
+ | **Polish** | Enhance your bullet points with AI |
90
+ | **Tailor** | Customize resume for specific job descriptions |
91
+ | **Feedback** | Submit feature requests and bug reports |
92
+
93
+ ### First Run Setup
94
+
95
+ ```bash
96
+ btr setup
97
+ ```
98
+
99
+ This will install Ollama (if needed) and download the AI model (~500MB-1GB).
100
+
101
+ Then start the app:
102
+
103
+ ```bash
104
+ btr serve
105
+ ```
106
+
107
+ ---
108
+
109
+ ## Project Structure
110
+
111
+ ```
112
+ BT-Resume/
113
+ ├── btr/ # CLI package (btr serve, btr setup)
114
+ │ ├── __init__.py
115
+ │ ├── __main__.py # python -m btr
116
+ │ └── cli.py # CLI commands
117
+ ├── backend/ # Flask REST API
118
+ │ ├── app.py # Flask app with CORS
119
+ │ ├── routes/ # API endpoint definitions
120
+ │ ├── services/ # Business logic (LLM, PDF, tailoring)
121
+ │ └── config.py # Backend configuration
122
+ ├── core/ # Shared Python modules
123
+ │ ├── prompts/ # LLM prompt templates
124
+ │ ├── pdf/ # PDF generation components
125
+ │ ├── resume_model.py # Data models
126
+ │ └── utils.py # Utility functions
127
+ ├── web/ # React SPA frontend
128
+ │ ├── src/ # Components, screens, styles
129
+ │ ├── package.json
130
+ │ └── vite.config.ts
131
+ ├── pyproject.toml
132
+ └── README.md
133
+ ```
134
+
135
+ ---
136
+
137
+ ## Architecture
138
+
139
+ ### Application Flow
140
+ ```
141
+ ┌─────────────────────┐
142
+ │ React Web UI │ ← Served by Flask / opened in browser
143
+ │ (User Interface) │
144
+ └──────────┬──────────┘
145
+ │ HTTP/JSON (localhost)
146
+
147
+ ┌─────────────────────┐
148
+ │ Flask REST API │ ← Python Backend
149
+ │ (localhost:5000) │
150
+ └──────────┬──────────┘
151
+
152
+
153
+ ┌─────────────────────┐
154
+ │ Ollama LLM │ ← Local AI Model (Mistral 7B)
155
+ │ (localhost:11434) │ Runs entirely offline
156
+ └─────────────────────┘
157
+ ```
158
+
159
+ ### API Endpoints
160
+ - `GET /api/health` — Backend health check
161
+ - `GET /api/status` — Detailed service status
162
+ - `GET /api/list-resumes` — List all resumes
163
+ - `GET /api/get-resume` — Load specific resume
164
+ - `PUT /api/update-resume` — Update resume content
165
+ - `POST /api/delete-resume` — Delete a resume
166
+ - `POST /api/polish-bullets` — Enhance bullet points
167
+ - `POST /api/tailor-resume` — Customize for job
168
+ - `POST /api/grade-resume` — Score and analyze
169
+ - `POST /api/parse-resume` — Parse uploaded resume
170
+ - `POST /api/save-resume-pdf` — Generate PDF output
171
+
172
+ ---
173
+
174
+ ## Building from Source
175
+
176
+ ### Prerequisites
177
+ - Python 3.10+
178
+ - Node.js 18+ (for web frontend)
179
+ - Git
180
+
181
+ ### Build Commands
182
+
183
+ ```bash
184
+ # Install the package in editable mode
185
+ pip install -e .
186
+
187
+ # Build the web frontend
188
+ cd web
189
+ npm install
190
+ npm run build
191
+ cd ..
192
+
193
+ # Build the Python wheel
194
+ python -m build
195
+ ```
196
+
197
+ ### Output
198
+ Built wheel: `dist/btr_resume-*.whl`
199
+
200
+ ---
201
+
202
+ ## License
203
+
204
+ MIT License - see [LICENSE](LICENSE)
205
+
206
+ ---
207
+
208
+ ## Author
209
+
210
+ Built by Robert Asumeng
211
+ [LinkedIn](https://www.linkedin.com/in/robertasumeng) | [GitHub](https://github.com/rasumeng)
@@ -0,0 +1 @@
1
+ """Backend package for BT-Resume."""