November 5, 2026

Job search spreadsheet: the columns and formulas to use

A job search spreadsheet for tech roles: the columns to copy, stages from Saved to Closed, formulas for Google Sheets and Excel, and what to check weekly.

Career

Guide

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.

ColNameWhat goes in itExample
ACompanyName as on the postingAcme Payments
BRoleTitle as posted, with the levelSenior Backend Engineer
CLinkPosting URL, since postings vanishcareers.acme.example/123
DSourceReferral, Recruiter, Company site, Job board, OtherReferral
EStageSaved, Applied, Interviewing, Offer, ClosedInterviewing
FApplied dateDay you submitted2026-10-20
GLast contactLast human reply, or your last message2026-10-29
HNext step dateDay you'll act, or the date they promised2026-11-12
IRoundRecruiter screen, Technical, Take-home, Onsite loop, FinalTake-home
JContactRecruiter, later panel namesDana (recruiter)
KClosed dateDay you moved it to Closed
LClosed reasonRejected, No reply, Withdrew, Posting gone, Offer declined
MNotesTake-home due dates, questions asked, promises madeDue Friday
NDays quietFormula: days since you last heard anything7
OFollow up?Formula: flags an Applied row after 14 quiet days
PDue?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.

text
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 declined

3. Add days quiet

Put this formula in N2, then fill it down to row 1000:

text
=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:

text
=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:

text
=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:

text
=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.

CompanyRoleStageAppliedLast contactRoundDays quietFollow up?
Acme PaymentsSenior Backend EngineerInterviewing2026-10-202026-11-03Take-home7
NorthwindPlatform EngineerApplied2026-10-2417Follow up
BrightlyStaff EngineerApplied2026-10-3110
LedgerlyBackend EngineerInterviewing2026-10-142026-10-27Final14
Orbit LabsSenior EngineerClosed2026-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.

RowLabel in column A
2Applications sent this week
3Quiet applications now
4Reached an interview round
5Interview share of applications sent
6Closed with no reply

Then the formulas, one per row in column B:

text
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:

text
=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.

  1. 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.
  2. Check column P for "Due". These are promised dates that have arrived.
  3. 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.
  4. 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.

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.

Sources

Share this article

Author Image

HighCircl Editorial Team

The HighCircl editorial team writes about hiring software engineers, nearshore development, and engineering team building. Our articles draw on direct experience sourcing and placing senior developers across Poland, Hungary, Slovakia, Serbia, Slovenia, Romania, and Spain — and on candid conversations with the CTOs and engineering leads who hire them.

HighCircl is a nearshore engineering network that delivers matched candidate shortlists in 72 hours. Every piece of content we publish is informed by real engagement data: actual developer rates, real hiring timelines, and what separates engineering teams that scale cleanly from those that stall.

Take Me to the Experts

Access our network of industry-leading software engineers.

Start Now