{"id":27141567,"url":"https://github.com/mancrurod/resume-optimization","last_synced_at":"2025-04-08T07:00:03.729Z","repository":{"id":286296026,"uuid":"951311041","full_name":"mancrurod/Resume-Optimization","owner":"mancrurod","description":"​Resume-Optimization automates resume enhancement using AI by converting .docx resumes into Markdown, tailoring them to specific job descriptions, and exporting the results in HTML and PDF formats.","archived":false,"fork":false,"pushed_at":"2025-04-05T14:18:07.000Z","size":22,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-05T15:24:37.289Z","etag":null,"topics":["automation","career-development","document-processing","gpt-integration","job-matching","markdown-to-html","natural-langauge-processing","pdf-generation","python","resume-optimization","resume-parser","solid-principles"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mancrurod.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-19T13:36:22.000Z","updated_at":"2025-04-05T14:18:10.000Z","dependencies_parsed_at":"2025-04-05T15:35:06.317Z","dependency_job_id":null,"html_url":"https://github.com/mancrurod/Resume-Optimization","commit_stats":null,"previous_names":["mancrurod/resume-optimization"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mancrurod%2FResume-Optimization","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mancrurod%2FResume-Optimization/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mancrurod%2FResume-Optimization/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mancrurod%2FResume-Optimization/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mancrurod","download_url":"https://codeload.github.com/mancrurod/Resume-Optimization/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247792887,"owners_count":20996899,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","career-development","document-processing","gpt-integration","job-matching","markdown-to-html","natural-langauge-processing","pdf-generation","python","resume-optimization","resume-parser","solid-principles"],"created_at":"2025-04-08T07:00:03.008Z","updated_at":"2025-04-08T07:00:03.682Z","avatar_url":"https://github.com/mancrurod.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📄 Resume Optimization\n\nWelcome to **Resume Optimization** — a modular, extensible pipeline that transforms your `.docx` resume into a customized, ATS-friendly PDF, fine-tuned for a specific job offer using LLMs like GPT-4o-mini or Gemini.\n\n---\n\n## 🚀 What This Project Does\n\n1. **Converts** your `.docx` resume into clean, structured `Markdown`.\n2. **Builds a dynamic LLM prompt** based on your resume and a job description.\n3. **Adapts** the content using GPT or Gemini to match job requirements.\n4. **Exports** the adapted Markdown to beautiful `HTML` and `PDF`.\n5. **Opens a visual editor** so you can tweak the final HTML by hand.\n6. **Logs everything** and validates your files to avoid surprises.\n7. **Previews the final PDF** automatically.\n\n---\n\n## 📁 Project Structure\n\n```\nResume-Optimization/\n│\n├── original_docx/           # Original .docx resumes (input)\n├── processed_cv/            # Intermediate Markdown, HTML, and prompt\n├── pdf_cv/                  # Final exported PDFs\n├── cv_template/             # Optional base resume templates\n├── logs/                    # Pipeline logs (.log) per execution\n│\n├── docs/                    # Full project documentation\n│   ├── index.md             # Docs landing page\n│   ├── overview.md\n│   ├── installation.md\n│   ├── usage.md\n│   └── scripts/             # Script-specific docs\n│       ├── convert_to_md.md\n│       ├── optimize_resume.md\n│       ├── adapt_resume.md\n│       ├── export_resume.md\n│       └── main.md\n│\n├── src/                     # Modular Python source code\n│   ├── convert_to_md.py\n│   ├── optimize_resume.py\n│   ├── adapt_resume.py\n│   ├── export_resume.py\n│   └── __init__.py\n│\n├── .env                     # 🔒 DO NOT COMMIT — contains API keys\n├── .env.example             # ✅ Safe template to share\n├── job_description.txt      # Paste job ad text here\n├── main.py                  # Full pipeline: DOCX → Markdown → GPT → PDF\n├── requirements.txt\n├── environment.yml\n├── README.md\n├── CHANGELOG.md             # Project version history\n└── PORTFOLIO_CHECKLIST.md   # Personal quality checklist for portfolio readiness\n```\n\n---\n\n## 🤖 Pipeline Overview\n\n### 1. Convert DOCX → Markdown\n\n```bash\npython src/convert_to_md.py\n```\n\nCreates a structured Markdown version of your resume with headers, lists, formatting, and hyperlinks.\n\n### 2. Generate LLM Prompt\n\n```bash\npython src/optimize_resume.py\n```\n\nGenerates a detailed, language-aware prompt using your resume and a job description.\n\n### 3. Adapt Resume with LLM\n\n```bash\npython src/adapt_resume.py\n```\n\nUses OpenAI's GPT-4o-mini or Gemini as fallback to tailor your resume to the job description.\n\n### 4. Export to HTML + Edit\n\n```bash\npython src/export_resume.py\n```\n\nConverts the adapted Markdown to HTML and opens a WYSIWYG editor to polish the formatting.\n\n### 5. Generate PDF\n\nDone automatically when you run the pipeline — and the PDF opens instantly when done ✅\n\n### 🔁 Full Pipeline (Recommended)\n\n```bash\npython main.py\n```\n\nThis script orchestrates the entire process, including file validation, logging, LLM calls, editing, exporting, and preview.\n\n---\n\n## ✨ Features\n\n- ✅ **End-to-end pipeline** from `.docx` to `PDF`.\n- ✍️ **Visual HTML editor** (PyQt5-based).\n- 🧠 **Smart prompt generation** with multilingual LLM support.\n- 📂 **Logging per execution** (`logs/resume_YYYYMMDD_HHMMSS.log`).\n- 🔍 **Validation** of `.docx` inputs before processing.\n- 🧾 **`.env.example`** for easy setup.\n- 🖼️ **Auto-preview** of the final PDF on completion.\n- 🧱 **Modular code**, fully SOLID and documented.\n\n---\n\n## 🛠 Requirements\n\n- Python 3.10+\n- [`wkhtmltopdf`](https://wkhtmltopdf.org/) (must be in your system PATH)\n- Key packages:\n  - `python-docx`, `markdown2`, `pdfkit`, `openai`, `PyQt5`, `google-generativeai`\n\nInstall with pip:\n\n```bash\npip install -r requirements.txt\n```\n\nOr with Conda:\n\n```bash\nconda env create -f environment.yml\nconda activate resume_optimization\n```\n\n---\n\n## 🔐 Setup\n\n1. Copy `.env.example` → `.env`\n2. Add your API keys:\n\n```dotenv\nOPENAI_API_KEY=your_openai_key_here\nGOOGLE_API_KEY=your_gemini_key_here\n```\n\n---\n\n## 📌 Roadmap\n\n- [x] Add logging system and `.log` files\n- [x] Validate `.docx` input structure\n- [x] Previsualize exported PDF automatically\n- [x] Add `.env.example` for safer sharing\n- [ ] Add versioned filenames with timestamps\n- [ ] Batch mode: multiple resumes / jobs\n- [ ] Streamlit web version (GUI)\n- [ ] Add Claude or LLama2 support\n\n---\n\n## 👨‍💻 Author\n\nCrafted with care by **Manuel Cruz Rodríguez**,  \nGraduate in Hispanic Philology, NLP specialist, and AI enthusiast.\n\n\u003e “Because your skills deserve better than a Word template.”\n\n🔗 [LinkedIn](https://www.linkedin.com/in/mancrurod/)  \n📫 Feel free to fork, star, or open issues for feedback!\n\n---\n\n## 📘 License\n\nMIT — free to use, modify, and share.  \nPlease don’t generate Comic Sans PDFs. 🥲","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmancrurod%2Fresume-optimization","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmancrurod%2Fresume-optimization","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmancrurod%2Fresume-optimization/lists"}