|
2 | 2 | **An AI-powered ATS-optimized cover letter generator leveraging LLaMA-3.1-8B-Instant via Groq's API.** |
3 | 3 |
|
4 | 4 |  |
5 | | - <img src="https://img.shields.io/badge/Python-3.12-blue" alt="Python version"> <img src="https://img.shields.io/badge/Streamlit-1.26.0-red" alt="Streamlit"> |
| 5 | + <img src="https://img.shields.io/badge/Python-3.12-blue" alt="Python version"> <img src="https://img.shields.io/badge/Streamlit-1.26.0-red" alt="Streamlit">  |
6 | 6 |
|
7 | 7 | --- |
8 | 8 |
|
9 | | -## **✨ Key Features** |
| 9 | +## **🌟 Overview** |
10 | 10 |
|
11 | | -✅ **Resume/CV Parsing** – Extracts text from uploaded PDFs |
12 | | -✅ **Job Description Input** – Paste job details or fetch via URL |
13 | | -✅ **AI-Powered Matching** – LLaMA-3.1-8B-Instant tailors cover letters dynamically |
14 | | -✅ **ATS Optimization** – Ensures compliance with hiring algorithms |
15 | | -✅ **Side-by-Side Review** – Compare your resume with the job description |
16 | | -✅ **Professional PDF Output** – Generates a polished, ready-to-submit cover letter |
17 | | -✅ **Signature Generation** – Auto-generates a digital signature |
18 | | -✅ **Cloud-Ready Deployment** – Compatible with Streamlit Cloud & Hugging Face Spaces |
| 11 | +The **ATS Cover Letter Generator** bridges the gap between job seekers and employers by leveraging AI to create perfectly tailored, Applicant Tracking System (ATS) optimized cover letters. Using Groq's high-performance LLaMA-3.1-8B-Instant API, the application analyzes your resume and job descriptions to craft compelling cover letters that increase your chances of interview selection. |
19 | 12 |
|
20 | | ---- |
| 13 | +## **✨ Key Features** |
21 | 14 |
|
22 | | -## **🚀 Installation & Setup** |
| 15 | +| Feature | Description | |
| 16 | +|---------|-------------| |
| 17 | +| 📄 **Resume/CV Parsing** | Extracts text from uploaded PDFs automatically | |
| 18 | +| 🔍 **Job Description Analysis** | Paste job details directly or fetch via URL | |
| 19 | +| 🧠 **AI-Powered Matching** | LLaMA-3.1-8B-Instant tailors content to highlight relevant skills | |
| 20 | +| 🎯 **ATS Optimization** | Strategic keyword placement ensures visibility to hiring algorithms | |
| 21 | +| 👁️ **Side-by-Side Review** | Compare your resume with job requirements in real-time | |
| 22 | +| 📑 **Professional PDF Output** | Generate polished, ready-to-submit cover letters | |
| 23 | +| ✍️ **Digital Signature** | Auto-generates signature for a professional touch | |
| 24 | +| ☁️ **Flexible Deployment** | Deploy via Docker, Streamlit Cloud, or Hugging Face Spaces | |
23 | 25 |
|
24 | | -### **🔹 Prerequisites** |
25 | | -- Python **3.8+** (Recommended: 3.12) |
26 | | -- Groq API Key ([Get one here](https://console.groq.com/)) |
| 26 | +## **🚀 Quick Start** |
27 | 27 |
|
28 | | -### **🔹 Local Setup** |
| 28 | +### **Using Docker (Recommended)** |
29 | 29 |
|
30 | | -1⃣ **Clone the repository:** |
31 | | - ```bash |
32 | | - git clone https://github.com/MohammedNasserAhmed/ats-cover-letter-generator.git |
33 | | - cd ats-cover-letter-generator |
34 | | - ``` |
| 30 | +```bash |
| 31 | +# Pull the image |
| 32 | +docker pull mohammednasserahmed/ats-cover-letter-generator:latest |
35 | 33 |
|
36 | | -2⃣ **Create & activate a virtual environment:** |
37 | | - ```bash |
38 | | - python -m venv venv |
39 | | - source venv/bin/activate # On Windows: venv\Scripts\activate |
40 | | - ``` |
| 34 | +# Run the container |
| 35 | +docker run -d -p 8501:8501 -e GROQ_API_KEY=your_groq_api_key_here mohammednasserahmed/ats-cover-letter-generator |
| 36 | +``` |
41 | 37 |
|
42 | | -3⃣ **Install dependencies:** |
43 | | - ```bash |
44 | | - pip install -r requirements.txt |
45 | | - ``` |
| 38 | +### **Local Installation** |
46 | 39 |
|
47 | | -4⃣ **Set up environment variables:** |
48 | | - Create a `.env` file and add your API key: |
49 | | - ``` |
50 | | - GROQ_API_KEY=your_groq_api_key_here |
51 | | - ``` |
| 40 | +```bash |
| 41 | +# Clone the repository |
| 42 | +git clone https://github.com/MohammedNasserAhmed/ats-cover-letter-generator.git |
| 43 | +cd ats-cover-letter-generator |
52 | 44 |
|
53 | | -5⃣ **Run the application:** |
54 | | - ```bash |
55 | | - streamlit run src/ats_cover_letter_generator/app.py |
56 | | - ``` |
| 45 | +# Create & activate virtual environment |
| 46 | +python -m venv venv |
| 47 | +source venv/bin/activate # On Windows: venv\Scripts\activate |
57 | 48 |
|
58 | | -6⃣ **Access the app** at [`http://localhost:8501`](http://localhost:8501) |
| 49 | +# Install dependencies |
| 50 | +pip install -r requirements.txt |
59 | 51 |
|
60 | | ---- |
| 52 | +# Set up environment variable |
| 53 | +echo "GROQ_API_KEY=your_groq_api_key_here" > .env |
61 | 54 |
|
62 | | -## **🌐 Deployment Options** |
| 55 | +# Run the application |
| 56 | +streamlit run src/ats_cover_letter_generator/app.py |
| 57 | +``` |
63 | 58 |
|
64 | | -### **1⃣ Deploy on Streamlit Cloud** |
65 | | -1. Push your code to a **public GitHub repository** |
66 | | -2. Log in to [Streamlit Cloud](https://streamlit.io/cloud) |
67 | | -3. Create a new app & select your repository |
68 | | -4. **Add API secrets** under **"Secrets Management"** |
69 | | -5. Click **Deploy** 🎉 |
| 59 | +Then access the app at [http://localhost:8501](http://localhost:8501) |
70 | 60 |
|
71 | | ---- |
| 61 | +## **🌐 Deployment Options** |
72 | 62 |
|
73 | | -### **2⃣ Deploy on Hugging Face Spaces** |
74 | | -1. Create a Hugging Face account |
75 | | -2. Create a new **Space** (select **Streamlit SDK**) |
76 | | -3. Upload your app files |
77 | | -4. Add `GROQ_API_KEY` in **Settings → Secrets** |
78 | | -5. Deploy 🚀 |
| 63 | +### **🐳 Docker Deployment** |
79 | 64 |
|
80 | | ---- |
| 65 | +```bash |
| 66 | +# Build the Docker image |
| 67 | +docker build -t ats-cover-letter-generator . |
| 68 | + |
| 69 | +# Run the container |
| 70 | +docker run -d -p 8501:8501 -e GROQ_API_KEY=your_groq_api_key_here ats-cover-letter-generator |
| 71 | +``` |
| 72 | + |
| 73 | +### **☁️ Streamlit Cloud** |
| 74 | + |
| 75 | +1. Fork this repository to your GitHub account |
| 76 | +2. Log in to [Streamlit Cloud](https://streamlit.io/cloud) |
| 77 | +3. Create a new app & point to your forked repository |
| 78 | +4. Set the main file path to `src/ats_cover_letter_generator/app.py` |
| 79 | +5. Add your `GROQ_API_KEY` under "Secrets Management" |
| 80 | +6. Deploy and share your application |
| 81 | + |
| 82 | +### **🤗 Hugging Face Spaces** |
| 83 | + |
| 84 | +1. Create a Hugging Face account |
| 85 | +2. Create a new Space (select Streamlit SDK) |
| 86 | +3. Configure the repository settings to point to your GitHub repo |
| 87 | +4. Add `GROQ_API_KEY` in Settings → Secrets |
| 88 | +5. Deploy and share your Space URL |
| 89 | + |
| 90 | +### **🖥️ Production Server (Background Process)** |
81 | 91 |
|
82 | | -### **3⃣ Run on a Local Server** |
83 | | -To keep it running in the background: |
84 | 92 | ```bash |
85 | 93 | nohup streamlit run src/ats_cover_letter_generator/app.py --server.port 8501 & |
86 | 94 | ``` |
87 | 95 |
|
88 | | ---- |
| 96 | +## **⚙️ Customization & Advanced Usage** |
89 | 97 |
|
90 | | -## **⚙️ Customization** |
| 98 | +### **Adjusting AI Parameters** |
91 | 99 |
|
92 | | -🔹 **AI Creativity Control** – Adjust temperature in the sidebar |
93 | | -🔹 **Template Customization** – Modify PDF styling in `create_pdf_cover_letter()` |
94 | | -🔹 **Prompt Engineering** – Tweak `generate_cover_letter()` for different outputs |
| 100 | +The sidebar provides controls for adjusting the AI's creativity level (temperature): |
| 101 | +- **Low (0.1-0.3)**: More conservative, follows templates closely |
| 102 | +- **Medium (0.4-0.7)**: Balanced creativity and precision |
| 103 | +- **High (0.8-1.0)**: More innovative, varied outputs |
95 | 104 |
|
96 | | ---- |
| 105 | +### **Modifying Templates** |
97 | 106 |
|
98 | | -## **🤝 Contributing** |
99 | | -💡 **Contributions are welcome!** If you find a bug or have an idea for improvement: |
100 | | -1. **Fork the repository** |
101 | | -2. **Create a new branch** (`feature-xyz`) |
102 | | -3. **Submit a Pull Request (PR)** |
| 107 | +Edit the PDF template in `src/ats_cover_letter_generator/utils/pdf_generator.py`: |
103 | 108 |
|
104 | | ---- |
| 109 | +```python |
| 110 | +def create_pdf_cover_letter(content, name, signature_image): |
| 111 | + # Customize styling, layout and formatting here |
| 112 | + ... |
| 113 | +``` |
105 | 114 |
|
106 | | -## **📝 License** |
107 | | -**MIT License** – Free to use & modify. See `LICENSE` for details. |
| 115 | +### **Custom Prompts** |
108 | 116 |
|
109 | | ---- |
| 117 | +Enhance the AI prompting in `src/ats_cover_letter_generator/utils/ai_helpers.py`: |
| 118 | + |
| 119 | +```python |
| 120 | +def generate_cover_letter(resume_text, job_description, temp=0.7): |
| 121 | + # Modify the prompt template to adjust tone, style, or focus |
| 122 | + ... |
| 123 | +``` |
| 124 | + |
| 125 | +## **📊 Performance & Limitations** |
| 126 | + |
| 127 | +- **Processing Time**: ~5-15 seconds depending on input length |
| 128 | +- **Token Limits**: Maximum combined resume + job description ~8,000 tokens |
| 129 | +- **Best Results**: Achieved with clean, well-structured resumes and detailed job descriptions |
| 130 | + |
| 131 | +## **🤝 Contributing** |
| 132 | + |
| 133 | +Contributions are welcome! Help improve this tool by: |
| 134 | + |
| 135 | +1. Forking the repository |
| 136 | +2. Creating a feature branch (`git checkout -b feature/amazing-improvement`) |
| 137 | +3. Committing your changes (`git commit -am 'Add amazing improvement'`) |
| 138 | +4. Pushing to the branch (`git push origin feature/amazing-improvement`) |
| 139 | +5. Opening a Pull Request |
| 140 | + |
| 141 | +See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines. |
| 142 | + |
| 143 | +## **🔍 Architecture** |
| 144 | + |
| 145 | +``` |
| 146 | +ats-cover-letter-generator/ |
| 147 | +├── .venv/ # Virtual environment |
| 148 | +├── assets/ # Assets like images and demo GIFs |
| 149 | +├── src/ |
| 150 | +│ └── ats_cover_letter_generator/ |
| 151 | +│ ├── __init__.py # Package initialization |
| 152 | +│ ├── app.py # Main Streamlit application |
| 153 | +│ ├── test_app.py # Unit tests for the application |
| 154 | +│ |
| 155 | +├── Dockerfile # Docker configuration |
| 156 | +├── requirements.txt # Python dependencies |
| 157 | +├── README.md # Project documentation |
| 158 | +└── .env # Environment variables # Project documentation |
| 159 | +``` |
| 160 | + |
| 161 | +## **📝 License** |
| 162 | + |
| 163 | +This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. |
| 164 | + |
| 165 | +## **📩 Contact & Support** |
110 | 166 |
|
111 | | -### **📩 Contact & Support** |
112 | | -🔗 **GitHub Issues** – Report bugs or feature requests [here](https://github.com/MohammedNasserAhmed/ats-cover-letter-generator/issues) |
113 | | - |
| 167 | +- **GitHub Issues**: [Report bugs or request features](https://github.com/MohammedNasserAhmed/ats-cover-letter-generator/issues) |
| 168 | + |
114 | 169 |
|
115 | 170 | --- |
116 | 171 |
|
117 | | -🚀 **Empower your job applications with AI. Build ATS-optimized cover letters in seconds!** |
| 172 | +<p align="center"> |
| 173 | + <b>Empower your job search with AI-crafted, ATS-optimized cover letters in seconds!</b> |
| 174 | +</p> |
0 commit comments