SYSTEMS / 2026

Job Application Tracker

A command-line tool for keeping a job search organized.

MY ROLE
Solo project
KEY RESULT
SQLite-backed, no dependencies
TEAM
Built on my own.

How a request flows

  1. Menu loopinput() prompts
  2. ValidationStatus and date checks
  3. sqlite3Parameterised queries
  4. applications.dbLocal file

Why

Job searching at volume gets messy fast. I wanted one local place for statuses, dates, links, and notes.

What I built

  1. 01

    Designed a menu-driven CLI for adding applications with company, role, status, date, link, and notes.

  2. 02

    Stored everything in SQLite with Python’s built-in sqlite3 module, so data persists between runs.

  3. 03

    Added status updates (Applied, Interview, Rejected, Offer, Accepted) with validation, and filtering by status.

See it run

python main.py
[1] Add application
[2] View all
[3] Update status
[4] Filter by status
[5] Exit
Choose: 1
Company: Klue
Role: Software Co-op
Status: Interview
Job link: https://example.com/coop
Notes: Tech screen Thursday
Use today's date? (Y/N): Y
Application added successfully

Choose: 4
Status (Applied, Interview, Rejected, Offer, Accepted): Interview
2 | Klue | Software Co-op | Interview | 2026-10-03 | https://example.com/coop | Tech screen Thursday
Recorded from the real program. Input typed at each prompt is shown after it.

Outcome

A dependency-free tool that keeps a full application history on your own machine. The session on this page was recorded from the real program.

The trade-off

A terminal interface instead of a web one. It was fast to build and keeps data on my machine, but it is harder to use on a phone.

What I learned

Even a small CLI benefits from a clear data model, and persistent storage changes how you think about program state.

What I'd fix next

Add editing and deleting, sorting by date, CSV export, and eventually a small Flask front end.

Built with

  • Python
  • SQLite
  • CLI design
  • CRUD