lk_mission_radar

LK Mission Radar

Automatically detect job opportunities (CDI, Freelance, CDD, etc.) in your LinkedIn messages, score them with Claude AI, store them in Notion, and share them to Discord.

Features

See FEATURES.md for the full feature list.

Setup

1. Fill in your API keys — background/config.js

export const CLAUDE_API_KEY     = "sk-...";        // Claude / LLM router key
export const CLAUDE_HOST        = "https://...";   // LLM router base URL
export const CLAUDE_MODEL       = "claude-sonnet-4-6";

export const NOTION_API_KEY     = "ntn_...";
export const NOTION_DATABASE_ID = "...";

export const DISCORD_WEBHOOK_URL = "https://discord.com/api/webhooks/...";

2. Create the Notion database

  1. Create a new Notion page and add a Table database view
  2. Add the following columns:
Column Type
Name Title
Type Select — CDI · Freelance · CDD · Stage · Alternance · Unknown
Status Select — New · Interested · Pending · Declined
Score Number
Company Rich Text
Role Rich Text
Sender Rich Text
Summary Rich Text
Remote Checkbox
Salary Rich Text
Location Rich Text
ThreadId Rich Text
LinkedInUrl URL
DiscordMessageId Rich Text
DetectedAt Date
DetectedBy Rich Text
  1. Copy the database ID from the URL: notion.so/.../{DATABASE_ID}?v=...
  2. Create a Notion integration at notion.so/my-integrations
  3. Share the database with your integration (Share → Invite → your integration)

3. Create a Discord webhook

  1. Open your Discord server → target channel → Settings → Integrations → Webhooks
  2. Click New Webhook, give it a name, copy the URL
  3. Paste the URL into DISCORD_WEBHOOK_URL in config.js

4. Load the extension in Chrome

  1. Open chrome://extensions/
  2. Enable Developer mode (top-right toggle)
  3. Click Load unpacked → select the lk_mission_radar folder
  4. The onboarding page opens automatically — set your start date and first name

5. (Optional) Incognito support

chrome://extensions/ → LK Mission Radar → Details → Allow in Incognito → ON

Usage

  1. Go to linkedin.com/messaging
  2. The extension scans new messages automatically (auto-scan on by default)
  3. Detected offers (score ≥ threshold) are saved to Notion and optionally shared to Discord
  4. Click the extension icon to view offers, update statuses, generate replies, and manage templates

Manual scan — open a LinkedIn conversation, then click the extension icon → “Scan current conversation”

Reply injection — when a conversation with a detected offer is open, a floating bar appears above the input with three options: Interested / Decline / Reformat

Architecture

lk_mission_radar/
├── manifest.json
├── background/
│   ├── index.js        Service worker — message router + orchestration
│   ├── config.js       API keys and constants
│   ├── claude.js       Classification + reply drafting (3 tones)
│   ├── notion.js       Notion CRUD + archive + deduplication
│   ├── discord.js      Webhook post + message deletion
│   └── retention.js    Auto-delete Discord messages older than 30 days
├── content/
│   └── content.js      LinkedIn scraping + floating bar injection
├── popup/
│   ├── popup.html
│   ├── popup.js
│   └── popup.css
└── pages/
    ├── onboarding.html / onboarding.js
    └── settings.html   / settings.js

Privacy

All data stays local or goes to services you control (your Notion workspace, your Discord server). No analytics, no telemetry.

License

MIT