A job search spreadsheet needs about a dozen columns: company, role, link, source, stage, applied date, last contact, next-step date, interview round, contact, closed date and closed reason. Add a formula that shows days since you last heard anything. Use five stages, and give every row a date you'll act on. That's enough until you're chasing quiet applications from memory.
Which columns does a job search spreadsheet need?
Indeed's guide to job search spreadsheets suggests 21 columns, including research and thank-you fields for every interview. A sheet that heavy is one you'll stop updating. Ours has 13 columns you type in and 3 that calculate themselves, and it's built around a tech loop: a recruiter screen, a take-home, a technical round, an onsite, a final.
| Col | Name | What goes in it | Example |
|---|---|---|---|
| A | Company | Name as on the posting | Acme Payments |
| B | Role | Title as posted, with the level | Senior Backend Engineer |
| C | Link | Posting URL, since postings vanish | careers.acme.example/123 |
| D | Source | Referral, Recruiter, Company site, Job board, Other | Referral |
| E | Stage | Saved, Applied, Interviewing, Offer, Closed | Interviewing |
| F | Applied date | Day you submitted | 2026-10-20 |
| G | Last contact | Last human reply, or your last message | 2026-10-29 |
| H | Next step date | Day you'll act, or the date they promised | 2026-11-12 |
| I | Round | Recruiter screen, Technical, Take-home, Onsite loop, Final | Take-home |
| J | Contact | Recruiter, later panel names | Dana (recruiter) |
| K | Closed date | Day you moved it to Closed | |
| L | Closed reason | Rejected, No reply, Withdrew, Posting gone, Offer declined | |
| M | Notes | Take-home due dates, questions asked, promises made | Due Friday |
| N | Days quiet | Formula: days since you last heard anything | 7 |
| O | Follow up? | Formula: flags an Applied row after 14 quiet days | |
| P | Due? | Formula: flags a next step date that has arrived |
Column G does the most work. It's the date either side last spoke, and the useful numbers come from subtracting it from today.
Salary range, resume version and a copy of the job description are worth adding only after a problem keeps recurring, such as postings disappearing before the interview. Don't start with them.
Stages: Saved, Applied, Interviewing, Offer, Closed
Five stages is enough. Saved is a posting you mean to apply to. Applied means submitted. Interviewing covers every round, and column I says which one. Offer is an offer on the table. Closed is everything else, and column L records how it ended.
Closed is the stage most sheets lack, and it matters most. Rejected, Withdrew, Posting gone and Offer declined are clear. No reply is the one you set yourself: after your second follow-up message and a week of silence. What to do when a final interview goes quiet lays out that two-message plan, and K and L are where it ends.
How to build the sheet
1. Create the columns
Name the first tab Applications. Type the headers from the table into A1:P1, then freeze the top row: in Google Sheets, View > Freeze > 1 row; in Excel, View > Freeze Panes > Freeze Top Row. If you already have applications elsewhere, paste them in under the headers, with dates as YYYY-MM-DD.
2. Add the dropdowns
Select E2:E1000 and add a list with the values Saved, Applied, Interviewing, Offer and Closed. In Google Sheets, that's Data > Data validation > Add rule > Dropdown, then type each value as its own item and click Add another item. In Excel, it's Data > Data Validation > Allow: List, with the comma list in Source: Saved,Applied,Interviewing,Offer,Closed.
Repeat for columns D, I and L with these values. In Sheets, enter each as its own item; in Excel, paste the comma list.
D: Referral,Recruiter,Company site,Job board,Other
I: Recruiter screen,Technical,Take-home,Onsite loop,Final
L: Rejected,No reply,Withdrew,Posting gone,Offer declined3. Add days quiet
Put this formula in N2, then fill it down to row 1000:
=IF(OR(F2="",E2="Closed",E2="Offer"),"",TODAY()-MAX(F2,G2))It stays blank for rows you haven't applied to and for rows that are finished. Otherwise it counts from whichever is later, your applied date or the last contact.
4. Add the follow-up flag
Put this in O2 and fill it down:
=IF(AND(E2="Applied",N2<>"",N2>=14),"Follow up","")Fourteen days is our rule. Indeed advises following up one to two weeks after submitting when a posting has no deadline, so 14 sits at the patient end of that range. Change the number if you'd rather nudge sooner. The flag watches rows at Applied only, and the worked example below shows why.
5. Flag due dates and colour them
Put this in P2 and fill it down:
=IF(AND(H2<>"",H2<=TODAY(),E2<>"Closed"),"Due","")Then colour the rows. In Google Sheets, select A2:P1000 and choose Format > Conditional formatting > Custom formula. In Excel, select A2:P1000 with A2 as the active cell and choose Home > Conditional Formatting > New Rule > Use a formula. In both, enter:
=OR($O2="Follow up",$P2="Due")These formulas use only functions both apps share (TODAY, MAX, IF, AND, OR, COUNTIF, COUNTIFS, COUNTA, IFERROR, WEEKDAY) and a fixed range of 1000 rows, because open-ended ranges like F2:F work only in Sheets.
6. Add the weekly counts
Add a second tab called Week and build the counts from "What to count every week" below. Because they read from another tab, every range starts with Applications!.
A worked example: one backend engineer, one Tuesday
An example: a backend engineer has logged 14 applications over three weeks and opens the sheet on Tuesday 10 November 2026. Five rows are enough to see how it reads.
| Company | Role | Stage | Applied | Last contact | Round | Days quiet | Follow up? |
|---|---|---|---|---|---|---|---|
| Acme Payments | Senior Backend Engineer | Interviewing | 2026-10-20 | 2026-11-03 | Take-home | 7 | |
| Northwind | Platform Engineer | Applied | 2026-10-24 | 17 | Follow up | ||
| Brightly | Staff Engineer | Applied | 2026-10-31 | 10 | |||
| Ledgerly | Backend Engineer | Interviewing | 2026-10-14 | 2026-10-27 | Final | 14 | |
| Orbit Labs | Senior Engineer | Closed | 2026-10-08 |
Northwind is the only row flagged, at 17 days. Brightly is at 10, so it waits four more days. Orbit Labs shows nothing because it's Closed, with the reason "No reply".
Ledgerly is the row the flag skips on purpose. It's been 14 days since the final round, but the stage is Interviewing, so no flag fires. A quiet interview round isn't a "follow up" row, it's a promised date. If the company gave a decision date, it goes in column H, and the row shows "Due" when that day comes.
What to count every week
On the Week tab, type the labels in column A and the formulas in column B, one row per count.
| Row | Label in column A |
|---|---|
| 2 | Applications sent this week |
| 3 | Quiet applications now |
| 4 | Reached an interview round |
| 5 | Interview share of applications sent |
| 6 | Closed with no reply |
Then the formulas, one per row in column B:
B2 =COUNTIFS(Applications!F2:F1000,">="&(TODAY()-WEEKDAY(TODAY(),2)+1))
B3 =COUNTIF(Applications!O2:O1000,"Follow up")
B4 =COUNTIFS(Applications!I2:I1000,"<>")
B5 =IFERROR(COUNTIFS(Applications!I2:I1000,"<>")/COUNTIFS(Applications!E2:E1000,"<>Saved",Applications!A2:A1000,"<>"),0)
B6 =COUNTIFS(Applications!L2:L1000,"No reply")Format B5 as a percentage. For interviews by source, add rows from row 8 down, one per source you actually use. Label row 8 "Interviews from Referral" and put this in B8, then repeat in row 9 and below with another source name:
=COUNTIFS(Applications!D2:D1000,"Referral",Applications!I2:I1000,"<>")Each count has a use. The quiet count is the number of messages to write today. The per-source rows show where to spend next week, since a referral that gets you to a round is worth more attention than another batch of cold board applications. And the no-reply count sets your expectations. Checkly published its 2025 hiring data: 12,479 applications for 12 postings, and 217 (about 1.7%) reached a hiring-manager interview. A pile of No reply rows is ordinary.
With a few dozen rows, one application moves a percentage a long way, so read the counts, not the share.
When does a spreadsheet stop working?
For many searches, never. When the maker of Rolepad launched it on Hacker News, several replies said a spreadsheet or text file already does the job, and others used Obsidian boards and Gmail labels. They're often right.
The sheet fails at one thing: it shows you a quiet application only when you open it. It has no reminders, and that shows up three ways.
- You skip a few days, and the flag sits unseen.
- Rows pile up and you stop updating column G, which makes the flag wrong too.
Here's the test. Open the sheet after three days away. If the Follow up column lists applications you'd forgotten about, the sheet is no longer doing the remembering for you, and you need something that surfaces them. If it only confirms what you already knew, keep going.
What to do with your quiet applications this week
Open the sheet and work through it in this order.
- Filter column O to "Follow up". Each row is a message to write today, and how to write a follow-up email after applying covers what goes in it.
- Check column P for "Due". These are promised dates that have arrived.
- Look at rows where you've sent your second message and heard nothing for a week (the two-message plan is in the final-interview guide above). Set the stage to Closed, the reason to No reply, and fill in the date.
- Add one new row, and fill in every column you can.
None of this needs a good day. It needs ten minutes with the sheet open, and the Closed rows are as much progress as the new ones.
Keep the quiet ones from slipping away
A sheet shows a follow-up date only when you remember to look at it. HighCircl Tracker is coming soon, with early-bird access if you subscribe for updates. When it launches, it will flag an application with no reply after 14 days and draft a follow-up you can copy and send from your own mail app. Its board uses the same five stages.
FAQ
What columns should a job search spreadsheet have?
Company, role, link, source, stage, applied date, last contact, next-step date, interview round, contact, closed date, closed reason and notes, plus a days-quiet formula. Add salary range or resume version only once a problem calls for them.
How do I keep track of job applications in Google Sheets?
Build the sheet in the how-to above: the columns, a Stage dropdown, and a days-quiet formula in N2. The same formulas work in Excel.
Is Excel or Google Sheets better for a job search?
For this layout, neither. The formulas are identical in both. Pick the one you'll open every day.
How often should I update my job search spreadsheet?
We'd log each application the day you send it, and each reply the day it arrives. Then do one pass a week for the counts.
When should I stop using a spreadsheet for job applications?
When the Follow up column keeps showing rows you'd forgotten. Open it after three days away: if it surprises you, you need something that reminds you.
