job-agent-kit / on your Mac

A day in your search.
With an agent.

A conversation to start. A shortlist to consider. A decision that stays yours. Here’s what working together looks like.

Illustrative desktop app interface · selectable HTML, not screenshots. Your app may look different as it updates.
All companies and job records below are fictional demo data. Conversations are illustrative, not live sessions.

01 / Morning

Start the day.

The agent reads the handoff and checks the tracker. You pick up where you left off.

Job board ⌄
Start the day ⌄</>
Updated 14h ago
DEMO DATA

Job board

A little clarity for your next move.

NowTodayAll applications
8
application recordsIncluding one draft awaiting approval
2Waiting1Interviewing2Recommended2Maybe

Up next

NowFabrikam · review replyYou
NextNorthwind · clarify contractYou
DraftProseware · await approvalYou
ThenReview shortlistClaude

Where it drops off

Records8
Includes 1 draft
Recorded replies3
37.5% · of records
Recorded interviews1
Reply → interview: 33.3% · 12.5% of records

Demo data, not an outcome claim; very small sample.

Recommended

Alpine Ski HouseSenior React EngineerRemote, React/TS match, salary posted in range; team of 8, positive WLB evidence
Coho WineryFrontend LeadRemote-first, design systems focus matches shipped project

examples/tracker.json · fictional records

Three things need your attention.

  • Fabrikam — review the salary-question reply.
  • Northwind — clarify contract / direct hire before system design prep.
  • Proseware — the draft is ready; approval is still pending.
Next checkInbox previews, once
Unread chatsAsk before opening
Read handoff.md · Bash jt status
python3 bin/jt.py status

The handoff and tracker point to three decisions. Pending items will be refreshed before any action.

What should we handle first today?
Type / for commands

Illustrative summary from the example handoff and tracker. In a real session, pending items are refreshed before reporting.

02 / Scout

Three channels.
One considered shortlist.

Read-only scouts work in parallel. The lead agent brings the findings back together and makes the final review.

shortlist.json ⌄
Scout: LinkedIn ⌄</>
shortlist.json · Preview
DEMO DATA

One shortlist.

Abbreviated example · lead review pending

{
  "channel": "linkedin",
  "source": "scout",
  "shortlist": [{
    "company": "Alpine Ski House",
    "role": "Senior React Engineer",
    "verdict": "recommend"
  }]
}
✓ Read the full job description
○ Verify fit and duplicates

An example candidate, not a live scout result.

Three channels, working in parallel.

Each read-only job-scout reads the full description, checks fit and returns a shortlist. I make the final review.

LinkedInjob-scout · running
Indeedjob-scout · running
Company ATSjob-scout · running
Agent job-scout · 3 background tasks
reports/scout/<date>-<channel>.json

Before recording decisions: jt seen · jt company. Scouts do not apply, message or open unread chats.

The preview is an abbreviated example from the demo tracker. Every candidate still needs lead review and duplicate checks.

Review the shortlist together?
Type / for commands

Scouts do not apply, message or open unread chats. The preview panel’s JSON is an abbreviated illustration using an example candidate.

03 / You approve

Your words.
Your final say.

Read the target and the message together. Nothing goes out without your approval, unless you already approved that action type.

Job board ⌄
Reply draft ⌄</>
Updated 14h ago
DEMO DATA

Job board

A little clarity for your next move.

NowTodayAll applications
8
application recordsIncluding one draft awaiting approval
2Waiting1Interviewing2Recommended2Maybe

Up next

NowFabrikam · review replyYou
NextNorthwind · clarify contractYou
DraftProseware · await approvalYou
ThenReview shortlistClaude

Where it drops off

Records8
Includes 1 draft
Recorded replies3
37.5% · of records
Recorded interviews1
Reply → interview: 33.3% · 12.5% of records

Demo data, not an outcome claim; very small sample.

Recommended

Alpine Ski HouseSenior React EngineerRemote, React/TS match, salary posted in range; team of 8, positive WLB evidence
Coho WineryFrontend LeadRemote-first, design systems focus matches shipped project

examples/tracker.json · fictional records

The exact reply, ready for your review.

Read outreach.md · T2
First reply to an inbound recruiter
ToExample Co. recruiting team
ViaEmail · T2

Hi Example Co. recruiting team, thanks for reaching out about the Frontend Engineer role. Could you share the company or client, team size and working arrangement? Happy to share my resume if there is a fit.

Nothing has been sent. Approval covers only this recipient and the text above. I will verify delivery before recording it as sent.

Send this exact text to this recipient?
Type / for commands

Illustrative T2 reply with a placeholder company and no personal claims. A person must approve this recipient and exact text before sending. Buttons are illustrative; nothing is sent here.

04 / Track

The whole search.
In one place.

Decisions first. Then recommendations, applications and what comes next. A local board, generated from your records.

Job board ⌄
Job board ⌄</>
Updated 14h ago
DEMO DATA

Job board

A little clarity for your next move.

NowTodayAll applications
8
application recordsIncluding one draft awaiting approval
2Waiting1Interviewing2Recommended2Maybe

Up next

NowFabrikam · review replyYou
NextNorthwind · clarify contractYou
DraftProseware · await approvalYou
ThenReview shortlistClaude

Where it drops off

Records8
Includes 1 draft
Recorded replies3
37.5% · of records
Recorded interviews1
Reply → interview: 33.3% · 12.5% of records

Demo data, not an outcome claim; very small sample.

Recommended

Alpine Ski HouseSenior React EngineerRemote, React/TS match, salary posted in range; team of 8, positive WLB evidence
Coho WineryFrontend LeadRemote-first, design systems focus matches shipped project

Applications 6 active / 8 total

CompanyRoleStatus
NorthwindSenior Frontend Engineerinterviewing
ProsewareSenior Software Engineerpreparing
Contoso MobileiOS Engineer
FabrikamFull-stack Engineer
Tailspin ToysWeb Platform Engineerrejected
AdatumStaff Engineer
WingtipFrontend Engineerghosted
LitwareUI Engineer
Maybe · 2

Woodgrove · Full-stack Engineer
Good stack, but no salary and no WLB evidence yet

Lucerne · Web Engineer
Hybrid in another city; ask about remote

examples/tracker.json · fictional records

The whole search, in one place.

Decisions first. Then recommendations, applications and what comes next.

Needs approvalProseware
Reply to reviewFabrikam
RecommendedAlpine Ski House
Coho Winery
Bash jt board
python3 bin/jt.py board

Tracker commands record actions. They do not apply or send messages.

The board brings the pending decisions together. Proseware is still a draft, awaiting your approval.

Review the pending draft?
Type / for commands

Scrollable demo board with decisions, recommendations and all eight application records. All counts and job records come from examples/tracker.json; “Applied” includes the preparing record. Tracker commands record actions; they do not submit them.

05 / Friday review

Learn from the week.
Adjust the next one.

Ask what worked, what is missing, and what to change. At most three adjustments, with evidence and a date to check again.

Job board ⌄
Friday review ⌄</>
Updated 14h ago
DEMO DATA

Job board

A little clarity for your next move.

NowTodayAll applications
8
application recordsIncluding one draft awaiting approval
2Waiting1Interviewing2Recommended2Maybe

Where it drops off

Records8
Includes 1 draft
Recorded replies3
37.5% · of records
Recorded interviews1
Reply → interview: 33.3% · 12.5% of records

Demo data, not an outcome claim; very small sample.

Replies by source

Recruiter: 2 records, 2 replies, 1 interview. Scout: 4 records, 0 replies, including 1 draft.

examples/tracker.json · fictional records

Three adjustments for next week.

  1. Continue recruiter follow-ups. Both submitted recruiter records have replies, with 1 interview; the sample is only 2.
  2. Review scout fit and the draft. 4 scout records include 1 unsent draft and have 0 recorded replies; review the draft and job fit first.
  3. Compare like-aged cohorts. Check --since and --by platform; referral has 1 reply from 1 record, self has 0 from 1. Reassess next Friday.
Bash jt funnel --by source
python3 bin/jt.py funnel --by source
SourceRecordsRepliedReply rateInterviewsRejected
scout400%01
recruiter22100%10
referral11100%00
self100%00
Total8338%11
ReassessNext Friday
CaveatDemo data, not an outcome claim; very small sample.

8 records, 3 replies, 1 interview. This very small sample cannot establish channel effectiveness. Source and platform are different.

Review scout fit and the draft first?
Type / for commands

Computed demo data, not an outcome claim: 8 records include 1 draft, with 3 replies and 1 interview. Reply rate is 37.5% (rounded to 38% by the CLI); the sample is very small. Source is not platform.

06 / Stays up to date

A little nudge.
You decide when.

At session start, the agent checks for releases at most once a week. It explains what changes before asking to install.

Job board ⌄
Kit updates ⌄</>
Updated 14h ago
DEMO DATA

Job board

A little clarity for your next move.

NowTodayAll applications
8
application recordsIncluding one draft awaiting approval
2Waiting1Interviewing2Recommended2Maybe

Up next

NowFabrikam · review replyYou
NextNorthwind · clarify contractYou
DraftProseware · await approvalYou
ThenReview shortlistClaude

Where it drops off

Records8
Includes 1 draft
Recorded replies3
37.5% · of records
Recorded interviews1
Reply → interview: 33.3% · 12.5% of records

Demo data, not an outcome claim; very small sample.

Recommended

Alpine Ski HouseSenior React EngineerRemote, React/TS match, salary posted in range; team of 8, positive WLB evidence
Coho WineryFrontend LeadRemote-first, design systems focus matches shipped project

examples/tracker.json · fictional records

An update, on your terms.

An illustrative release notice is ready. I explain the changes before asking to install.

Bash update-check.sh
bin/update-check.sh
Versionv0.x · placeholder
CheckAt most weekly
Personal rulesCLAUDE.local.md

No live release check. Nothing installed.

This notice illustrates the update flow, not a real release. Installation waits for your agreement; personal rules stay in CLAUDE.local.md.

Install v0.x?
Type / for commands

Illustrative notification, not a live version check. Checks fetch release information; installation always needs your agreement.

Your next conversation

Make it your workflow.

Start a conversation with your agent. It guides the download and setup, then creates local files with your agreement.

Start with one sentence

Install the Claude desktop app and open its Code tab, or use Claude Code. Paste this sentence to the agent:

Install job-agent-kit for me: download https://github.com/LeiZiKang/job-agent-kit to my computer, read its INSTALL.md, and walk me through setup.

Developer manual installation

Python 3.9+ for the offline tracker. Claude Code or another agent following AGENTS.md for the workflow. Codex follows the same rules.