It's a Numbers Game

By Shapes.IO

Guides

The job application tracker spreadsheet: columns, formulas and limits

The columns worth having in a job application tracker spreadsheet, two formulas that make it useful, and an honest account of where a spreadsheet stops working.

A spreadsheet is a good place to start a job search and a bad place to finish one. It is free, it is already open, and it takes ninety seconds to set up. It also has no idea what an application is, which is fine for the first twenty and starts to hurt somewhere after that.

This is how to build one that holds up, and where the seams are.

The columns

Nine columns. Resist the tenth. Every extra column is a field you will leave blank under pressure, and a half-filled sheet is one you stop trusting.

  1. Company — plain text.
  2. Role — the exact title from the posting, not your paraphrase of it. You will need to match it against an email later.
  3. Link — the URL of the posting. Make it a real hyperlink; a truncated string in a narrow column is worthless.
  4. Source — referral, job board, company site, recruiter. One of four values, from a dropdown. This is the column that earns its place at review time.
  5. Applied — the date, formatted as a date, not typed as text. Everything useful downstream depends on this being a real date.
  6. Status — a dropdown, never free text. Saved, Applied, Interviewing, Offer, Rejected, Bad fit, Stale.
  7. Last contact — the date of the most recent thing either side sent. Update it when you follow up.
  8. Days since — a formula. Below.
  9. Notes — one cell, and the weakest part of the design. Also below.

Freeze the top row. Set the dropdowns with data validation so status can never be "applied" in one row and "Applied " with a trailing space in another, which is the thing that quietly breaks every count you try to run later.

Two formulas, and that is all you need

Days since last contact. In the Days since column, assuming G2 holds the last-contact date:

=IF(G2="", "", TODAY()-G2)

The IF matters. Without it, every empty row reads as a large number counting up from 1899, and the column becomes noise. Works in Google Sheets and Excel unchanged.

Highlight what has gone quiet. Conditional formatting on the whole row: a custom formula of

=AND($F2="Applied", TODAY()-$G2>14)

where F is status and G is last contact. That paints only the rows where you are genuinely waiting and have been waiting a while. The dollar signs are load-bearing — without them the rule drifts column by column across the row.

Those two turn the sheet from a record into something that tells you what to do on a Monday, which is the only reason to keep it.

One pivot worth building

Status down the rows, source across the columns, count of company as the value. That single table answers the question the whole exercise exists for: which channel is producing interviews, rather than which channel is producing applications. Those are usually not the same channel, and the gap between them is where a search gets better.

Build it once, in a second tab, and look at it once a week. Not more.

Where the spreadsheet stops working

Four specific failures, in roughly the order you hit them.

1. The notes cell

This is the first and worst. A job search generates a stream of events — applied, screen, follow-up sent, take-home, silence — and a spreadsheet gives you one cell to hold all of them. So you either overwrite it, losing the history, or you append to it and end up with a cell containing four hundred characters that you have to expand the row to read, in a font too small to scan.

There is no good fix inside a spreadsheet. A second sheet with one row per event and a lookup back to the application is the correct data model and also more administration than a job search can support. The honest answer is that spreadsheets model records well and events badly.

2. Status never updates itself

Nothing moves to Stale unless you move it. The formatting rule above helps you see it, but the sheet has no opinion, so a row sits in Applied for eleven weeks looking exactly like one you sent on Tuesday.

3. Entry is a tab switch

You are on the posting. The sheet is elsewhere. Copying the company, the role, the URL and the date across is four context switches per application, which is the friction that kills the whole system — see the four ways a tracker dies.

4. It holds your data but can't use it

Your address, your notice period, your right-to-work answer, your last three job titles and dates: you type them into an application form perhaps forty times. The spreadsheet may well contain all of it. It can't put any of it into a form.

When to switch, and when not to

Keep the spreadsheet if you are applying to a handful of roles you have already researched, or if you want a permanent, exportable record you fully control. It is genuinely a reasonable tool for a short, focused search.

Move on when the notes cell is the problem — when you have started avoiding it, or when you have lost something you knew you had written down. That is the signal, and it arrives well before the row count does.

This site is the version of that sheet I wanted after hitting all four of those walls: the same columns, a status board instead of a status column, an append-only log per application instead of one notes cell, and a profile that fills in the repeated form fields. It is free, and nothing about it is a trial.

Or let something else hold it

It's a Numbers Game is a free tracker built around exactly this: a board per application, a log per conversation, and a profile that fills in the questions every form asks twice. No trial, no card, no upsell.