Know exactly who to chase today.
Replies to read, your own to-dos, follow-ups due, offers to answer and everything that's gone quiet. Follow up, snooze or mark Ghosted in one click.
Track every application, recruiter, interview round, follow-up and offer.
A self-hosted, open-source CRM for your job hunt, built by a software engineer for software engineers. Kanban board, recruiter CRM, interview rounds, follow-ups, offers and a Sankey funnel, all in a folder on your disk.
$ git clone https://github.com/waddington/job-application-tracker.gitThe problem
Recruiters pitch five roles in one call. Processes drag on for six rounds. Half the companies ghost you. And your spreadsheet has no idea who to chase today.
So here's a CRM for your job hunt.
Features
Not another spreadsheet template. A proper app with a recruiter CRM, a real stage workflow and a page that tells you what to do next.
Replies to read, your own to-dos, follow-ups due, offers to answer and everything that's gone quiet. Follow up, snooze or mark Ghosted in one click.
Drag between stages, see the interview round on each card and who's gone quiet in red. Undo a move you didn't mean.
Calls with an agenda, the roles they pitched, apply or pass on each, and every application they're part of.
Every application's path, from applied to offer (or to ghosted).
Bonus, equity, pension and IR35, side by side with a worth-a-year figure.
Stage moves, messages, calls, rounds and offers, by day or as lanes.
Edit them in the app or in your own editor. They're just Markdown on disk.
Exported .eml files land on the timeline at the time they were sent.
Press / to search applications, people, debriefs, notes, files and links.
Every tailored CV and cover letter, and which one each company got.
Know before two agencies put you forward for the same job.
Your own stages, any-to-any moves, or strict Jira-style transitions.
How it works
What's active, what needs attention, who you're waiting on and what's coming up today, before you've finished the first sip.
Log the call against them, add each role they mentioned, and book the follow-up with an agenda.
Each role gets a page. Drop the job description on it: it follows the role onto your application.
Interview rounds in your own words, prep and debrief notes, the CV you sent and the full history, all in one place.
Next actions lists who to follow up with. One click each, then close the laptop.
Conversion per stage, time in stage, direct vs recruiter outcomes and a scorecard for every recruiter.
Why not a spreadsheet?
And hosted trackers want your data, your email and a subscription. This one wants nothing.
| Feature | Spreadsheet or Notion | Hosted trackers (Huntr, Teal…) | Job Application Tracker |
|---|---|---|---|
| Your data stays on your machine | Sometimes | ✕ | ✓ |
| Recruiters with several roles | Manual | Partial | ✓ First-class |
| Real stage workflow and history | ✕ | Partial | ✓ |
| Notes, files, emails and CV versions | Messy | Partial | ✓ |
| "Who do I chase today?" | ✕ | Partial | ✓ |
| Free and open source | ✓ | ✕ | ✓ Apache-2.0 |
It's also deliberately not a job-search engine: no scraping, no job-board feeds. It tracks the applications you make.
Local-first, for real
Salaries, recruiters' names, interview notes and the CV you tailored at 1am: none of it should live on someone else's server. Here it lives in one folder you own, in formats you can read without the app.
jat push sends them off-machine.Quick start
Fair warning: this is a tool for developers. There's no installer and no hosted version. If you're happy in a terminal, you'll be fine.
Linux or macOS. Windows isn't supported (the app uses Unix file locking).
The user guide covers the rest: where your data lives, backups and restoring, a second computer, your own stages and every command.
FAQ
Anything else? Ask in an issue: there are no silly questions about job hunting.
Yes. It's open source under the Apache-2.0 licence. No plans, no seats, no trial.
In one folder on your own machine that you choose, kept separate from the code: a SQLite database, a readable JSON Lines export, your Markdown notes and your files. Nothing is uploaded anywhere.
No. By design it tracks the applications you make. It never searches for jobs, never fetches from the web and never contacts anyone.
It's a developer tool: Python 3.12+ with uv, Node.js 22.12+ with pnpm to build the web UI, and git for automatic snapshots. Linux or macOS. Ideally your data folder is a private git repo, so every change is backed up.
If the data folder is a git repo, the app commits a snapshot after each burst of changes and jat push sends them to your private remote. For a single file, download a zip from the sidebar or run jat archive.
Yes, one at a time: clone your private data repo on the second machine, point JAT_DATA_DIR at it and run jat init. When you switch, push on one, then pull and jat restore --force on the other.
Yes. It's built with tech hiring in mind (recruiters, coding interviews, take-home tasks), but the stages are yours to configure in config.toml.
Yes. Every planned feature is built, and it's in daily use for a real job search. The version is still 0.1.0 only because it hasn't been bumped to 1.0 yet. Issues and pull requests are very welcome.
No. It's a personal tool for one job seeker, running on localhost.
Clone it, run it, and never lose track of a recruiter again.