Initial commit: LinkedIn Analyzer with Gemini 2.5 Flash and PHP Backend

This commit is contained in:
Hamza-Ayed
2026-05-17 01:28:17 +03:00
commit 8445affc78
18 changed files with 3323 additions and 0 deletions

158
README.md Normal file
View File

@@ -0,0 +1,158 @@
# 🔍 LinkedIn Job Analyzer
### AI-powered job analysis extension for Microsoft Edge & Chrome
> **Personal use only.** Powered by Gemini 2.0 Flash Lite (free tier — 1,000 requests/day).
---
## ✨ What It Does
When you open any LinkedIn job page, the extension automatically reads the job and gives you:
| Tab | What you get |
|-----|-------------|
| 📊 **Analysis** | Match score (X/100), strong matches, gaps, recommendation, best CV variant |
| ✉️ **Cover Letter** | Complete, personalized cover letter ready to send |
| 📝 **CV Tips** | Tailored headline, summary, keywords to add, what to emphasize |
| ❓ **Q&A** | Answers to application questions (Easy Apply form) |
| ⭐ **Benefits** | Perks, work arrangement, growth potential, red flags |
---
## 🚀 Installation (5 minutes)
### Step 1 — Get a Free Gemini API Key
1. Open: **https://aistudio.google.com/apikey**
2. Sign in with any Google/Gmail account
3. Click **"Create API Key"** → **"Create API key in new project"**
4. Copy the key (looks like: `AIzaSy...39 characters`)
5. **No credit card needed** — completely free
> Free tier: **1,000 requests/day** — more than enough for personal job search.
### Step 2 — Install the Extension in Edge
1. Open Microsoft Edge
2. In the address bar, type: **`edge://extensions`** and press Enter
3. Toggle **"Developer mode"** ON (bottom-left corner)
4. Click **"Load unpacked"**
5. Select this folder: `/path/to/linkedin-analyzer/`
6. The 🔍 icon will appear in your toolbar
**For Chrome:** Go to `chrome://extensions` instead — same steps.
### Step 3 — Configure the Extension
1. Click the **🔍 icon** in your toolbar
2. Paste your **Gemini API Key** in the field
3. Click **"Test"** to verify it works (should show ✅ Valid)
4. Review your **profile** — it's pre-filled with your data, edit if needed
5. Click **"Save Settings"**
---
## 📖 How to Use
### Automatic Mode (recommended)
1. Go to any LinkedIn job page: `linkedin.com/jobs/view/...`
2. Wait 1-2 seconds — a **🔍 purple button** appears in the bottom-right corner
3. Click it to open the analysis panel
4. You'll see the job title and company already extracted
5. Click **"⚡ Analyze This Job"**
6. Switch between tabs to see all results
7. Click **📋 Copy** to copy any result to clipboard
### Manual Mode
If auto-detection doesn't work (e.g. on job aggregators):
1. Open the panel
2. Click **"📋 Paste job description manually"**
3. Paste the full job description text
4. Click **"Use this text"**
5. Click **"⚡ Analyze This Job"**
### Q&A Auto-fill
When Easy Apply is open and you're on the Q&A tab:
- After generating answers, a **"📝 Auto-fill Answers"** button appears
- Click it to automatically fill the form fields
- Always review before submitting!
---
## ⚙️ Settings Reference
| Setting | Description |
|---------|-------------|
| **API Key** | Your Gemini API key from aistudio.google.com |
| **Test Key** | Verifies the key works with a live API call |
| **Profile** | Your CV/experience text — used in all AI prompts |
| **Reset Profile** | Restores the default pre-filled profile |
| **Language** | Auto (matches job language), Always English, Always Arabic |
| **Daily Usage** | Shows how many of your 1,000 daily requests you've used |
| **Clear Cache** | Removes stored analysis results (forces re-analysis) |
| **Clear All Data** | Removes everything including API key |
---
## 💡 Tips & Tricks
- **Results are cached for 24 hours** — revisiting the same job doesn't use quota
- **Drag the panel** by clicking and holding the header
- **Minimize** with the `` button — the 🔍 toggle stays visible
- If LinkedIn **updates its layout**, use Manual Mode as fallback
- The **cover letter** is written in the job's language (Arabic or English) by default
- For the **best results**, keep your profile text detailed and up to date
---
## 🔒 Privacy & Security
- Your **API key is stored locally** in the browser extension storage — never sent anywhere except Google's Gemini API
- Your **profile data stays local** — only sent to Gemini when you click Analyze
- **No analytics**, no tracking, no external servers
- The extension only runs on `linkedin.com/jobs/*` pages
---
## ❓ Troubleshooting
| Problem | Solution |
|---------|----------|
| Panel doesn't appear | Wait 2-3 seconds after page loads, then scroll the page slightly |
| Job not detected | Use Manual Mode — paste the job description |
| "Daily limit reached" | Wait until midnight Pacific Time (PT) for quota reset |
| "Invalid API key" | Re-check the key in settings and click Test |
| Analysis is wrong | Edit your profile in settings to be more accurate |
| Panel overlaps content | Drag it to a different position |
---
## 📁 File Structure
```
linkedin-analyzer/
├── manifest.json # Extension configuration
├── content.js # Page scraper + overlay logic
├── overlay.css # Dark luxury UI styles
├── background.js # Gemini API calls + caching
├── popup.html # Settings page UI
├── popup.js # Settings logic
├── profile.js # Default profile data
├── icons/
│ ├── icon16.png
│ ├── icon48.png
│ └── icon128.png
└── README.md # This file
```
---
## 🔄 Updating
When LinkedIn changes its layout (happens 2-4x per year):
1. The DOM selectors in `content.js``extractJobData()` may need updating
2. Use browser DevTools (F12) on a job page to find new selectors
3. Manual Mode always works as fallback
---
*Built for personal job search use. Not affiliated with LinkedIn or Google.*