I built a dashboard to run my job search

Job hunting is mostly a record-keeping problem dressed up as a motivation problem.
Early on I would send out twenty applications and then have no idea who had replied,
who had ghosted me, or which role I actually wanted. So I built myself a dashboard.
It runs on localhost with SQLite and one Python process. Nothing syncs to a cloud,
and nobody has my data but me.

It is a fork of Pickle-Pixel/ApplyPilot. My fork is public at
github.com/msohailse/ApplyPilot, and
everything below is what I added to it.

The daily goal

I apply to five jobs a day. That is the entire game. There is a small HUD at the top
of the dashboard showing something like 4/5 with a progress bar, and when I mark the
fifth one it throws confetti. It also tells me how long it took, measured from the
first application of the day to the one that finished the goal. Today that was 1h 46m.

It sounds silly, and it is. But the streak is the only thing that has gotten me to
open the dashboard on a day I did not feel like it.

The numbers are honest

The first version had a single toggle: applied or not. That is fine for a week and
useless after a month. Now each job moves through real stages. Applied, interviewing,
offer, rejected, no deal. Two decisions I am glad I made: a rejection does not erase
the application date, and jobs that vanish from the board stay in the database but
drop off the active list. If I deleted them, my success rate would look better than it
truly is, and I would be lying to myself.

The report tab

It shows the pipeline, the success rate at each stage, and a day by day count of
applications. The headline number is simply applications sent. No invented score, no
vanity metric.

Skills analysis

I hit one button and it reads every job I scored 7 or higher, then writes up which
skills keep coming back and where my gaps are. It is a view of the market rather than
of a single posting, and I re-read it before starting a new batch.

Resumes and cover letters

Each job can generate a tailored resume and cover letter from the posting. You can
type a note first, something like "lead with the platform work, skip the frontend
bullets." Files download properly and land in a downloads folder, and deleting one is
a click on the file with a confirmation.

I also keep two versions of my resume, one for Italy with my Italian number and a
Florence address, one for Norway. A dropdown picks the variant and it flows through
everything, including the PDF links on my site. Adding another country is a single
command.

Highlights, todos, and inbox

Highlight a job and an LLM pulls out its key concepts as chips on the card. Todos are
tagged so I can filter them by context. Inbox insights connect read-only to Gmail and
match recruiter replies to the right job.

What I would tell you

Fix your data before you add features. My Apply button was broken because the scraper
had stored the literal string "None" for 369 jobs, so every click sent me to
localhost/None. Cleaning that up did more for the tool than any new button I built.

Then pick one number you refuse to fudge. Mine is applications sent. Once that number
is true, everything else gets easier.

The code

添加评论
点赞收藏
点踩分享查看原文
评论
?
参与讨论