← Alla projekt

JobTrack

A personal job-application tracker. Record what you applied for, where and when; find it again by meaning rather than exact wording

JobTrack started from a simple, annoying question: have I already applied to this company? That question sits at the center of everything else it does.

Never apply twice by accident

As you type a company and title into a new application, JobTrack checks quietly in the background and tells you, before you save, whether you are looking at an exact repeat, a similar role at the same place, a company you have already approached, or something genuinely new. Company names are cleaned up first, so "Spotify AB," "spotify," and "Spotify, Inc." all count as one employer instead of three. The same check can also sweep everything already in your database, grouping past duplicates from a double import or a posting clipped twice, so cleaning up is a few clicks rather than a spreadsheet exercise.

Finding a role again, even when you do not remember the words

Search combines two different approaches. One matches on the words you actually type, forgiving typos along the way. The other understands meaning, so searching for "server side developer" can surface a saved "Backend Engineer" role even though the two share no words at all. Results from both are merged into a single ranked list rather than forcing two very different kinds of scores onto the same scale.

Getting postings in without retyping them

A role can be saved as a lightweight opening long before it becomes a real application: paste a link and JobTrack reads the posting itself, paste the text directly, or use a browser extension that reads the job page you already have open. That last option exists because LinkedIn, Indeed, and Glassdoor all block servers from reading postings, so the only route that actually works is reading the page from inside your own browser session, the moment you press a button. However a posting comes in, it runs through the same duplicate check as a manual entry.

Your network, and how it fits in

People you know are tracked alongside applications: where they work, how you know them, every conversation you have logged, and a reconnect date that surfaces on the dashboard when it comes due. The duplicate check even points out who you already know at a company before you apply there, and a whole network can be imported straight from LinkedIn's own data export.

A profile that does some of the sorting for you

Fill in what you are looking for (titles, location, a salary floor, words to look for or avoid, and a short summary of your own background) and saved openings get scored and ranked against it automatically, with the reasoning shown rather than hidden behind a bare number. Two optional rules take small chores off your plate: a default follow up date on new applications, and quietly flagging long silent ones as ghosted, always with a preview before anything actually changes.

A dashboard built on history, not a snapshot

The pipeline view counts what an application ever reached rather than just where it sits today, so a role that made it to interview and was then turned down still counts at the interview stage, which is the only way a conversion rate between stages means anything. Alongside it sits application volume over the past two years, and a "gone quiet" list that surfaces exactly the applications nothing else would remind you about.

Talking to it instead of clicking through it

JobTrack also runs as an MCP server, which means an AI assistant can read and write the same data directly: log an application, ask what is still waiting for a reply, save a posting for later, or run a weekly review that drafts follow ups and flags what has gone quiet, all without opening the app. Every action that changes something asks first, and there is no way for it to delete data.

Yours, and only yours

Everything runs on your own machine by default, with a single local database file. It can just as easily run as a small background process with a tray icon, or install like any other Windows application with no terminal in sight, and the same database can move to a hosted one later without any of the application logic changing. The project keeps growing in the open too: the browser extension is now signed and distributed the proper way instead of needing developer mode, and every release ships through an automated pipeline that ties each published version back to the exact commit it came from.

TYPESCRIPT
REACT
VITE
FASTIFY
SQLITE/POSTGRES (VIA REPOLAYER)
HYBRID SEARCH (TRANSFORMERS.JS)
MCP
2026