Skip to content

About

Local-first job-search assistant for macOS: scores LinkedIn/DOU vacancies against your resume and prepares review-ready drafts. Never auto-sends.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

721 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🇺🇦 Українською

Your netrunner on the job market. It runs quietly on your Mac: watches recruiter messages in your LinkedIn inbox, sweeps DOU, Djinni, Himalayas, Telegram job channels and LinkedIn for vacancies, measures each one against your resume, and prepares ready-to-review reply/application drafts. It never sends anything — the final click is always yours.

The dashboard in its Night City skin — matched jobs sorted by relevance, with status counts and filters

⚠️ Corpo rules. LinkedIn's User Agreement restricts automated access. This tool only reads your own inbox and drafts replies for you — it does not auto-message or scrape others. Run it modestly. Use at your own discretion; LinkedIn can still flag automation.

What it does

01 Inbox — reads unread LinkedIn messages, scores each against your skill profile and drafts a reply in the sender's language (🇺🇦/🇷🇺/🇬🇧), flagging when to attach your resume. Unread Djinni threads light up the same Dock badge.

02 Job discovery — pulls new vacancies from DOU (RSS), Djinni (public board), Himalayas (remote jobs at foreign companies, public API), public Telegram job channels and LinkedIn Jobs (search, can be turned off), collapses the same vacancy posted on several boards, and drops jobs located abroad. Each vacancy passes two gates: a keyword score from your profile (≥ 18 and a matching role), then a local claude -p fit score against your resume (≥ 70). A match becomes an application package: tailored cover letter, link and resume path.

How a vacancy is scored, gate by gate, with worked examples Scoring pipeline: location filter, keyword gate (minScore 18 + role), LLM gate (llm.minScore 70), worked examples

03 Dashboard — every package on one local page in a neon Night City skin (light and dark themes), sorted by relevance, with New/Viewed tabs, private notes, search and a source filter. Vacancies the board closes are marked Closed by a daily check.

04 Runs on its own — launchd agents check the inboxes and DOU/Djinni/Himalayas/Telegram hourly and LinkedIn every 3 hours. A run posts one macOS banner, and only when it found something or something broke. Optionally the same alerts reach your phone through your own Telegram bot, each with a link to the vacancy or thread (setup). An optional LaunchDaemon keeps a Mac on the charger awake with the lid closed, so all of this goes on while you are out (how).

Key principles

  • 🔒 Security: your password is never stored (you log in once yourself), everything is local; no API keys at all (the optional Telegram alerts are the one exception: their text goes to your own bot)
  • 🚫 No auto-send: the scripts only prepare — you review and apply manually
  • ⚖️ Minimal risk: DOU via legal RSS, LinkedIn scraping modest and toggleable

Quick start

macOS and Node.js 20+. Jacking in takes eight lines:

git clone https://github.com/lzb150/linkedin-assistant.git ~/linkedin-assistant
cd ~/linkedin-assistant
npm install && npx playwright install chromium
cp ~/path/to/your-resume.txt resume.txt   # plain text
node make-skills.mjs                      # skills.json: what to look for
$EDITOR jobs.config.json                  # where to look, and your country
node login.mjs                            # log in yourself once; the password is never stored
node jobs.mjs && node dashboard.mjs --open

Then put it on a schedule: docs/setup.md.

Documentation

Page What's in it
Setup Install, first run, launchd agents, LinkedIn on a sleeping Mac
Inbox assistant check.mjs, reply drafts, Dock badge, Djinni inbox and profile auto-bump
Job discovery Sources, filters, both gates, LLM hardening, source health, skills.json
Dashboard State server, statuses, filters, closed-vacancy check, weekly report
Your specialization Retarget it from QA to any profession
When it breaks Selectors, expired session, missing Chromium, slow runs
Project layout Which file does what

Contributing

Issues and pull requests are welcome. main is protected: changes land only through a PR with an approving review from the repository owner — fork, open a PR, and it will be reviewed.

Technologies

JavaScript (Node.js) · Playwright · DOU RSS · launchd · Swift/AppKit (neon Dock icon) · no external dependencies beyond Playwright. The images in this README are drawn from HTML in docs/src.

License

MIT

About

Local-first job-search assistant for macOS: scores LinkedIn/DOU vacancies against your resume and prepares review-ready drafts. Never auto-sends.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages