| title | Resume Helper |
|---|---|
| emoji | π |
| colorFrom | pink |
| colorTo | purple |
| sdk | docker |
| app_port | 7860 |
| pinned | false |
An AI-powered resume analysis and career consultation application built with FastAPI. This application uses machine learning to classify resumes into job categories and provides personalized career advice through an AI chat interface.
- π User Authentication: Secure login and registration system
- π PDF Resume Upload: Upload and extract text from PDF resumes
- π€ ML-Powered Classification: Automatically categorize resumes into 24 different job categories
- π¬ AI Career Consultant: Chat with an AI assistant specialized in resume improvement and career strategy
- π¨ Modern UI: Clean, professional interface for resume analysis and editing
- π Resume Analysis: Get detailed insights and suggestions for your resume
The ML model can classify resumes into the following categories:
- Accountant, Advocate, Agriculture, Apparel, Arts, Aviation
- Automobile, Banking, BPO, Business-Development
- Chef, Consultant, Construction
- Designer, Digital-Media
- Engineering
- Finance, Fitness
- Healthcare, HR
- Information-Technology
- Public-Relations
- Sales, Teacher
- Python 3.8 or higher
- pip (Python package installer)
- Git
git clone <your-repository-url>
cd Resume_generatorOn macOS/Linux:
python3 -m venv .venv
source .venv/bin/activateOn Windows:
python -m venv .venv
.venv\Scripts\activatepip install -r requirements.txtCreate a .env file in the project root directory:
touch .envAdd your HuggingFace API token to the .env file:
HUGGINGFACE_API_TOKEN=your_huggingface_token_here
Note: Get your free HuggingFace API token from https://huggingface.co/settings/tokens
The application will automatically download required NLTK data on first run. However, if you encounter issues, you can manually download them:
python -c "import nltk; nltk.download('punkt'); nltk.download('punkt_tab'); nltk.download('stopwords'); nltk.download('wordnet')"Make sure the following ML model file is in the project root:
resume_classification_model1.pkl
If you don't have this file, you'll need to train the model or obtain it from the project maintainer.
mkdir -p uploads static templatesuvicorn app:app --reloadThe application will be available at: http://localhost:8000
uvicorn app:app --reload --port 8080- Navigate to http://localhost:8000
- Click on "Register" or go to http://localhost:8000/register
- Create a new account with a username and password
- Use your credentials to log in
- You'll be redirected to the home page
- Click "Upload Resume" or drag and drop a PDF file
- The system will extract text and classify your resume
- View the analysis results
- After uploading a resume, use the chat interface
- Ask questions about improving your resume
- Get personalized career advice and suggestions
- Click the logout button when finished
Resume_generator/
βββ app.py # Main FastAPI application
βββ Models.py # Pydantic models for validation
βββ requirements.txt # Python dependencies
βββ .env # Environment variables (not in git)
βββ Login_Db.json # User database (auto-generated)
βββ resume_classification_model1.pkl # ML model for classification
βββ templates/ # HTML templates
β βββ home.html
β βββ login.html
β βββ register.html
β βββ result.html
β βββ result_new.html
βββ static/ # Static files (CSS, JS, images)
βββ uploads/ # Uploaded resume files
GET /- Redirect to loginGET /register- Registration pagePOST /register- Handle registrationGET /login- Login pagePOST /login- Handle loginGET /home- Home page (authenticated)GET /logout- Logout userPOST /upload-pdf- Upload and analyze resumePOST /chat- Chat with AI consultant
- Backend: FastAPI, Python
- ML/AI: scikit-learn, NLTK, LangChain, HuggingFace
- PDF Processing: pypdf
- Frontend: HTML, CSS, JavaScript (Jinja2 templates)
- Authentication: Session-based with cookies
If you encounter SSL certificate errors when downloading NLTK data, the app includes a workaround. If issues persist:
import ssl
ssl._create_default_https_context = ssl._create_unverified_contextEnsure the pickle file resume_classification_model1.pkl is in the project root and was created with a compatible Python version.
If port 8000 is already in use:
uvicorn app:app --reload --port 8080- Verify your API token is correct in the
.envfile - Check your internet connection
- Ensure you have access to the Meta-Llama-3-8B-Instruct model
- Never commit your
.envfile to Git - Change default passwords in production
- Use HTTPS in production
- Implement proper password hashing (currently uses plain text - should be updated)
- Add rate limiting for production use
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is available for educational and personal use.
For issues, questions, or contributions, please open an issue on GitHub.
Note: This application is designed for educational purposes. For production use, implement proper security measures including password hashing, HTTPS, rate limiting, and input validation.