← Blog

How I Track Interview Prep in a Google Sheet

A guest post by Amney Mounir: one Google Sheet with a story bank, a practice log with spaced repetition, an application tracker and a dashboard, all on formulas you can read in a minute. Free template included.

Guest post by Amney Mounir. Amney is Product Growth at Meta and the founder of Dataford.io. Want to write for Better Sheets too? Here's how guest posts work.

Interview prep is easy to start and hard to keep organized. Within a week you have behavioral stories in one note, SQL practice in another, a list of applications somewhere else, and no clear answer to a simple question: what should I practice today?

I built one Google Sheet to answer that question. It has four tabs: a story bank, a practice log, an application tracker and a dashboard. Everything runs on basic formulas you can read in a minute, so you can change them to fit your own search. You can make your own copy of the template here. The version you open is view only, and the link creates a copy in your own Drive.

Who this is for

I wrote this for one kind of person: someone with a full-time job who is applying to analyst, product or data roles, has ten or more applications open at once, and has a few evenings a week to prepare. Time is limited, so the sheet has two jobs. It tells you what to review today, and it tells you who to follow up with.

Tab 1: Story Bank

Most behavioral questions can be answered with a small set of stories. Start with six to eight. Each row holds one story, with columns for the situation, your action, the result, a main theme chosen from a dropdown, and the questions the story can answer. When you have a number for the result, write it down, since it makes the story easy to follow out loud.

Story Bank tab with three example stories, a color-scaled strength column, and calculated Times practiced and Last practiced columns
The Story Bank tab with example rows. The grey columns are formulas.

Two columns are calculated. Times practiced counts how often a story ID appears in your practice log:

Story Bank: Times practiced

=COUNTIF('Practice Log'!D2:D200, A2)

Last practiced finds the most recent date for that ID:

Story Bank: Last practiced

=MAXIFS('Practice Log'!A2:A200, 'Practice Log'!D2:D200, A2)

Together they show which stories you keep rehearsing and which ones you forgot. A story with a low strength score and zero sessions is your next practice session. The strength column has a color scale, so weak stories stand out.

Tab 2: Practice Log

One row per session: date, type (behavioral, SQL, case, system design or mock interview), the question or topic, an optional story ID, minutes, and a self-rating from 1 to 5. Be honest with the rating, because the sheet uses it to schedule the next review.

Practice Log tab with sessions, self-ratings, next review dates, week starting dates and Review now flags
The Practice Log tab. Review now appears when a topic is due.

The spaced repetition piece is one formula. A low rating brings the topic back sooner and a high rating pushes it out:

Practice Log: Next review date

=A2+IF(F2<=2, 1, IF(F2=3, 3, IF(F2=4, 7, 14)))

A rating of 1 or 2 means review the next day, 3 means in three days, 4 means in a week, and 5 means in two weeks. These intervals are a simple default, and you can edit the numbers.

The Review status column flags a topic as Review now when its review date has arrived and you have not practiced the same topic since:

Practice Log: Review status

=IF(AND(H2<=TODAY(), COUNTIFS(C$2:C$200, C2, A$2:A$200, ">"&A2)=0), "Review now", "")

The COUNTIFS part looks for a later session with the same topic text, so a topic drops off the list once you practice it again. Keep the topic wording consistent so the match works.

A helper column called Week starting turns each date into the Monday of its week, and the dashboard uses it to group sessions:

Practice Log: Week starting

=A2-WEEKDAY(A2, 2)+1

Tab 3: Application Tracker

One row per company: role, posting link, date applied, stage, last contact, interview date and notes. Stage is a dropdown with Wishlist, Applied, Recruiter screen, Phone screen, Onsite, Offer, Rejected and Withdrawn. Because every stage is spelled the same way, the dashboard counts stay accurate.

Application Tracker tab with six example companies, color-coded stages and On track, Overdue and Due soon follow-up statuses
The Application Tracker tab with conditional formatting on stage and follow-up status.

The follow-up date defaults to a week after your last contact:

Application Tracker: Follow-up date

=F2+7

The follow-up status compares that date to today and skips stages that are closed:

Application Tracker: Follow-up status

=IF(OR(A2="", F2="", E2="Offer", E2="Rejected", E2="Withdrawn", E2="Wishlist"), "", IF(G2<TODAY(), "Overdue", IF(G2<=TODAY()+2, "Due soon", "On track")))

Conditional formatting colors the stage and the status, so an overdue follow-up shows up in red the moment you open the tab. Change the 7 to whatever cadence suits you.

Tab 4: Dashboard

The dashboard has no inputs. It shows practice sessions, total hours, average self-rating, topics due for review, applications tracked, applications in progress and overdue follow-ups. The stage counts use COUNTIF:

Dashboard: applications per stage

=COUNTIF('Application Tracker'!E2:E200, D5)
Interview Prep Dashboard with at-a-glance totals, applications by stage, an eight-week table, and charts of practice hours per week and applications by stage
The Dashboard tab with the weekly table and two charts.

The weekly table covers eight weeks, starting from the Monday of your first practice session. Each row uses the week start date in column A. Practice hours add up the minutes for that week and divide by 60:

Dashboard: practice hours per week

=SUMIFS('Practice Log'!E2:E200, 'Practice Log'!I2:I200, A18)/60

Average self-rating uses the same week filter:

Dashboard: average self-rating per week

=AVERAGEIFS('Practice Log'!F2:F200, 'Practice Log'!I2:I200, A18)

Interviews counts interview dates that fall between that Monday and the following Sunday:

Dashboard: interviews per week

=COUNTIFS('Application Tracker'!I2:I200, ">="&A18, 'Application Tracker'!I2:I200, "<="&A18+6)

The chart of practice hours per week shows whether prep is steady or happens in bursts. It also makes it easy to spot an interview week that had little practice in the weeks before it.

A weekly routine that fits the sheet

This takes about ten minutes, a few times a week.

  • Open the Dashboard and check the topics due for review and the overdue follow-ups.
  • Practice the due topics first, then add a new topic if you have time left.
  • Log each session right after you finish, with an honest rating.
  • Update stages and last contact dates after any email or call.
  • Once a week, read the weekly table and decide where next week's hours should go.

Where to find questions to log

The log works best when the questions come from somewhere. If you need a place to find them, Dataford has a free bank of interview questions by role. Pick a few you want to drill and paste them into the topic column of the Practice Log.

Make it yours

The easiest changes are the review intervals, the follow-up cadence and the list of question types. You can also add columns for salary range, referral contact or recruiter name. The formulas are filled down to row 200, so if you need more rows, copy the last row of formulas further down. The example rows (Northwind, Fabrikam and the others) are made up, so delete them before you start and add your first three stories.

About the author

Amney Mounir

Amney Mounir

Amney Mounir is Product Growth at Meta, founder of Dataford.io (scaled from 0 to 50k users), and has 85k+ LinkedIn followers.

This is a guest post. Read about guest posts on Better Sheets.

Ads keep the free stuff free. Members browse ad-free — log in or see pricing.
Big Year 2027 calendar: the whole year on one Google Sheet

Free 2027 calendar.Plan all of 2027 on one Google Sheet, free.

Copy it to your Google Drive.

Free. No password, no card. The sheet link shows up right here.