A job search dashboard for engineers who'd rather edit TypeScript than drag cards around in Trello.
No magic. No "AI finds your dream job" nonsense. You do the searching, you make the decisions, this gives you a clean interface to track it all and stop losing leads in browser tabs and half-finished spreadsheets.
You're a developer looking for work. You know what you're worth, you know what stack you want, and you don't need a chatbot to tell you what jobs to apply for. What you need is:
If you want an app that auto-applies to 500 jobs and writes your cover letter, this isn't it. If you want a sharp tool for managing a focused, intentional job search — keep reading.
targets.ts to match your own profile.normalizedJobTitle, easyApply, and expired status.| Tier | Meaning | Color |
|---|---|---|
| P1 | Strong fit — apply now | Green |
| P2 | Almost — worth a look | Amber |
| P3 | You can do this | Blue |
| Skip | Not a fit | Gray |
| Layer | Technology |
|---|---|
| Framework | SvelteKit with Svelte 5 (runes: $state, $derived, $props) |
| Styling | Tailwind CSS v4 via @tailwindcss/vite |
| Language | TypeScript — strict, fully typed data layer |
| Runtime | Bun — fast installs, fast dev server |
| Data | Plain TypeScript files — no database, no auth, no backend |
| Theme | Dark mode, #39FF14 neon green accent |
git clone https://github.com/NooRotic/JobTrackr.git
cd JobTrackr
bun install
bun run dev
Open http://localhost:5173. The app ships with example data so you can see how everything works.
All data lives in src/lib/data/. Plain TypeScript files with typed interfaces. No database, no migration, no setup wizard. Open the file, edit the data, save, and the dev server hot-reloads.
| File | What it does |
|---|---|
searches.ts |
Your saved job searches with results and priority tiers |
targets.ts |
Company targets, job title categories, confidence scoring algorithm |
titleAnalytics.ts |
Job title effectiveness tracking |
applications.ts |
Application pipeline entries |
companies.ts |
Company research cards |
activity.ts |
Activity feed |
profile.ts |
Career profile data |
types.ts |
All TypeScript interfaces — extend as needed |
Replace the example data with your own. That's it.
Your real job search data should not live in a public repo. The .gitignore already excludes src/lib/data/personal/. Keep your real data files there — the app loads personal data by default and falls back to demo data. Toggle between them with the sidebar button or ?demo=true URL param. Your preference persists in localStorage across reloads.
JobTrackr was built alongside Claude Code with the Indeed MCP plugin. This is entirely optional — the dashboard works fine with manually entered data — but if you have this setup, the workflow gets significantly faster:
What Claude Code + Indeed MCP enables:
search_jobs — Run Indeed searches by keyword, location, and job type. Results map directly into searches.ts format.get_job_details — Pull full job descriptions by job ID. Populates the jobDescription field for inline JD viewing.get_company_data — Pull company ratings, salary averages, CEO approval, interview difficulty. Populates company target cards.get_resume — Verify how Indeed parsed your uploaded resume.The workflow:
What it does NOT do:
This is a power tool, not an autopilot.
src/
lib/
components/ # StatusBadge, FitBadge, PriorityBadge, DeployBadge, StatCard
data/ # All typed data files (example data ships with repo)
personal/ # Your real data (gitignored)
routes/
+layout.svelte # Root layout with sidebar nav + demo/live toggle
+page.svelte # Dashboard home (stats, leads, pipeline, activity)
searches/ # Priority-tiered job board (P1/P2/P3)
targets/ # Company-targeted search with confidence scoring
applications/ # Kanban board + table view with add/edit
companies/ # Company research card grid
analytics/ # Job title effectiveness tracking
profile/ # Career profile with talking points
bun run build
bun run preview
Deploy to Vercel, Cloudflare Pages, GitHub Pages, or any static host with the appropriate SvelteKit adapter.
PRs welcome. This is intentionally minimal — no database, no auth, no server-side rendering of dynamic data. The goal is a fast, portable dashboard that any developer can fork and run locally in under a minute.
If you're adding features, keep them opt-in and data-file driven. The core value is simplicity.
MIT — see LICENSE.