Spaces:
Sleeping
AI Resume & Cover Letter Generator
AI-powered app that analyzes a job description and your background, then generates a tailored resume (Markdown β PDF) and cover letter (text β PDF). Built with Streamlit, Pydantic, and LiteLLM.
Features
- Analyse JD + resume to extract strengths, gaps, and suggestions
- Refine analysis with feedback
- Generate resume (Markdown) and cover letter (text)
- Export PDFs and a combined ZIP
Quick Start
1. Configure Secrets
First, copy the example environment file and add your LLM API key.
cp .env.example .env
Now, edit the .env file to add your OPENAI_API_KEY or keys for other supported providers.
2. Install Dependencies
You will need Python 3.9+ and can use uv (recommended) or pip.
Using uv:
# Install uv if you don't have it
pip install uv
# Install dependencies from pyproject.toml
uv sync
Using pip:
pip install streamlit litellm pydantic pyyaml weasyprint python-dotenv pytest tenacity markdown-it-py
Note: weasyprint may require installing system-level dependencies like Pango, Cairo, and GDK-PixBuf. Please see the WeasyPrint documentation for platform-specific instructions.
3. Run the Application
Once dependencies are installed, run the Streamlit app:
Start the Application:
streamlit run app.py
You can now view the application in your browser, typically at http://localhost:8501.
Run Tests:
pytest -q
Project Structure
apply-helper/
βββ pyproject.toml # Project dependencies and scripts
βββ README.md # This file
βββ app.py # Streamlit frontend main entry point
βββ docs/
β βββ prd.md # Product Requirements Document
β βββ spec.md # Technical Specifications
βββ services/
β βββ analyse_service.py
β βββ generation_service.py
β βββ pdf_service.py
β βββ llm_service.py
βββ llm/
β βββ litellm_client.py
β βββ prompt_templates.py
βββ exports/ # Directory for exported PDF files
βββ tests/ # Unit tests
PYTHONPATH=src python -m services.analyse_service