[Feature] ATS-optimized resume generation from job description #29

Closed
opened 2026-03-23 08:37:58 -07:00 by pyr0ball · 0 comments
Owner

Implemented 2026-03-30

Files added/modified

  • scripts/resume_optimizer.pyextract_jd_signals(), prioritize_gaps(), rewrite_for_ats(), hallucination_check(), render_resume_text()
  • scripts/db.pyoptimized_resume + ats_gap_report columns, save_optimized_resume(), get_optimized_resume()
  • scripts/task_runner.pyresume_optimize task type wired in
  • scripts/task_scheduler.pyresume_optimize added to LLM_TASK_TYPES (5.0 GB VRAM budget)
  • dev_api.py (vue-spa worktree) — 3 endpoints: GET/POST /api/jobs/{id}/resume_optimizer, GET /api/jobs/{id}/resume_optimizer/task
  • web/src/components/ResumeOptimizerPanel.vue — gap report (all tiers) + full rewrite + hallucination badge (paid tier)
  • web/src/components/ApplyWorkspace.vue — panel wired in
  • tests/test_resume_optimizer.py — 17 tests, all passing (539 total)

Tier behaviour

  • Free: keyword gap report only (TF-IDF + LLM extraction, no rewrite)
  • Paid: per-section LLM rewrite + hallucination check
  • Premium: same as paid (fine-tuned voice model deferred to future issue)

Known review flag

prioritize_gaps() section keyword lists are tech-centric — domain-specific roles (creative, healthcare, operations) may over-route gaps to experience. Flagged inline with # REVIEW comment.

## Implemented 2026-03-30 ### Files added/modified - `scripts/resume_optimizer.py` — `extract_jd_signals()`, `prioritize_gaps()`, `rewrite_for_ats()`, `hallucination_check()`, `render_resume_text()` - `scripts/db.py` — `optimized_resume` + `ats_gap_report` columns, `save_optimized_resume()`, `get_optimized_resume()` - `scripts/task_runner.py` — `resume_optimize` task type wired in - `scripts/task_scheduler.py` — `resume_optimize` added to `LLM_TASK_TYPES` (5.0 GB VRAM budget) - `dev_api.py` (vue-spa worktree) — 3 endpoints: `GET/POST /api/jobs/{id}/resume_optimizer`, `GET /api/jobs/{id}/resume_optimizer/task` - `web/src/components/ResumeOptimizerPanel.vue` — gap report (all tiers) + full rewrite + hallucination badge (paid tier) - `web/src/components/ApplyWorkspace.vue` — panel wired in - `tests/test_resume_optimizer.py` — 17 tests, all passing (539 total) ### Tier behaviour - Free: keyword gap report only (TF-IDF + LLM extraction, no rewrite) - Paid: per-section LLM rewrite + hallucination check - Premium: same as paid (fine-tuned voice model deferred to future issue) ### Known review flag `prioritize_gaps()` section keyword lists are tech-centric — domain-specific roles (creative, healthcare, operations) may over-route gaps to experience. Flagged inline with `# REVIEW` comment.
pyr0ball added this to the Paid Tier GA milestone 2026-03-23 08:37:58 -07:00
pyr0ball added the
feature-request
label 2026-03-23 08:37:58 -07:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Circuit-Forge/peregrine#29
No description provided.