DOC.01LIAP

๐Ÿ“‹ 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

LayerTechnologyRole
BackendPython + FastAPIAPI server, WebSocket streaming
BrowserPlaywright (Chromium)LinkedIn automation via persistent Chrome context
AIOllama (llama3.1:8b) or GeminiMessage generation
FrontendVanilla JS + CSSSingle-page dashboard UI
DataCSV filesLogging, dedup, follow-up tracking
RealtimeWebSocketsLive 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.