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.
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 check | Inbox previews, once |
|---|---|
| Unread chats | Ask before opening |
Read handoff.md · Bash jt status
python3 bin/jt.py statusThe handoff and tracker point to three decisions. Pending items will be refreshed before any action.
What should we handle first today?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.
One shortlist.
Abbreviated example · lead review pending
{
"channel": "linkedin",
"source": "scout",
"shortlist": [{
"company": "Alpine Ski House",
"role": "Senior React Engineer",
"verdict": "recommend"
}]
}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.
| job-scout · running | |
| Indeed | job-scout · running |
| Company ATS | job-scout · running |
Agent job-scout · 3 background tasks
reports/scout/<date>-<channel>.jsonBefore 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?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.
The exact reply, ready for your review.
Read outreach.md · T2
First reply to an inbound recruiter| To | Example Co. recruiting team |
|---|---|
| Via | Email · 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?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.
The whole search, in one place.
Decisions first. Then recommendations, applications and what comes next.
| Needs approval | Proseware |
|---|---|
| Reply to review | Fabrikam |
| Recommended | Alpine Ski House Coho Winery |
Bash jt board
python3 bin/jt.py boardTracker 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?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.
Three adjustments for next week.
- Continue recruiter follow-ups. Both submitted recruiter records have replies, with 1 interview; the sample is only 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.
- 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| Source | Records | Replied | Reply rate | Interviews | Rejected |
|---|---|---|---|---|---|
| scout | 4 | 0 | 0% | 0 | 1 |
| recruiter | 2 | 2 | 100% | 1 | 0 |
| referral | 1 | 1 | 100% | 0 | 0 |
| self | 1 | 0 | 0% | 0 | 0 |
| Total | 8 | 3 | 38% | 1 | 1 |
| Reassess | Next Friday |
|---|---|
| Caveat | Demo 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?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.
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| Version | v0.x · placeholder |
|---|---|
| Check | At most weekly |
| Personal rules | CLAUDE.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?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.
Python 3.9+ for the offline tracker. Claude Code or another agent following AGENTS.md for the workflow. Codex follows the same rules.