Why I Built Dossier, the Job Tracker My Spreadsheet Couldn’t Be

Throughout the periods of unemployment I’ve experienced during my professional career, a spreadsheet proved to be vital in managing the job search process. Yet, although setting it up was easy and fairly low-tech, keeping it updated was manual and tedious. Updating a listing for a job I applied for required modifying numerous cells in a row, and I frequently had to verify whether outstanding applications were still valid. Moreover, the whole thing was disconnected from other job-hunting aspects.

These reasons are why I built Dossier, a job application tracking app that not only records jobs I applied for, but also pulls together all the information I need to better prepare for interviews. It’s similar to a CRM, but specifically for the job search.

Dossier is a byproduct of my “summer of building” effort and, like my OnCue liveblogging app, is a solution to a personal problem: How could technology transform my manual data entry spreadsheet into something that provides more value? At scale, the spreadsheet was unwieldy, especially when tracking hundreds of listings. Besides that, the file only knew what I typed into it—it was passive. It couldn’t keep me updated on postings, nor could it bring in anything I hadn’t entered myself.

Trackers like this already exist—Teal, Huntr, Jobalytics, and Jobscan. But this isn’t a story about filling a gap in the market. Rather, it’s about deciding what mine needed to do and then building it. So when I set out to create Dossier, I approached it with a few things in mind:

  • The goal wasn’t to guarantee a job offer, but to handle the nitty-gritty of job-hunting.
  • The app had to cover applications across the major job boards, from LinkedIn and Indeed to applicant tracking system (ATS) platforms like Greenhouse, Lever, and Workday.
  • LinkedIn and Indeed restrict access to their data, so the workflow had to absorb that limitation rather than treating those sites as out of scope.
  • Dossier had to work on the web and on mobile, without a native app to maintain—job listings surface at inconvenient times.

Building Dossier enabled me to try my hand at creating a cloud-based app. Previously, much of what I’d built has been websites, nothing as complex as what I’m about to share. I wanted something that would take work off my plate, not add to it. And though Dossier was primarily built for me, it was designed as if someone else would be using it.

How Dossier Works

At Dossier’s core is its database of job applications. First, I imported my existing spreadsheet, sorting each application by status (e.g., applied, interviewing, rejected, and ghosted). Once done, each listing carries everything else about the role: links to the job description, applied date, my notes about each interview round, and recent news headlines about the company.

As noted earlier, Dossier accepts postings from multiple job boards. I have listings saved from LinkedIn and Indeed, as well as those coming directly from corporate career pages and ATS sites Ashby, Greenhouse, Workday, and Lever. The goal was to provide a complete picture of all the places where I’d sent my resume.

Getting and updating a job in Dossier works a few different ways. The simplest is manual entry—I paste in a URL and fill out the fields myself. There’s also an email address I can forward to. Send it a posting link, and Dossier creates a record; forward a rejection or acceptance, and it updates the status. I’ve also made Dossier a progressive web app, so on mobile it installs to my home screen and shows up in the share sheet. When I come across a listing on my phone, I can share it straight to Dossier—no native app to build or maintain. The final way is through a Chrome browser extension, which I’ll come back to.

To improve my odds of landing an interview, I added a networking feature built on LinkedIn data. LinkedIn prohibits third-party access to connection data, so the workflow is manual: I export my connections from LinkedIn, then upload that file to Dossier. Not frictionless, but connection lists don’t change much week to week, so periodic re-uploads seemed like an acceptable cost. Once the data is in, every listing shows me which of my connections are tied to that company, and I can note who might be worth asking for a referral.

Artificial intelligence does a few different jobs in Dossier. One is an always-on agent that monitors the job listings I’ve saved or applied to in the background. When there’s a material change—a posting closing or disappearing entirely—the agent triggers an in-app notification asking me to confirm the new status. That keeps the data current, so I’m never left wondering what happened with an outstanding application.

The additional AI features moved Dossier from tracking what I’d applied to toward helping me decide what to apply for. Two of them shape how I target roles; a third prepares me for the interview itself.

  • Job Intelligence: Using Claude Haiku, this tool acts like a recruiter and tells me what key phrases and skills are needed on my resume.
  • Resume Fit: For every job saved, this feature provides an assessment of how I match up to it based on the resume I’ve uploaded into Dossier. In the interest of privacy, I made it so only the text is extracted—the file isn’t saved—and the information isn’t included in any exports or analytics. But recognizing that not everything is conveyed in a resume, I also incorporated data from other sources, such as my GitHub repository (public only), website, and blog.
  • Interview Studio: To boost my chances of excelling during the interview process, this Dossier feature generates questions hiring managers and my future peers might ask me.
A search engine in Dossier lets you find jobs across numerous job boards and sites. Credit: Ken Yeung
A search engine in Dossier lets you find jobs across numerous job boards and sites. Credit: Ken Yeung

One of the last pieces I added was job discovery. LinkedIn and Indeed both let you filter by location or by remote, but not in the way I actually search—local roles regardless of arrangement, plus remote roles anywhere, in a single result set. So Dossier runs its own search with listings coming from aggregators like Adzuna, Jooble, and Google Jobs, along with open ATS feeds from Greenhouse, Lever, and Ashby. The aggregators give me breadth; the ATS feeds come from the companies, so they’re current.

Saving Jobs in One Click

As mentioned earlier, I launched the Dossier Chrome extension to ingest job listings. Once installed, saving a posting requires one click. A form pops up in the browser already filled with the company name, job title, and the link. I can insert any notes I may have before saving it to Dossier.

That may sound like a small thing, but for me it wasn’t. One of the worst parts of job hunting is the bookkeeping that comes with applying. Multiple tabs open. A posting I saved one day that I can’t find again the next. Which site did I save that job to? Did I save that job in multiple job boards? Hopefully I didn’t apply to it twice. The extension handles that—it warns me if I’ve already saved a listing, and tells me which of my connections works there.

The extension isn’t just for jobs, but also for the people attached to them. While Dossier shows which of my connections could help with a referral, it doesn’t identify everybody, such as the recruiter, hiring manager, or anyone else I’d likely interview with. Those names come out as the process moves along, but once I have one, I can look up their LinkedIn profile and use the extension to link them back to that job application. Doing so gives me a fuller view of the company as I go through the hiring process.

Dossier is Now Live

The hardest part of Dossier wasn’t building it, but deciding what features belonged. Every constraint I hit—LinkedIn’s and Indeed’s data policies, gaps in job-board filtering—narrowed the design, and that narrowing usually helped. And how much AI was too much? Sure, it would have been easy to have a model power every field, but I had to keep asking whether a feature would actually move my search forward. What’s in Dossier now is what earned its place.

Dossier is live now. Sign up with a Google account—there’s no waitlist. The AI features are capped at 10 runs each per month to keep costs manageable, but everything else is open. I’d welcome your feedback.