[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-79357":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":9,"languages":9,"totalLinesOfCode":9,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":14,"forks30d":14,"starsTrendScore":18,"compositeScore":19,"rankGlobal":9,"rankLanguage":9,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":25,"readmeContent":26,"aiSummary":27,"trendingCount":14,"starSnapshotCount":14,"syncStatus":13,"lastSyncTime":28,"discoverSource":29},79357,"claude-linkedin-assistant","FarzamHejaziK\u002Fclaude-linkedin-assistant","FarzamHejaziK","Minimal Claude Code workspace for tracking jobs + sending first-DM LinkedIn outreach via the Claude in Chrome extension. Tracker CRUD, job discovery, and 1st-degree-only outreach. Reply handling, follow-ups, and applications stay manual.",null,174,44,105,2,0,36,55,69,108,4.96,"MIT License",false,"main",true,[],"2026-06-12 02:03:50","\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Flogo.png\" width=\"600\" alt=\"Claude LinkedIn Assistant\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>A Claude Code assistant for LinkedIn.\u003C\u002Fstrong>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"LICENSE\">\u003Cimg alt=\"License: MIT\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-green.svg\">\u003C\u002Fa>\n  \u003Cimg alt=\"Claude Code\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FClaude%20Code-Ready-orange\">\n  \u003Cimg alt=\"LinkedIn\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLinkedIn-via%20Chrome%20MCP-0A66C2?logo=linkedin&logoColor=white\">\n  \u003Ca href=\"CONTRIBUTING.md\">\u003Cimg alt=\"PRs Welcome\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPRs-welcome-brightgreen.svg\">\u003C\u002Fa>\n  \u003Cimg alt=\"Maintained\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FMaintained-yes-success\">\n  \u003Ca href=\"SECURITY.md\">\u003Cimg alt=\"Security policy\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSecurity-policy-blue\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"#quick-start\">\u003Cstrong>Quick Start\u003C\u002Fstrong>\u003C\u002Fa> ·\n  \u003Ca href=\"#how-it-works\">\u003Cstrong>How it works\u003C\u002Fstrong>\u003C\u002Fa> ·\n  \u003Ca href=\"#what-it-does\">\u003Cstrong>What it does\u003C\u002Fstrong>\u003C\u002Fa> ·\n  \u003Ca href=\"#daily-flow\">\u003Cstrong>Daily flow\u003C\u002Fstrong>\u003C\u002Fa> ·\n  \u003Ca href=\"#privacy\">\u003Cstrong>Privacy\u003C\u002Fstrong>\u003C\u002Fa> ·\n  \u003Ca href=\"#contributing\">\u003Cstrong>Contributing\u003C\u002Fstrong>\u003C\u002Fa>\n\u003C\u002Fp>\n\nA Claude Code assistant for LinkedIn. Track jobs in a single CSV, discover new openings via LinkedIn + web search, send connection requests and first DMs at companies you're targeting.\n\n> **Scope on purpose:** Claude only does the safe, repetitive parts. You handle anything that requires judgment (replies, applications, attachments, follow-ups).\n\nLooking for the Codex version with resume tailoring, referral orchestration, application folders, and approval-gated browser workflows? See [codex_linkedin_assistant](https:\u002F\u002Fgithub.com\u002FFarzamHejaziK\u002Fcodex_linkedin_assistant).\n\n## Quick Start\n\nBefore anything else, you'll want three things installed:\n\n- **[Claude Code desktop app](https:\u002F\u002Fdocs.claude.com\u002Fen\u002Fdocs\u002Fclaude-code)** — this is the app where you'll actually run everything. It has to be the desktop app, not the web version at claude.ai\u002Fcode. The web version can't see your local files (resume, tracker CSV, contact log) and can't drive the Chrome extension, so it just won't work for this repo.\n- **[Claude in Chrome extension](https:\u002F\u002Fclaude.com\u002Fclaude-in-chrome)** — this is how Claude drives LinkedIn for you. Install it in Chrome, sign in to your LinkedIn account in that same browser, and keep the window open whenever you run a `\u002Fjobs` flow. Without this extension, none of the LinkedIn automation works.\n- **Git** — already on your Mac. You'll only use it once, in step 1 below.\n\nOnce you've got those, here's the flow.\n\n### 1. Clone the repo\n\nOpen your terminal and run:\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FFarzamHejaziK\u002Fclaude-linkedin-assistant.git\ncd claude-linkedin-assistant\n```\n\nThat's it for the terminal. Everything else happens inside the Claude Code app.\n\n### 2. Put your resume into `resumes\u002F`\n\nThere's no profile file or settings form to fill out. Claude reads your resume directly to figure out your name (so it can verify the right LinkedIn account is signed in), your target roles + top skills (for `\u002Fjobs find` searches), and a short pitch (for the outreach DM template).\n\nJust put your resume into the `resumes\u002F` folder however you normally move a file — drag it in from Finder, copy it from wherever you keep your latest version, whatever's easiest. `.pdf`, `.tex`, `.md`, and `.docx` all work. If you have role-specific versions of your resume, drop them all in — the flows read everything in there and use the union of titles + skills.\n\n**Optional, but powerful:** a search profile telling the find flow what you actually *want* (vs. what your resume says you *can* do): must-haves (\"Remote only\"), deal-breakers (\"no crypto\"), interest areas (\"climate tech\"), salary floor (\"$200K min\"). You can either:\n\n- **Build it together with the agent.** Just tell it your preferences in chat (\"I only want remote senior IC roles in climate tech, $180K minimum, no crypto\") and it'll write `resumes\u002Fsearch_profile.md` for you.\n- **Write it yourself** — see [`resumes\u002FREADME.md`](resumes\u002FREADME.md) for the format.\n\n`\u002Fjobs find` reads the profile on every run and uses it to filter and score. If you skip it, the search falls back to whatever it can infer from your resume.\n\n### 3. Open the folder in Claude Code\n\nLaunch the **Claude Code desktop app**, then **File → Open Folder** and pick the `claude-linkedin-assistant` folder you just cloned. The app loads the workspace and finds all the `\u002Fjobs` commands automatically.\n\n### 4. Run `\u002Fjobs`\n\nIn the chat, type `\u002Fjobs` and hit enter. The first thing it does, every time, is verify that the Chrome extension is connected and the LinkedIn account signed in matches the name on your resume. If something's off, it tells you exactly what to fix instead of guessing.\n\nAfter that, you've got the menu:\n\n```\n\u002Fjobs                       # show the menu (start here the first time)\n\u002Fjobs daily                 # walk the full daily flow end-to-end\n\u002Fjobs find                  # discover new jobs and add them to the tracker\n\u002Fjobs check                 # daily dashboard: what's pending, what's stale\n\u002Fjobs outreach \u003CCompany>    # connection requests + first DMs at \u003CCompany>\n\u002Fjobs add                   # manually add a job you found somewhere else\n```\n\nTo change a job's status (Applied, Phone Screen, Onsite, Rejected), edit `job_tracker.csv` directly in Numbers, Excel, or VS Code. There's no separate update command — a one-cell edit is faster than a CLI prompt.\n\nIf you just want to see it run, do `\u002Fjobs daily` — it walks you through one full day end to end.\n\nFor more detail on any of these, see [What it does](#what-it-does), [Daily flow](#daily-flow), or [REQUIREMENTS.md](REQUIREMENTS.md).\n\n## How it works\n\nThe whole thing is built around two files that hold all the state. Your resume in `resumes\u002F` is the source of truth about *you* — name, target roles, skills, pitch — i.e. what you *can* do. An optional `resumes\u002Fsearch_profile.md` is the source of truth about what you *want* to do — must-haves, deal-breakers, interest areas, salary floor. And `job_tracker.csv` is the source of truth about the *jobs* — every job you've ever looked at is a row there, with status, priority, dates, deadlines. Claude reads from these and writes back to them. There's no database, no hidden state, no settings panel. Want to see what's going on at any moment? Open the CSV.\n\nWhen you run any `\u002Fjobs` command, the very first thing it does is open Chrome via the extension and check that LinkedIn is signed in to the right account (matching the name it just read from your resume). If something's off — extension not connected, wrong account active, redirected to the login page — it stops and tells you exactly what to fix. This happens every time, on every command, so you never run a flow against the wrong account by accident.\n\nAfter that, the actual work happens through the Chrome extension. Claude doesn't have a private LinkedIn API; it drives your browser like a person would. Searches use real LinkedIn URLs, profile clicks happen in actual tabs, DMs get typed into the real chat overlay. The upside is LinkedIn sees this as normal browser activity. The tradeoff is you need to keep your signed-in Chrome window open while a flow is running.\n\nThe flow that does the most work is `\u002Fjobs outreach`. For each company you target, Claude counts how many 1st-degree connections you already have there and computes a per-company quota — more requests if you're sparse, zero if you already have plenty of internal contacts. It then batches the connection requests (always \"Send without a note\", because LinkedIn rate-limits personalized invites hard) and asks you to confirm the whole batch with one \"y\". For people you're already connected to, it drafts a short DM using the pitch it pulled from your resume and asks you to approve each one before clicking Send. The loop keeps going across companies until LinkedIn itself pushes back — if you see a CAPTCHA or a \"you've reached the weekly limit\" notice mid-batch, it halts and reports which contacts went through and which are still pending.\n\nAnything that requires real judgment stays on you: replies once a thread goes warm, follow-up nudges, application forms, attaching a resume to a Gmail thread, deciding what to say when a recruiter asks about your salary expectations. Claude is good at the safe, repetitive parts — sending the same templated first message to twenty new connections, paginating through LinkedIn search results, keeping the CSV in sync, drafting outreach text. It's not good at the high-judgment moments, so by design, it doesn't try to do them.\n\nWhen you run `\u002Fjobs daily`, it strings the four pipeline flows together — find new jobs, check the dashboard, add anything you saw elsewhere, run outreach at HIGH-priority companies that need a referral — with a checkpoint between each step where you can continue, skip, or quit. At the end it makes a single git commit summarizing what happened that day. Run it once and you've done the day's pipeline work in one pass.\n\n## What it does\n\n| Feature | Command | Who does what |\n|---|---|---|\n| Verify Chrome + LinkedIn login | (auto on every `\u002Fjobs` run) | Claude reads your name from your resume in `resumes\u002F` and verifies the active LinkedIn profile matches |\n| Find new jobs | `\u002Fjobs find` | Claude reads your resume(s), searches LinkedIn + the web, scores and adds results to the tracker |\n| Track jobs | `\u002Fjobs check` · `\u002Fjobs add` | Claude reads\u002Fwrites `job_tracker.csv`. Status edits are done by hand in the CSV. |\n| Outreach (cold sweep) | `\u002Fjobs outreach \u003CCompany>` | Claude sends connection requests to 2nd-degree contacts (\"Send without a note\") and a first DM to existing 1st-degree connections at that company |\n| Daily run | `\u002Fjobs daily` | Walks through find → check → outreach in one pass |\n\n## What it does NOT do (by design)\n\n- ❌ **No reply handling, no follow-ups.** When someone replies to a DM, you handle the conversation.\n- ❌ **No application submission, no resume tailoring, no cover letter generation.** Apply yourself.\n- ❌ **No file uploads.** LinkedIn \u002F Gmail \u002F ATS forms block automated upload anyway.\n- ❌ **No personalized connection-request notes.** All connection requests go through \"Send without a note\" to conserve LinkedIn's monthly personalized-invite quota.\n\nIf you want a more full-featured workflow (resume tailoring, reply handling, application form auto-fill), fork this repo and extend it. This version is intentionally minimal so it's safe to share.\n\n## Daily flow\n\n`\u002Fjobs daily` walks through the recommended sequence end to end:\n\n```\n1. \u002Fjobs check       — dashboard: what's pending, what's stale\n2. \u002Fjobs find        — discover new jobs via LinkedIn + web search\n3. \u002Fjobs add         — capture interesting finds (auto-flags companies that need a referral)\n4. \u002Fjobs outreach    — send first DMs to 1st-degree connections at companies that need outreach\n5. commit            — single git commit at the end\n```\n\nYou can also run sub-commands individually any time.\n\n## Folder layout\n\n```\nclaude-linkedin-assistant\u002F\n├── README.md                     ← this file\n├── REQUIREMENTS.md               ← setup steps\n├── CLAUDE.md                     ← project rules loaded by Claude\n├── LICENSE                       ← MIT\n├── .gitignore\n├── job_tracker.csv               ← MAIN DASHBOARD. Open in Numbers\u002FExcel\u002FVS Code.\n│\n├── resumes\u002F                      ← drop your resume(s) here (gitignored by default)\n│   └── README.md                 ← committed instructions\n│\n├── outreach\u002F                     ← created on first \u002Fjobs outreach run\n│   └── \u003CCompany>_contacts.md     ← per-company contact log (gitignored by default)\n│\n└── .claude\u002F\n    └── commands\u002F\n        ├── jobs.md               ← top-level \u002Fjobs command\n        └── jobs\u002F\n            ├── _shared.md        ← rules loaded by every sub-flow\n            ├── find.md           ← discover jobs\n            ├── check.md          ← daily dashboard\n            ├── add.md            ← add a job to the tracker\n            ├── outreach.md       ← first-message DM flow\n            └── daily.md          ← orchestrator\n```\n\n## Tracker format\n\n`job_tracker.csv` columns:\n\n```\nPriority, Company, Role, Location, Type, Salary, Status, Applied Date,\nNext Action, URL, Notes, Discovered Date, Referral Needed, Referral Status,\nReferral Deadline, Apply Via\n```\n\nCanonical statuses: `To Apply` → `Applied` → `Recruiter Call` → `Phone Screen` → `Onsite` → `Offer` \u002F `Rejected` \u002F `Withdrew`\n\nOpen in any spreadsheet app or use the `\u002Fjobs check` dashboard.\n\n## Privacy\n\n- `resumes\u002F*` (everything except `resumes\u002FREADME.md`) is `.gitignore`d by default. Your resume stays local.\n- `outreach\u002F*.md` is `.gitignore`d. Your contact log stays local.\n\nIf you fork to a private repo and want to commit your resume too, edit `.gitignore`.\n\n## Contributing\n\nPull requests only. Direct pushes to `main` are blocked.\n\n- See [`CONTRIBUTING.md`](CONTRIBUTING.md) for the workflow.\n- See [`MAINTAINERS.md`](MAINTAINERS.md) for the approval model (single-maintainer, [@FarzamHejaziK](https:\u002F\u002Fgithub.com\u002FFarzamHejaziK) approves all PRs).\n- For security reports, see [`SECURITY.md`](SECURITY.md) and email instead of opening a public Issue.\n\n## License\n\nMIT. See [LICENSE](LICENSE).\n","Claude LinkedIn Assistant 是一个用于LinkedIn的自动化助手，旨在帮助用户追踪职位、发现新机会并通过Chrome扩展程序发送初次联系消息。其核心功能包括职位跟踪（CRUD操作）、基于LinkedIn和网络搜索的新职位发现以及仅限一级联系人的初步消息发送。该项目利用了Claude Code桌面应用程序与Chrome扩展程序结合的技术特点，以实现安全且重复性高的任务自动化处理，如职位追踪和初次联系，而需要个人判断的部分如回复处理、后续跟进及申请提交则需手动完成。适合求职者或职业发展顾问在寻找工作机会时使用，尤其是那些希望提高效率同时保持人际互动真实性的用户。","2026-06-11 03:57:44","CREATED_QUERY"]