DEV Community

Cover image for AI Job Tracker & Resume Tailoring Tool
oscyp
oscyp

Posted on

AI Job Tracker & Resume Tailoring Tool

The job market in 2026 is brutal. Tech layoffs keep rolling, "open" roles get 500+ applicants in 48 hours, and every posting is a contest against hundreds of other qualified people. If you're job hunting right now, you're not just looking for work, you're competing in a crowded auction where the only way to win is to apply to more roles, faster, with a sharper pitch each time.

Which is exactly the problem. Three weeks into my own search last year, I opened a spreadsheet and realized I had no idea what I'd applied for. Was it the Series B fintech or the agency? Did I already send a follow-up to the recruiter from Tuesday? Which version of my CV did I attach?

Job hunting isn't a motivation problem. It's a data problem. You're running a parallel pipeline of 30+ leads, each with its own stage, contact, deadline, and required artifact - and you're managing it in browser tabs and Gmail search. Meanwhile the person who lands the offer is the one who showed up with a CV tuned to that exact job description.

So I built JobTrackr.it - a job application tracker that does the boring parts for you.


The feature that actually changed my job search

Every tracker on the market lets you list jobs. That's table stakes. The thing that made me ship JobTrackr instead of giving up on the project was resume tailoring.

You upload your CV once. Then, for any saved job, the AI:

  • Scores how well your CV matches the job description (0–100)
  • Flags missing keywords the ATS will filter on
  • Suggests which bullets to rewrite, reorder, or cut
  • Generates a tailored version you can copy out

The first time I ran it on a real job, it caught three keywords I'd buried at the bottom of my CV and one I didn't have at all. I rewrote the bullets in five minutes. I got the interview.

This is the feature I personally use the most, and it's the one I'd build first if I started over.


Everything else it does

I grouped the rest into four buckets so you can skip what you don't care about.

📥 Capture & track

  • One-click save from any job site via the Chrome / Firefox / Edge extension - right-click → Save to JobTrackr.
  • AI extraction from URLs: paste a LinkedIn / Indeed / careers-page link, get company, role, location, salary, and suggested interview stages auto-filled.
  • Status machine with real transitions (saved → applied → in_process → offer → hired) and undo paths for when "rejected" companies suddenly reply.
  • Follow-up reminders so you stop wondering whether it's been too long.
  • Auto-ghosting & auto-archiving on configurable thresholds, so dead leads don't clutter your pipeline.

📄 Resume superpowers

  • AI resume analysis with an ATS score, strengths, weaknesses, and concrete fixes.
  • Resume tailoring per job (the one above).
  • CV-vs-job match scoring with gap analysis.

📊 See where your search is leaking

  • A Sankey diagram of your funnel - instantly shows you "80% of my apps die at the recruiter screen".
  • Advanced analytics: response rate, interview rate, offer rate, time-to-response by company, status trends over time.
  • Multi-currency salary comparison across 11 currencies - no more mental math comparing a €70k Berlin offer to a $95k remote US role.

🧑‍🏫 AI coaching

  • A chat assistant that has context on your applications. Ask "should I negotiate this offer?" and it actually knows what offer you mean.
  • Practice interview quizzes auto-generated from a specific job posting - behavioral, technical, role-specific - with feedback.

The stack, and 3 things I learned

Stack: React 18 + Vite for the app, Astro 5 for the marketing site, Supabase for everything backend (Postgres, Auth, Storage, Edge Functions on Deno), Tailwind, Recharts for the Sankey, Stripe for billing, Turborepo + pnpm to glue it together. The browser extension is plain WebExtension API + esbuild, built three times for Chrome/Firefox/Edge.

Three things I'd tell past-me:

  1. You don't need a state library. I started reaching for Zustand on day one. Ended up with two React Contexts (~1,400 lines for the main one) plus useMemo for derived state. Optimistic updates - UI changes first, DB write fires-and-forgets with a .catch() - make the whole app feel instant without any library.
  2. Store your "is-this-user-Pro?" flag separately from Stripe. I keep user_profile.plan as the source of truth for feature gating, and the Stripe subscriptions table only for billing metadata. This sounds redundant until you need to manually grant Pro to a friend, or Stripe is down, or you want to test feature gates without a webhook round-trip.
  3. Normalize URLs before you check for duplicates. LinkedIn appends ~14 tracking params to every job URL. Without stripping www, query strings, and trailing slashes (and lowercasing), users had the same job saved four times. One-line fix, would've saved a week of "why are there duplicates?" bug reports.

Free vs Pro

The free tier lets you try every feature. Pro unlocks unlimited use of the AI features and analytics. No credit card to start.


Try it (and tell me what your setup looks like)

👉 jobtrackr.it

One specific ask: drop a comment with what your current job-tracking setup looks like. Spreadsheet? Notion? Memory and vibes? I'm collecting horror stories to figure out what to build next.

Happy hunting.

Top comments (0)