A Chrome extension + AI agent that audits your LinkedIn profile and feed, then tells you what to fix, who to engage, and what to post next. Your OpenAI key and data stay in your browser — only the prompts go to OpenAI.
A four‑stage loop, not a chatbot. Each click closes the loop — yesterday's outcome shapes tomorrow's prompt.
LinkedIn's SSI ranks you 0–100 across four pillars — Brand, Find People, Engage, Build Relationships — but never tells you which lever to pull. LinkMate translates the score into paste‑ready actions.
Daily scrape of /sales/ssi. Total + 4 pillar gauges + week‑over‑week trendline. 90‑day ring buffer in chrome.storage.
6 LinkedIn All‑Star checks + 4 activity signals. Pure deterministic rule engine — instant, free, no API call.
Two parallel LLM calls: a copy editor (headline/about/experience) and an SSI strategist (pillar action + engagement angle). Paste‑ready, regeneratable.
Weekly cadence mapped to each SSI pillar (1 post / 5 invites / 3 comments / 2 thread replies). Streak counter makes it visceral.
✨ Reply button on every post · uses captured profile context + topic distribution + reading the thread comments.
Lazy outcome scanner reads likes/replies on your comments next time you revisit. Yesterday's outcome shapes tomorrow's prompt.
Eight clicks from Load unpacked to LinkMate ranking your feed and drafting your posts.
When you press Get AI rewrites, LinkMate fires two parallel calls via Promise.allSettled:
Load unpacked, paste your OpenAI API key in Settings. BYOK — never leaves your machine.
Open your own profile → click Capture Profile. Parser extracts headline / about / skills / themes → AI synthesizes a 2‑sentence positioning summary.
Popup shows progress bar of 6 essentials + activity signals (SSI, posts/30d, comments/30d, network). Instant. Zero API calls.
Click Get AI rewrites for N gaps. Paste‑ready copy lands under each failed check + SSI tactical action + engagement angle. Each card has a Copy button.
Refresh now → total score + 4 pillar gauges + donut chart populate. Daily alarm captures it automatically going forward.
✨ Reply on every post · sidebar Engagement Queue ranks the feed by relevance to your profile (topic 40% / tier 20% / degree 15% / recency 10% / engagement 10% / diversity 5%).
Popup → Today: 3 AI cards biased to weakest pillar + cadence bars + streak. Each card opens the right LinkedIn page in one click.
Click Suggest a post → modal with 3 distinct drafts (story / hot take / lesson) tuned to your underweight topics.
MV3 service worker as sole writer. Content scripts only message. chrome.storage.local for hot state · chrome.storage.sync for settings · IndexedDB for the action ledger.
LinkedIn tabs Extension SW Popup UI
───────────── ────────────── ──────────
linkedin.com/* ─┐
linkedin.com/in/* ─┼─► content scripts ─► background.ts ─► popup.html
linkedin.com/feed/* ─┘ (scrape + inject) (orchestrator) (Today / SSI /
│ │ Profile / Settings)
│ │
▼ ▼
chrome.storage.local OpenAI API
(profile, settings, (BYOK · gpt‑4o‑mini)
SSI snapshots)
+
IndexedDB
(action log, outcomes)
Clone, build, load unpacked, paste your key. ~60 seconds.
$ git clone https://github.com/mrviduus/linkmate.git $ cd linkmate $ npm install && npm run build # chrome://extensions → Developer mode → Load unpacked → pick dist/ # Click LinkMate icon → paste your OpenAI key → Save