Search built for the incoming call
Global search (Ctrl+K) covers companies, job titles, people, emails and phone numbers. A caller's number matches with or without the country code and spaces, so you can type what you see on the screen.
Product
The recruiter calls. The application, the emails and the CV you sent are on screen.
The phone rings and a recruiter says "about the position you applied for". After a few weeks of applying to many roles, that sentence is hard to answer. Which company was it, what did the posting say, which CV version went with it, and who did I speak to last time? Spreadsheets and generic boards hold part of the answer, and the emails, notes and files sit somewhere else. I build tools for my own use first, and this was a job I wanted to make easier every time it came back.
Job Tracker is a private CRM for a job search. Every application, company, recruiter, pasted email, call, interview and CV version sits in one searchable place, on a server in Greece. When someone calls, a few keystrokes bring up the company, the job description, the current stage and the full history. Reminders, follow-ups and "no reply" flags keep the rest of the search moving without any outside service.
Add an application: paste the job link and description, pick the company, stage, source, work mode and salary. Duplicate and same-company warnings appear while you type.
Attach what you sent: upload or choose the CV and cover letter version, so each application records which file went where.
Log what happens: paste emails, log calls and interviews, and move the card along the board. Interview reminders and follow-ups are created for you.
When a recruiter calls, press Ctrl+K (or open search on the phone), type the company or the caller's number, and read the application and its history.
Review the week on the dashboard: what needs attention, the response rate and the stage funnel.
Global search (Ctrl+K) covers companies, job titles, people, emails and phone numbers. A caller's number matches with or without the country code and spaces, so you can type what you see on the screen.
Pasted emails sent and received, calls, interviews (future ones marked Upcoming) and notes, mixed with stage changes, newest first. Pasted text is shown as plain text, never as HTML. CVs, cover letters and other files (PDF, Word .docx, plain text) link to the applications they went with, so you can see where each version was sent.
A kanban board with one column per stage: drag cards with mouse, touch or keyboard, or use a "move to" menu. A list view adds filters and sorting. Stages can be renamed, recoloured, reordered, added or removed, and each has a type such as in progress, offer or closed.
A future interview gets a reminder one day before, which moves if the interview moves. After a quiet period (7 days by default) an active application gets a "Follow up" reminder, and after a longer one (21 days by default) it is flagged as "no reply" until something new happens. Notifications stay inside the app: nothing is emailed or pushed.
Active applications, interviews this week, offers, response rate, applications per week, a "needs attention" view (interviews in the next 7 days, follow-ups due, no reply) and a stage funnel. The charts are drawn by the app itself, with no chart service.
The same posting needs an explicit confirmation before it is saved again, whether the link is a LinkedIn or Indeed link in any form, with or without tracking parameters. Other applications at the same company show up while you type, and "Acme, Inc.", "ACME" and "acme ltd" count as one company, including Greek legal suffixes.
Sign in with a passkey (fingerprint, face, device PIN or security key), or with a password plus an authenticator app code. Ten one-time recovery codes cover a lost device. The settings list active sessions with remote sign-out and keep a security activity log.
A Next.js web app with a PostgreSQL database, a separate worker container for reminders, follow-ups and "no reply" detection, and a one-shot migration step, all run with Docker Compose. Drag and drop uses dnd-kit. The interface has light and dark themes, self-hosted fonts with Greek glyphs, works at phone width and can be installed to the home screen. Unit, integration and end-to-end tests run in CI together with lint, type checks and a dependency audit.
Job Tracker was built with AI agents, reviewed by a security professional. AI agents, both local models and third party ones, made it fast to plan, build and iterate, from a written design brief to a phase-by-phase architecture plan with its own security review phase. Mikael set the requirements, reviewed the result and owns the security. There is no AI inside the product.
Stack
Live
Live at jobs.tsakmak.com and in use for Mikael's own job search. All planned build phases of version 1 are done. It is a personal tool: single user, English interface only, web only. Visitors see only the sign-in page, and there are no accounts for others.
Planned:
Ideas, not scheduled: a Greek interface and a native Android app.
Not built today: email or push notifications, mailbox sync, CSV import, integrations with job sites, or any AI helpers.
one private place for a job search, so a recruiter's call never starts with "which one was that?".
once the code is open sourced, anyone applying to many roles can run their own copy and keep their search on a server they control. Until then there are no accounts for others.
A self-hosted CRM for a job search: applications, recruiters, pasted emails, CV versions and interviews in one place, behind passkey sign-in.
Still under construction
The Tsakmak brand and this website are still being built, so some pages and details are not final yet. Thank you for your patience.