JOB LOGGER

Built in a day, because tracking 150+ job applications in a spreadsheet stopped being sustainable.

PERSONAL PROJECT

PRODUCT DESIGN + ENGINEERING

Role

Designer & Developer (solo build)

Timeline

1 day

team

Just me

platform

Chrome extension + web dashboard, Node.js/Express, Docker, deployed on Fly.io

The Brief

When I moved to Melbourne and started job hunting, I was tracking every application in a spreadsheet, company name, role, link, date, status, copied in by hand for every single listing. It worked at first, but the more roles I applied to, the more it turned into pure admin: re-entering the same fields over and over, forgetting to update statuses, losing track of what I'd already sent.

There was no external brief here. I was both the client and the user, and the deadline was mine too.

The UX Process

I scoped this to one day, so every decision had to earn its place. The build split into two parts: a Chrome extension and a small web dashboard, both structured to stay simple.

The extension has three scripts doing three separate jobs, a background service worker handling API calls, a content script that scrapes job details straight off the page, and a popup script running the UI you actually interact with. When it lands on a page from a job site it knows, Seek, Indeed, or LinkedIn, it auto-fills company, role, location, work setup, employment type, and job description directly into the popup. When it doesn't recognize the page, it doesn't block you, it just drops into a manual entry form instead.

The dashboard is a small Node.js and Express app, deployed with Docker on Fly.io, that acts like a lightweight personal CRM: stat tiles for Total, Applied, Interviewed, Offered, and Rejected, a searchable and filterable table, and CSV export.

One deliberate scope cut: sign-in is a single access code, not a full authentication system. Since this only ever needed to serve one user, building out proper auth would have been effort spent on the wrong problem.

What I Had to Work With

A one-day, self-imposed deadline, which forced real scope discipline rather than gold-plating features nobody but me would use.

Solo, no one to split the build with or bounce decisions off.

Three different job sites, each with different page structures, meaning the scraping logic had to handle Seek, Indeed, and LinkedIn individually, plus a graceful fallback for everything else.

It had to work immediately and reliably, since I was actively job hunting the same day I built it, not prototyping for later.

What Changed

166 real applications logged and counting, this is my actual job search, not sample data. Logging an application now takes two clicks instead of manually copying every field into a spreadsheet, and I haven't forgotten to log one since. It also turned my job search from a static sheet I had to remember to update into a live, always-current view of where things stood.

What I Learned

Building something for an audience of one changes what you optimize for. I didn't need permission systems, roles, or edge cases for other people, just for myself, every day. That's what let me ship the extension, backend, and dashboard in a single day instead of a sprint.

AI-assisted development changed what was realistic to build solo in a day. Scaffolding the extension structure, the Express server, and the Docker and Fly deployment config with Claude meant I spent my time on the actual product decisions, what to auto-detect and what to fall back to manually, instead of boilerplate.

Let's Talk

I'm most energized by projects where I can dig into complex problems, collaborate with smart people, and ship things that genuinely improve someone's day.

Comment

Krizzia

Open to contract work, full-time roles, and interesting conversations about hard design problems.

1