This project ingests Untitled.csv (columns: Last Name, First Name, Account Name, Linkedin URL) and builds a local SQLite database:
people: Last Name, First Name (plus a consolidated First Name), Account Name, LinkedIn URLconnections: directed edges from each seed person to each discovered connection
⚠️ Important:linkedin-apiis an unofficial library and may violate LinkedIn's Terms of Service. Use at your own risk and only for data you have the right to access/store. The official LinkedIn APIs also have strict storage limits for non-authenticated members.
- Install Python 3.11+ (example via Homebrew)
brew install python@3.11
python3.11 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt- Put credentials in environment variables (recommended)
export LINKEDIN_USERNAME="you@example.com"
export LINKEDIN_PASSWORD="your-password"- Run (mock mode = safe local test)
python linkedin_graph.py --csv Untitled.csv --db graph.sqlite --mode mock --limit 30- Run (LinkedIn mode)
python linkedin_graph.py --csv Untitled.csv --db graph.sqlite --mode linkedin --limit 30 --min-delay 1.2 --max-delay 3.5- Export website files
python linkedin_graph.py --db graph.sqlite --export-web web_out
python -m http.server 8000 --directory web_out
# open http://localhost:8000Uniqueness for a person is enforced by:
- Last Name
- Consolidated First Name (first token of First Name, lowercased/trimmed)
- Account Name
This matches your requirement: Last Name → First Name (can be consolidated) → Account Name.
Your uploaded Untitled.csv appears to contain a quoted comma-separated row inside the first column.
csv_ingest.py contains a robust parser that extracts the required columns.
See automation/com.example.linkedin-graph.plist. Install it like:
cp automation/com.example.linkedin-graph.plist ~/Library/LaunchAgents/
launchctl load ~/Library/LaunchAgents/com.example.linkedin-graph.plistEdit the plist to match your project path and desired schedule.
Run automation/run_with_schedule.py (requires pip install schedule).
This keeps a Python process running in the background to run the job daily.