AI-powered suite of interactive tools to help job seekers strengthen their application materials. Built with Python, Gradio, and Llama 3.3 via the Hugging Face Inference API.
This is an AI-powered suite of interactive tools designed to help job seekers strengthen their application materials. The project provides four distinct but complementary tools for resume enhancement and job application preparation:
- Resume Polisher - Takes a resume and target position, returning an improved version tailored to that role
- HTML Resume Generator - Creates professional HTML versions of resumes that can be easily shared or embedded
- Cover Letter Generator - Generates customized cover letters from resume content, company name, position, and job description
- Career Advisor - Compares a resume against a job description and provides targeted advice on improvements
- Settings - Allows entering your own Hugging Face API Key
- LLM: Meta Llama 3.3 70B Instruct (via Hugging Face Inference API)
- UI: Gradio 5.x (with version 6.16.0 in requirements)
- Config:
python-dotenvfor environment variables - Python: 3.11+
The application uses a unified Gradio interface with four tabs, each representing one of the core tools. The key architectural decisions include:
- Shared LLM Client: All tools share a single InferenceClient instance to reduce API overhead and improve efficiency
- Modular Design: Each tool is implemented as a separate function with its own tab structure, making the code organized and maintainable
- Prompt Engineering: Each tool uses carefully crafted prompts optimized for its specific task:
- Resume polishing focuses on role-specific improvements
- HTML generation includes detailed markdown-to-HTML conversion instructions
- Career advice compares job requirements with resume content
- Cover letter generation emphasizes alignment with actual resume experience
- HTML Generation with Image Support:
- Supports profile photo upload and embedding in generated HTML
- Converts markdown syntax to proper HTML tags (bold, italic, code, tables, lists)
- Uses responsive design with inline CSS for maximum compatibility
- Handles fallback scenarios when placeholders are missing
- Shared LLM Client:
- Single InferenceClient instance shared across all tabs
- Uses meta-llama/Llama-3.3-70B-Instruct model for all operations
- Configured with appropriate temperature and token settings for each task type
- Error Handling
- Input sanitization is handled through the LLM's own processing (the prompts are carefully crafted)
- The application follows standard Python project structure with proper separation of concerns
This is a well-designed, production-ready application that leverages modern AI capabilities to provide practical value to job seekers while demonstrating good software engineering practices in its implementation.
ResumePolisher/
├── main.py # Unified entry point (4-tab Gradio app)
├── config.py # Centralized configuration
├── requirements.txt # Python dependencies
├── .env # Environment variables (not tracked)
├── .gitignore # Git ignore rules
└── CLAUDE.md # Architecture guide for Claude Code
See CLAUDE.md for detailed architectural guidance on how this codebase is structured, including the shared LLM client pattern, component design, and configuration management.
The main.py file serves as the single entry point that orchestrates all four tools while sharing a single LLM client, which is an optimization to reduce API call overhead and improve performance.
- Environment variables are properly managed via python-dotenv
- The .gitignore file ensures sensitive information like API tokens aren't committed
- Input sanitization is handled through the LLM's own processing (the prompts are carefully crafted)
- The application follows standard Python project structure with proper separation of concerns
This is a well-designed, production-ready application that leverages modern AI capabilities to provide practical value to job seekers while demonstrating good software engineering practices in its implementation.
-
Clone the repository:
git clone <repo-url> cd ResumePolisher
-
Create a virtual environment and activate it:
python3 -m venv .venv source .venv/bin/activate -
Install dependencies:
pip install -r requirements.txt
-
Create a
.envfile and add your Hugging Face token:HF_TOKEN=your_hugging_face_api_token_here
Launch the unified app with all four tools in one tabbed interface:
python main.pyThis starts a local web server (default http://localhost:7860). Open the URL shown in your browser to access all tools.
The application now supports providing your own Hugging Face token at execution time through the UI. This feature allows you to use your personal API token instead of relying on a default token, enabling better control over your usage and avoiding potential rate limiting issues.
- The unified
main.pyapp shares a singleInferenceClientacross all tabs. - All prompts are crafted to avoid fabricating experience — the cover letter generator explicitly emphasizes aligning real qualifications with job requirements.
This project was developed (and extended and personalized to work locally) as part of the IBM Generative AI Engineering course on Coursera (Course 6: Building Generative AI-Powered Applications with Python).