An AI-powered web application that automatically finds and analyzes job postings against your professional profile to provide intelligent matching recommendations, skill gap analysis, and personalized interview tips.
- Automatic Job Search: Finds remote USA jobs matching your profile title and skills — scored and ranked automatically
- Resume Auto-fill: Upload a PDF resume to automatically extract and structure your profile data
- Multi-input Job Analysis: Analyze jobs via pasted text, PDF upload, or URL scraping
- Qualification Scoring: Get a 0-100 match score with color-coded ratings (only jobs ≥75 shown)
- Skills Analysis: See matching skills (green) vs. missing skills (red)
- Apply Verdict: Clear YES/NO recommendation with reasoning
- Salary Assessment: Compare job compensation against your expectations
- Red/Green Flags: Identify potential concerns and positive indicators
- Interview Tips: Personalized preparation advice based on the job requirements
- Export to PDF: Export any analysis result to PDF directly from the browser
- Backend: FastAPI, Uvicorn, Pydantic
- AI: Claude
- Frontend: HTML5, CSS3, Vanilla JavaScript
- Data Processing: BeautifulSoup4, pypdf
- Python 3.7+
- Claude API key
-
Clone the repository:
git clone https://github.com/rlanier-webdev/ai-job-analyzer.git cd ai-job-analyzer -
Create and activate a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Create a
.envfile from the example:cp .env.example .env
-
Add your Claude API key to
.env:ANTHROPIC_API_KEY=your-api-key-here
-
Start the server:
python main.py
-
Open your browser to
http://127.0.0.1:5003 -
Set up your profile:
- Click "Auto-fill from Resume (PDF)" to upload your resume, OR
- Click "Edit Manually" to enter your information
-
Find jobs automatically:
- Click "Find Jobs for Me" to search for remote USA jobs matching your profile
- Results are scored by Claude and ranked — only matches ≥75% shown
- Click "Full Analysis" on any result for a deep-dive, or "View Posting" to open the original
-
Analyze a specific job posting:
- Choose input method (Paste Text / Upload PDF / Enter URL)
- Provide the job posting content
- Click "Analyze Job"
-
Review your results including qualification score, skill matches, and recommendations
-
Click Export PDF to save the analysis results to a PDF file
job-analyzer/
├── main.py # Entry point - starts Uvicorn server
├── index.html # Single-page application UI
├── requirements.txt # Python dependencies
├── .env.example # Environment template
├── profile.example.json # Sample profile structure
├── src/
│ ├── web.py # FastAPI routes & endpoints
│ ├── parser.py # Job posting extraction logic
│ ├── analyzer.py # Job-profile matching analysis
│ ├── profile.py # Profile data model & management
│ └── searcher.py # Automatic job search (Remotive API)
└── static/
├── styles.css # UI styling
└── scripts.js # Frontend JavaScript
| Method | Endpoint | Description |
|---|---|---|
| GET | / |
Serve the web application |
| GET | /api/profile |
Get current profile |
| POST | /api/profile |
Save profile manually |
| POST | /api/profile/upload-resume |
Parse resume PDF and create profile |
| POST | /api/analyze/{mode} |
Analyze job (mode: text, pdf, or url) |
| POST | /api/search |
Search for jobs matching the current profile |
- Profile Storage: Your profile is saved to
profile.jsonand automatically loaded on startup - Server: Runs on
127.0.0.1:5003(localhost only) - Job Search: Powered by Remotive API — free, no API key required. Searches remote USA-eligible jobs and filters results to ≥75% match score.
MIT