How farzamhejazik/claude-linkedin-assistant works
1. This repo is a Claude Code command pack for job search automation, not a conventional app. The architecture is centered on slash commands in .claude/commands/ that Claude Code loads and executes inside the desktop client.
2. The main orchestration boundary is the /jobs command family. jobs.md is the entry point, while the subcommands in .claude/commands/jobs/ split the workflow into setup, discovery, tracking, outreach, daily orchestration, and Indeed-specific setup.
3. The system has a very small state model built around local files. The primary sources of truth are:
- resumes/ for user identity, target roles, skills, and pitch material
- job_tracker.csv for all job records and status
- optional resumes/search_profile.md for preference filtering
- outreach/*.md for per-company outreach logs
4. The job tracker CSV is the central operational datastore. It holds job metadata, status transitions, referral flags, deadlines, and URLs. The README explicitly says status updates are edited directly in the spreadsheet/CSV rather than through a separate app layer.
5. The resume folder is an input analysis layer. Claude reads all resume variants to infer the user’s name, target roles, skills, and outreach pitch. This drives both platform verification and job matching, so the resume content affects multiple downstream flows.
6. The search profile is an optional policy layer that narrows discovery. It adds user preferences such as remote-only, salary floor, or deal-breakers. This is read fresh by /jobs find, so it acts as a lightweight config file rather than a persistent settings system.
7. The repo depends on Claude in Chrome + the Claude Code desktop app as the execution runtime. Claude Code handles the commands, while the Chrome extension is the browser automation bridge. That browser bridge is essential because LinkedIn and Indeed interactions happen through real browser sessions, not APIs.
8. The external service boundary is primarily LinkedIn, with Indeed as optional discovery support and web search as an additional source for finding roles. LinkedIn automation is intentionally limited to safe, repetitive actions: search, profile inspection, connection requests, and first-message drafts/sends.
9. The daily flow is the top-level pipeline. /jobs daily coordinates setup checks, dashboard review, job discovery, manual add capture, outreach for companies needing referrals, and a final git commit. This makes the repo’s operational shape “check → find → add → outreach → commit.”
10. There is a strong human-in-the-loop boundary. Claude is allowed to do repetitive work and update the tracker, but replies, application submission, file uploads, and other judgment-heavy or fragile actions stay manual. The architecture is deliberately conservative to reduce risk with LinkedIn limits and account safety.
11. Privacy is handled by local-only artifacts and gitignore boundaries. Resumes and outreach logs are excluded from version control by default, while the committed resumes/README.md and the tracker template document expected local structure.
12. In diagram terms, this repo is best modeled as: Claude Code commands at the center, local filesystem state on one side, and browser-driven external services on the other side, with job_tracker.csv as the main shared data store and /jobs daily as the orchestration entrypoint.
Main entry points: jobs.md Jobs entry · find.md Find · daily.md Daily flow · outreach.md Outreach
Components 20
Claude commands
Slash commands loaded by Claude Code in the desktop client.
- Jobs entry · Top-level /jobs command family entrypoint.
.claude/commands/jobs.md - Shared rules · Common instructions and reusable behavior for the jobs command family.
.claude/commands/jobs/_shared.md - Setup · Initializes the workflow and validates required local inputs.
.claude/commands/jobs/setup.md - Check · Reviews the current dashboard and tracker state before other actions.
.claude/commands/jobs/check.md - Find · Discovers new roles from LinkedIn, web search, and optional preferences.
.claude/commands/jobs/find.md - Add · Captures manually discovered jobs into the tracker.
.claude/commands/jobs/add.md - Outreach · Prepares or sends referral and first-message outreach for target companies.
.claude/commands/jobs/outreach.md - Daily flow · End-to-end daily pipeline that sequences check, discovery, capture, outreach, and commit.
.claude/commands/jobs/daily.md - Indeed setup · Configures Indeed-specific discovery behavior and account readiness.
.claude/commands/jobs/indeed-setup.md
Local state
Repository files that act as working memory and operational data.
- Job tracker · Central CSV ledger for jobs, statuses, deadlines, referral flags, and URLs.
job_tracker.csv - Resumes · Resume variants used to infer identity, roles, skills, and pitch material.
resumes - Search profile · Optional filtering policy for remote, salary, and deal-breaker preferences.
- Outreach logs · Per-company outreach history and referral tracking notes.
outreach
Runtime
Claude Code plus the browser bridge and human-in-the-loop boundary.
- Claude Code · Executes slash commands and coordinates the workflow inside the desktop app.
CLAUDE.md - Chrome bridge · Browser automation layer used to interact with sites in real sessions.
- Manual steps · Actions that stay manual for safety or reliability, such as replies, uploads, and submissions.
External services
Browser-reached systems used for search and outreach.
- LinkedIn · Primary external source for search, profile review, connections, and outreach drafts.
- Indeed · Optional secondary source for discovery and setup.
- Web search · Supplemental source for finding roles outside the main platforms.
- Git commit · Final persistence step for daily workflow changes.
Connections 32
- Claude Code → Jobs entry: loads · Claude Code loads the slash command family.
- Jobs entry → Shared rules: inherits · The entry command relies on shared jobs guidance.
- Jobs entry → Setup: routes · Dispatches into setup behavior.
- Jobs entry → Check: routes · Dispatches into tracking review.
- Jobs entry → Find: routes · Dispatches into job discovery.
- Jobs entry → Add: routes · Dispatches into manual capture.
- Jobs entry → Outreach: routes · Dispatches into outreach work.
- Jobs entry → Daily flow: routes · Dispatches into the full daily orchestration.
- Jobs entry → Indeed setup: routes · Dispatches into Indeed-specific setup.
- Daily flow → Check: runs first · Daily flow begins with a status check.
- Daily flow → Find: continues to · Daily flow performs discovery next.
- Daily flow → Add: captures · Daily flow records manually found jobs.
- Daily flow → Outreach: finishes with · Daily flow handles outreach for referral targets.
- Daily flow → Git commit: commits · Daily flow ends with a repository commit.
- Setup → Resumes: reads · Setup verifies the resume inputs.
- Setup → Job tracker: initializes · Setup ensures the tracker exists and is ready.
- Check → Job tracker: reads · Check reviews the central job ledger.
- Find → Resumes: analyzes · Find uses resume content to infer fit and pitch.
- Find → Search profile: filters by · Find applies optional preference constraints.
- Find → LinkedIn: searches · Find uses LinkedIn as the main discovery source.
- Find → Web search: supplements · Find can supplement discovery with web search.
- Find → Indeed: optionally searches · Find can use Indeed when configured.
- Add → Job tracker: writes · Add appends or updates tracker entries.
- Outreach → Job tracker: reads/updates · Outreach consults the tracker and records status changes.
- Outreach → Outreach logs: logs · Outreach writes per-company notes and messages.
- Outreach → LinkedIn: messages · Outreach interacts with LinkedIn for connection and first-message workflows.
- Indeed setup → Indeed: prepares · Indeed setup readies the secondary platform.
- Claude Code → Chrome bridge: drives · Claude Code uses the browser bridge for site interaction.
- Chrome bridge → LinkedIn: opens · Browser automation reaches LinkedIn sessions.
- Chrome bridge → Indeed: opens · Browser automation reaches Indeed sessions.
- Manual steps → LinkedIn: handles edge cases · Human intervention covers fragile or judgment-heavy browser actions.
- Manual steps → Job tracker: manual edits · People may update the tracker directly when needed.