AI-powered job application automation system that streamlines your job search workflow using GPT-4o, automated scraping, resume optimization, LinkedIn outreach, and intelligent cold email campaigns.
Perfect for: Job seekers in EdTech, L&D, AI Product Management, and Automation fields
- π Automated Indeed Scraping via Apify
- π€ AI-Powered Job Scoring (0-10 rating based on your profile)
- π Smart Categorization (EdTech, AI PM, Automation, L&D)
- πΎ Database Caching (Neon PostgreSQL + Local SQLite fallback)
- π¦ Load Cached Jobs (reuse previous searches, save API quota)
- π€ Multi-Format Upload: Support PDF, DOCX, and Markdown master resumes
- π¨ Professional Templates: 4 ATS-friendly templates (single/two-column, classic/modern)
- π§ GPT-4o Powered: Resume optimization uses GPT-4o for higher accuracy
- π ATS Scoring: Real-time ATS compatibility score with keyword matching
- π― Job-Tailored Resumes: AI optimizes resume for each job description
- π Anti-Hallucination: Iron-clad data protection - dates, locations locked
- π School Configuration: Set your alumni schools (priority-ranked)
- π·οΈ Target Fields: Define your professional interests (L&D, AI, etc.)
- π Job Integration: Link high-value jobs to LinkedIn search
- π One-Click LinkedIn Launch: Search alumni directly from UI
- π Chrome DevTools MCP: AI-friendly browser automation via accessibility tree
- π Alumni Search: Find 2nd-degree connections from your schools
- π€ AI Agents:
- ContactRankerAgent: Priority scoring (0-100) based on job match, alumni status
- ScamDetectionAgent: Filter suspicious profiles automatically
- PersonalizationAgent: GPT-4 powered message generation
- π§ Memory Layer: ChromaDB vector storage for learning from successful messages
- π¨ Auto-Connect: Send connection requests with rate limiting (10-20s delays)
- πΎ Persistent Profile: Uses dedicated Chrome profile (no conflict with personal Chrome)
- π Draft Cold Emails: AI-generated personalized emails
- π¬ Gmail Integration: Create drafts directly in Gmail
- π Email Statistics: Track drafts, sent, replied counts
- β° Follow-up Queue: Auto-generate follow-up drafts
- π Kanban Board: Visual pipeline (To Apply β Sent β Replied β Interview)
- π Applied History: Manage manually marked applications
- π― One-Click Apply: Move jobs through stages
- π§ Status Tracking: Real-time application status
| Category | Technology |
|---|---|
| AI/LLM | OpenAI GPT-4o / GPT-4o-mini |
| Frontend | Streamlit 1.30+ |
| Backend | Python 3.11+ |
| Database | Neon PostgreSQL (cloud) |
| Job Scraping | Apify (Indeed Actor) |
| LinkedIn Automation | Chrome DevTools MCP (Puppeteer-based) |
| Memory Layer | ChromaDB (Vector Database) |
| Gmail API (OAuth 2.0) | |
| Resume | python-docx, ReportLab (PDF) |
| ORM | SQLAlchemy 2.0 |
- Python 3.11+
- Node.js 18+ (for Chrome DevTools MCP)
- Git
# 1. Clone the repository
git clone https://github.com/Schlaflied/job-autopilot.git
cd job-autopilot
# 2. Create virtual environment
python -m venv venv
venv\Scripts\activate # Windows
source venv/bin/activate # macOS/Linux
# 3. Install dependencies
pip install -r requirements.txt
# 4. Configure environment variables
cp .env.example .env
# Edit .env with your API keys
# 5. Initialize database
python scripts/init_database.py
python scripts/init_coffee_chat_db.py
# 6. Run the application
streamlit run streamlit_app.py --server.port=8502Access the app: http://localhost:8502
You can run the entire application in a Docker container (recommended for stability).
# 1. Build the image
docker build -t job-autopilot .
# 2. Run the container
# We map port 8502 and allow access to the host's Chrome (CDP)
docker run -p 8502:8502 -p 5000:5000 \
--add-host=host.docker.internal:host-gateway \
--env-file .env \
-v "%cd%/data":/app/data \
job-autopilotNote: The
--add-hostflag is crucial for the Docker container to connect to your local Chrome instance for LinkedIn automation.
job-autopilot/
βββ modules/
β βββ ai_agent.py # GPT-4o integration (scoring, resume, emails)
β βββ coffee_chat_agents.py # β¨ AI Agents (Ranker, Scam, Personalization)
β βββ coffee_chat_memory.py # β¨ ChromaDB Memory Layer
β βββ coffee_chat_models.py # SQLAlchemy models for Coffee Chat
β βββ linkedin_automation.py # β¨ LinkedIn search and automation
β βββ job_scraper.py # Apify job scraper with caching
β βββ job_contact_integrator.py # Job + Contact integration
β βββ gmail_service.py # Gmail API integration
β βββ database.py # SQLAlchemy models (Neon PostgreSQL)
β βββ resume_generator.py # Resume PDF/DOCX generation
β βββ logger_config.py # Centralized logging
βββ pages/
β βββ coffee_chat_center.py # β¨ Coffee Chat Dashboard
β βββ user_profile.py # β¨ School & Fields Configuration
βββ scripts/
β βββ linkedin_auto_connect.py # β¨ End-to-end LinkedIn automation
β βββ init_database.py # Database initialization
β βββ init_coffee_chat_db.py # Coffee Chat tables
βββ docs/
β βββ COFFEE_CHAT_PLAN/ # LinkedIn & Coffee Chat documentation
βββ streamlit_app.py # Main Streamlit UI
βββ requirements.txt # Python dependencies
βββ README.md # This file
OPENAI_API_KEY=sk-proj-your_openai_api_key_here
OPENAI_MODEL=gpt-4o-mini- Get key: https://platform.openai.com/api-keys
APIFY_API_TOKEN=apify_api_your_token_hereDATABASE_URL=postgresql://user:password@host.neon.tech/dbname?sslmode=require- Get database: https://neon.tech/
GMAIL_CREDENTIALS_PATH=./data/credentials/gmail_credentials.json
GMAIL_TOKEN_PATH=./data/credentials/gmail_token.jsonThis project uses a direct connection to Chrome's DevTools Protocol (CDP) to "read" web pages and perform actions like a human agent.
To allow the app to control your browser, you must launch Chrome with a specific debugging port (9222).
Windows Users:
- Locate
launch_chrome_debug.batin the project root. - Double-click to run it.
- A new Chrome window will open. Log in to LinkedIn in this window.
- Go to the Coffee Chat Center page in the app.
- Click "π Test Connection" to verify the app can "see" your Chrome window.
- Use features like "Dive & Draft":
- The app will navigate Chrome to a contact's profile.
- It reads the screen (using MCP/CDP).
- AI analyzes the profile hooks and drafts a message.
- Click "Paste to LinkedIn" to insert the draft.
Your Data Stays With You.
- Local Database: Job data is stored in your local PostgreSQL/SQLite instance.
- Local Browser: Automation happens on your machine, in your browser.
- Git Ignoring: The
.gitignoreis pre-configured to exclude:docs/(Your personal strategies/logs)data/(Resumes, credentials)chroma_data/(AI memory)*.csv(LinkedIn exports)
To Import LinkedIn Connections:
- Export your data from LinkedIn Settings (
Connections.csv). - Place it in the project folder.
- Run the import script (or use the UI uploader).
python scripts/import_enhanced_connections.py
# Direct script execution
python scripts/linkedin_auto_connect.py --company "google.com" --school "University of Western Ontario" --limit 5| Service | Cost | Notes |
|---|---|---|
| OpenAI GPT-4o-mini | ~$5-10/mo | Job scoring + resume + emails |
| OpenAI Embeddings | ~$0.30/1000 contacts | Memory Layer vectors |
| Apify (Indeed scraper) | $0 (free tier) | $5 free credit |
| Neon PostgreSQL | $0 (free tier) | 0.5GB storage |
| Gmail API | $0 | Free for personal use |
| Total | $5-10/mo | Scalable to 100+ applications |
taskkill /F /IM chrome.exe- The script uses a dedicated profile at
C:/temp/linkedin-automation-profile - First run requires manual LinkedIn login
- Login persists for future runs
- Try different company/school combinations
- Some companies have few alumni in your network
This project is licensed under GNU Affero General Public License v3.0 (AGPL-3.0).
- β Free to use, modify, distribute
β οΈ Must open-source modifications under same licenseβ οΈ Network users entitled to source code
- OpenAI for GPT-4o API
- Google Chrome DevTools Team for Chrome DevTools MCP
- Apify for job scraping infrastructure
- Neon for free PostgreSQL tier
- ChromaDB for vector database
- Resume-Matcher for inspiring our PDF/DOCX parsing approach using
pdfminer.sixanddocx2txt - Job seekers worldwide πͺ
- LinkedIn auto-connect with AI agents
- Memory layer for learning from successful messages
- Coffee chat message automation (post-connection)
- Multi-language support
- Interview prep AI coach
β Star this repo if it helped you land a job! β


