Productivity

TRACKR

Most job hunts are tracked in a spreadsheet that stops being updated somewhere around week three.

Click to preview · 2× speed

The board. Every application you have open, in one screen.

Stack/Tools

Next.jsTailwindFramer MotionPostgreSQLDrizzleOpenRouter API

What it does

Every job you apply to becomes a card on a Kanban board, and you drag it between Applied, Interviewing, Offer and Rejected as things move. Interview dates and notes live on the card, so the follow-up you promised is attached to the thing it's about rather than sitting in a separate reminder.

Adding a job is a paste. Drop in a posting link or the description text and the fields come back filled: company, role, salary, location, job type, remote or onsite, etc. Typing all of that out by hand is exactly the friction that kills a tracking habit.

The dashboard is the part you open on a bad week. Application volume over time, a status breakdown, and a GitHub-style activity graph that makes a quiet fortnight visible without you having to count anything.

The hard part

Turning a job posting into structured fields, when a job posting is whatever a company felt like writing that day.

There's no schema out there to lean on. Salary might be a range, a single number, an hourly rate, or absent. Location might be a city, three cities, or a sentence about hybrid arrangements. So the extraction is a language model call with a strict output shape, and every field is allowed to come back empty.

Empty is the important part. A model asked for a salary will invent one rather than admit it doesn't know, and a plausible wrong number is worse than a blank you'd have filled in yourself.

A decision I'd defend

The AI fills the form. It never submits it.

Extraction lands in an editable draft that you look at before anything is written to the database. It costs a click on every single add, which is real friction on the most common action in the app.

The alternative is silent writes, and the failure mode there is a board quietly full of wrong salaries and mislabelled companies — data you now trust less than the spreadsheet you left. A tracker is only worth keeping if you believe what it tells you.

Selected screens

The board mid-drag. Status is a position rather than a dropdown, so moving a job forward is the same gesture as thinking about it.
Autofill from a pasted link. Extraction lands in a draft with every field still editable, and nothing reaches the database until you confirm it.
A card opened. Salary reads “Not specified” instead of a plausible invented number — every extracted field is allowed to come back empty.
The dashboard. Volume, conversion rates and a status breakdown, with the application-frequency graph below — the screen you open on a bad week.

Where it stands

Live, with accounts, protected routes and per-user data isolation, so your board is yours.

Board, interview notes, dashboard and AI autofill are all shipped and in use.

What's still missing

Nothing reminds you about an interview; the date is stored but no notification is sent, so the calendar in your head is still doing the work.

Résumé versions aren't attached per application, so which CV went where isn't recorded.

And extraction quality tracks the posting. A well-structured listing fills cleanly; a PDF-flavoured wall of text does not.

Paste a job link into the demo and watch the fields fill themselves, then change one before you save it. That editable step is the whole argument, and it's easier to believe once you've used it.

That's the last of the selected work

There is more in the archive, and something livelier in the playground.