← All projects

Job Tracker.

A self-hosted dashboard that collects, filters, scores, and tracks early-career software roles from 200+ companies.

TypeScriptReactFastifyPostgreSQL
View source ↗

What it does

Job Tracker is a self-hosted job-search workspace that gathers openings from Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable, SimplifyJobs, JobRight, and JSearch. It runs an initial backfill when the service starts and then collects new postings every six hours, giving the user one searchable dashboard instead of many company career pages.

The collection pipeline filters for entry-level, junior, internship, and co-op software roles, excludes senior positions, and limits results to US-based or remote opportunities. Jobs can be scored using custom keywords and company preferences, added to an ordered application queue, and moved through statuses from new and saved to applied, followed up, response, rejected, or archived.

The application also includes a local ATS engine that compares one or more saved resumes with a job description across skills, relevance, visa language, and impact. A Chrome extension can fill application forms and request AI-assisted cover letters, while the dashboard supports follow-up drafts, analytics, push notifications, and reusable application data.

Core capabilities

What I built

  • Collects jobs from Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable, curated feeds, and JSearch every six hours.
  • Scores resumes locally across skills match, relevance, visa signals, and impact.
  • Tracks the full application pipeline and supports autofill and AI-assisted cover letters through a Chrome extension.

Frameworks and tools

Backend
Node.js 20, TypeScript 5, Fastify 5, node-cron
Frontend
React 19, Vite 7
Database
PostgreSQL through the pg driver, compatible with Neon
Scoring and AI
Local TF-IDF resume scorer, OpenAI API for writing assistance
Browser and notifications
Chrome Manifest V3 extension, Web Push with VAPID

How it works

  1. 01

    Collect postings from supported ATS platforms, curated feeds, and JSearch on a recurring schedule.

  2. 02

    Normalize and filter results by role keywords, seniority, job type, and location.

  3. 03

    Score and prioritize jobs using user keywords, company preferences, visa signals, and resume fit.

  4. 04

    Manage selected roles through an ordered queue and a complete application-status workflow.

  5. 05

    Use the Chrome extension for form autofill and tailored writing, then track follow-ups and outcomes in the dashboard.

Explore all projects →