local-first skill suite · 6 skills · 0 cloud accounts

Find jobs where you're already connected.

Network Jobs turns your LinkedIn graph into a private job corpus. Your agent discovers openings at companies you know, ranks them against your preferences, and drafts forwardable warm intros — all on your machine.

312connections parsed
87companies mapped
6skills, one loop
0bytes uploaded
alternative · terminal
$npm i -g @hirefrank/network-jobs@latest
$network-jobs setup --agent auto
✓ 6/6 skills linked · ✓ ~/.network-jobs seeded · ✓ agent-browser ready
recommended · paste into any agent

One prompt carries the whole setup — install check included. Nothing to install first.

Your agent installs the CLI, links the skills, and walks the rest with you — profile, preferences, imports. Two minutes, once.

Works with Claude Code · Cursor · Codex · OpenCode · Muse · Pi · Gemini CLI · Hermes · Grok Bot

// 01 — the flow

Five nodes, one rule.

NODE 01

Resume → profile

setup→ profile.json · preferences.json

Prefs interview grounded in your background.

NODE 02

ZIP → graph

import→ companies.json · 87 companies

Free export becomes a graph, locally.

NODE 03

Discover → triage

discover→ triage/careers-*/ · review me

Career pages staged for review. Always.

NODE 04

Confirm → ingest

ingest→ corpus/ · totalJobs 5

Your word turns listings into corpus.

NODE 05

Search → intro

intros→ search/intros.json · email draft

Ranked roles, forwarders, warm email.

RULE: discover only stages — nothing enters your corpus until you explicitly say so.
// 02 — modules

Six skills, one loop.

in · profile

network-jobs-setup

Resume → profile + preferences interview: location, remote/hybrid, IC vs manager, former employers.

in · graph

network-jobs-import

Connections ZIP → local company graph. No PII leaves the machine.

out · triage

careers-discover

Model-driven career pages, JS boards via agent-browser. Stages, never ingests.

in · corpus

jobs-ingest

Promotes a confirmed batch into searchable shards. Only on your word.

out · ranked

network-jobs

Prefs-aware search with scores; semantic matching via embed-setup.

out · email

intro-email-generator

Forwardable warm intros through real mutuals. You send.

// 03 — session replay

One session, replayed end to end.

Import → discover → ingest → search → warm intro. Press play — timings compressed.

session replay0:00 / 0:00

Reconstructed from real commands · timings compressed · nothing leaves ~/.network-jobs/

read the full transcript as text
you: Import my LinkedIn zip at ~/Downloads/Connections.zip agent: [import] 308 connections kept (4 ignored) · 87 companies — Stripe (14), Figma (9), Notion (7) agent: Done — 87 companies mapped. Say the word and I'll go find who's hiring. you: Find open roles at my top 5 companies agent: [careers-discover] 12 of 30 match prefs staged under triage/ · 0 ingested agent: Staged, not ingested. Skim triage/ and tell me which batch to take. you: ingest the Stripe batch agent: [jobs-ingest] 5 jobs enter the corpus (Senior Product, NYC + remote) · totalJobs 5 agent: Corpus updated. Ask me to search it whenever you're ready. you: Senior PM roles, NYC, remote-friendly agent: [network-jobs search] 2 of 5 match prefs — 21 Senior Product Manager @ Stripe, 17 Senior PM Growth @ Figma agent: [intro] via Dan (ex-Stripe, 1st-degree) → Maya at Stripe. The agent drafts; you send.
// 04 — cli reference

Small surface, sharp tools.

For install, update, doctor, and imports. Everything else lives in the agent.

setup · update · doctorinstall skills · refresh suite · health check
import <zip-or-csv>LinkedIn connections → company graph
profile import · show · clearresume in, identity out (PDF / DOCX / MD / TXT)
search · intros · companiesranked roles · forwarders · graph stats
refresh · demo · embed-setupre-crawl · synthetic demo · semantic search
corpus clear · reset · uninstallwipe jobs · unlink skills · full remove
// 05 — guarantees

Local-first, for real.

✓No cloud account

Everything in ~/.network-jobs/ — connections, corpus, profile, prefs, resume. No hosted API exists.

✓Your data stays home

Skills read local files. The only network calls are public career pages.

✓Model-agnostic

Stronger models discover better; mid-tier is plenty for search and intros.

✓Free & MIT

Open source, local-free. Only your own agent's tokens cost anything.

// 06 — faq

Asked often.

+Does anything get uploaded anywhere?
No. Profile, resume, and connections live in ~/.network-jobs/ and are never sent to a remote API.
+Which agents work?
Any agent that can read a skill file and run a local command — Claude Code, Cursor, Codex, OpenCode, Muse, Pi, Gemini CLI, Hermes, Grok Bot, and others. setup --agent auto links everything it detects, Muse included via the shared ~/.agents/skills.
+Does it suit long-running agents?
That's what local files are for. Triage batches, corpus shards, and manifest.json persist between runs, so a background agent — Muse's persistent agents, say — resumes exactly where it left off. Nothing lives in a cloud queue that can time out.
+Do I need LinkedIn Premium?
No. Free export: Settings → Data privacy → Get a copy of your data → Connections only. Then network-jobs import ~/Downloads/Connections.zip.
+Which model should I use?
Yours. Stronger for discovery; mid-tier is usually enough for search and drafts.
+Does it message people for me?
Never. It drafts a forwardable intro naming a real mutual. You review, you send.
+What does it cost?
Free and MIT-licensed. You pay only for your own agent's tokens.
+Is there a zero-install option?
Yes — npx --yes @hirefrank/network-jobs@latest setup --agent auto runs setup with no global install. The launcher still lands on ~/.local/bin, so the network-jobs command sticks around.