๐ Project Overview
โ Home
What It Does
LinkedIn Automator is a personal cold outreach tool that runs entirely on your local machine. It reuses your existing Chrome login session to operate LinkedIn as you would โ no headless scraping, no unofficial APIs.
It handles three phases of the outreach funnel automatically:
1. Find decision makers at target companies
โ
2. Send AI-personalized connection request notes
โ
3. Send AI-personalized first messages to new connections
โ
4. Detect replies โ send AI-personalized follow-up if silent
Tech Stack
| Layer | Technology | Role |
|---|---|---|
| Backend | Python + FastAPI | API server, WebSocket streaming |
| Browser | Playwright (Chromium) | LinkedIn automation via persistent Chrome context |
| AI | Ollama (llama3.1:8b) or Gemini | Message generation |
| Frontend | Vanilla JS + CSS | Single-page dashboard UI |
| Data | CSV files | Logging, dedup, follow-up tracking |
| Realtime | WebSockets | Live log streaming to UI |
File Map
linkedin-automator/
โโโ main.py # FastAPI app โ all HTTP + WebSocket endpoints
โโโ automator.py # Connection request automation (core Playwright logic)
โโโ messenger.py # Messaging + follow-up automation
โโโ logger.py # All CSV read/write (connections, messages, followups)
โโโ ai.py # Ollama + Gemini wrappers
โโโ run_logger.py # Per-run history logging
โโโ .env # Config (AI provider, caps, Chrome path)
โ
โโโ static/
โ โโโ index.html # Dashboard UI
โ โโโ app.js # All frontend JS
โ โโโ style.css # Styling
โ
โโโ connections.csv # Log of all connection requests sent
โโโ messages.csv # Log of all first messages sent
โโโ followups.csv # Follow-up tracker with status per person
โ
โโโ messenger_debug.log # Verbose step-by-step automation log
โโโ obsidian-vault/ # This documentation
Key Design Decisions
IMPORTANT โ Persistent Chrome Context The tool uses
launch_persistent_context()which reuses your real Chrome profile. LinkedIn sees it as your normal browser session โ not automation. This is the primary reason it works without triggering bot detection.
NOTE โ No Headless Mode Chrome runs visibly. You can watch every action in real time and stop anything with the Stop button.
TIP โ Local AI Only (default) By default, Ollama runs models locally. Your outreach data and message content never leave your machine.