The problem
Job hunting is exhausting. Tracking applications in spreadsheets makes it worse.
Most people manage job applications in Google Sheets or Excel. Company names, dates applied, which CV they sent, interview stages, notes. Every time you apply somewhere new, you scroll through rows trying to figure out what status meant what, whether you followed up, and which version of your CV you used.
Spreadsheets have no visual hierarchy. Everything looks the same whether it is a rejection or an interview request. You miss follow-ups. You apply to the same role twice. You forget which companies ghosted you and which are still in play.
I wanted something that shows the state of a job search at a glance.
What I built
A Kanban-style job tracker that turns the chaos of job hunting into a visual workflow.
Jobs live in columns: Saved, Applied, Interviewing, Offer, Rejected, Withdrawn. Drag a card from Applied to Interviewing when you get that email. See instantly how many applications are active, how many went cold, what your response rate looks like.
Each job card shows the essentials: company logo (fetched automatically), role title, location, work type, and when you applied. Click through for full details including salary expectations, the actual job link, which CV you used, and your notes.
The whole thing works on mobile too. Bottom-sheet modals, touch-friendly status pickers, responsive layouts that do not feel like an afterthought.
Why it matters
Spreadsheets are flexible but formless. You can track anything, but you cannot see anything.
A Kanban board gives your job search a shape. You stop asking "where am I with everything?" and start knowing. The drag-and-drop is not just convenient. It makes status changes feel real. Moving a card to Offer hits different than typing "offer" in a cell.
I also added company logos automatically. Small thing, but it makes the board scannable. Your eye catches the Google logo faster than reading "Google" in a list.
How it works
Built with Next.js and React, using Neon's serverless PostgreSQL for the database. Drizzle ORM keeps the queries type-safe. Stack Auth handles login so each user gets their own data.
The Kanban uses dnd-kit for drag-and-drop. Smooth animations, proper accessibility, works on touch devices. Status changes are optimistic: the UI updates instantly while the API catches up in the background.
Company logos come from Clearbit's API, with a fallback chain. If Clearbit does not have it, try Google's favicon service, then fall back to generated initials. Logos are cached in the database so we are not hammering APIs on every page load.
Dark mode, date filtering, search across all your applications. The usual stuff, done properly.
What I learned
The gap between "it works" and "it feels good" is bigger than I expected. Getting drag-and-drop right on mobile took multiple iterations. Bottom sheets need careful height calculations to avoid the iOS Safari address bar. Small UI details like the right amount of padding, status colours that work in both light and dark mode, take disproportionate effort but make everything feel polished.
I also learned that building for yourself is clarifying. I knew exactly which features mattered because I was living the problem. No guessing what users might want. Just solving my own pain points and trusting others have them too.
What is next
The core is solid: track jobs, visualise progress, stay organised. But there is room to grow:
- Interview scheduling with calendar integration
- Email reminders for follow-ups
- CV version management (store the actual files, not just names)
- Export to CSV for those who still want spreadsheet backup
- Analytics on response rates by company type, role level, time of year
For now, it does the job. Literally.