River
Y CombinatorBacked by Y Combinator
FREE TEMPLATE

Promotion Criteria Framework Template

Three documents and three sheets that flag who has run past normal time-in-level, then check each name against open cases and ratings before calling anyone overlooked.

Free download  ·  No account needed

This pack computes how long each person has spent at their current level against the median for that level specifically, never a single cutoff for the whole org, and flags anyone at or above one and a half times it. In the worked example, a 22-person engineering org at Marloe Logistics splits into three levels with medians of 15, 21.5 and 27 months. Five people sit at or past 1.5 times their level's own median: two at L3, two at L4, one at L5.

A tenure flag is not the finding. Each of the five gets checked against the Promotion Case Tracker and their most recent rating. One is already in an active case, so counting them again would double the number for no reason. What is left, four people rated Meets or better with no case on file, is the actual overlooked list: 18.2 percent of the org, sitting well past the norm for their level, that nobody has put forward.

Cornell research found that employees nominated for a top rating but denied it were at least 34 percent more likely to leave voluntarily. The denial came from a forced quota, where no more than one in five could be rated exceptional (Cornell Chronicle). A promotion case that never gets built is a similar kind of overlooked. Calibration catches a rating that cannot be trusted; this catches a good rating that never turned into a case.

Five flagged by tenure. Four actually overlooked

The gap between the two numbers is the point. Marcus Oyelaran is flagged by tenure and already has a case in committee, so counting him as overlooked would be wrong in the other direction.

Time-in-level Analysis

Illustrative example. Marloe Logistics, fictional warehouse software company, 22-person engineering org, L3 to L5.

LevelPopulationMedian months at levelFlag threshold (1.5x median)Flagged
L3 Engineer91522.526mo, 31mo
L4 Senior Engineer821.532.2533mo, 38mo
L5 Staff Engineer52740.541mo

The median and the threshold are computed per level. A single org-wide cutoff would flag mostly senior people, since normal tenure at L5 is already longer than the L3 threshold.

Level Register

The 5 flagged rows from a 22-row register, each with rating and case status.

NameLevelMonths at levelMost recent ratingCase on file?
Marcus OyelaranL326MeetsYes, in committee
Priya SundaramL331ExceedsNo
Ilse NovakL433MeetsNo
Devon AchebeL438ExceedsNo
Tomas ReykL541MeetsNo

Marcus Oyelaran is flagged by tenure but already has a case moving, so he is excluded from the overlooked count. The other four are not.

Promotion Case Tracker

What is actually in flight, and what the register shows has never been opened.

NameProposed moveStatusNote
Marcus OyelaranL3 to L4In committee reviewOpened 2026-02-02
Priya SundaramL3 to L4No case on fileOverlooked: 31mo at L3, Exceeds
Ilse NovakL4 to L5No case on fileOverlooked: 33mo at L4, Meets
Devon AchebeL4 to L5No case on fileOverlooked: 38mo at L4, Exceeds
Tomas ReykL5 to Staff+No case on fileOverlooked: 41mo at L5, Meets

4 of 22 people, 18.2 percent of the org, rated Meets or better with no case ever opened. That is the number the committee sees, not a raw tenure list.

What is in the pack

01

Time-in-level Analysis

Median and flag threshold computed per level, not org-wide, so a senior person's longer normal tenure does not get treated the same as a junior person's.

02

Level Register

One row per person with level, months at that level, most recent rating and whether a case is on file, so a flag can be checked rather than taken on faith.

03

Promotion Case Tracker

Every case in flight, so someone already being considered is never counted as overlooked a second time, and every closed decision stays on record.

04

Level Definitions

What each level actually means in evidence terms, stated as things a committee member with no prior context could evaluate, not adjectives about readiness.

05

Promotion Case Format

A write-up format citing scope evidence from a measured goal where one exists, and stating the gap plainly rather than curating the evidence to look complete.

06

Committee Guidance

Directs the committee to review the overlooked list alongside submitted cases, so who was never put forward is visible next to who was rejected.

07

One rule every prompt reads first

Time-in-level flags who to look at, never who to promote, and a Below rating is a different conversation from an overlooked one even at the same tenure.

How it works

  1. 1

    Send the levelling framework and role data

    Everyone's level, their date of last promotion or hire at that level, and their most recent rating.

  2. 2

    Get the Time-in-level Analysis

    Median and flag threshold computed separately per level, with everyone at or above 1.5 times it named.

  3. 3

    See who is actually overlooked

    Each flagged person checked against open cases and ratings, so the count reflects people nobody has put forward, not everyone with long tenure.

  4. 4

    Build and track the cases

    A case format for the committee, and a tracker that keeps this cycle's decisions from being lost by next cycle's register.

Frequently asked questions

Why compute the median separately for each level?

Because normal tenure is not the same at every level. In the worked example the L5 median is 27 months against 15 for L3, so a single org-wide cutoff would flag mostly senior staff and miss junior people running past their own level's norm.

Does being flagged mean someone should be promoted?

No. It means their case should be looked at. One of the five flagged people in the worked example already has an active case, and a flagged person with a Below rating is a performance conversation, not a promotion one. The framework treats both as distinct from being overlooked.

What if a flagged person's rating does not support a case yet?

Then they stay flagged for tenure without being added to the overlooked list, and the Level Register keeps the reason visible. The point is not to promote on tenure; it is to stop a real case from going unbuilt for no better reason than nobody looked.

How is this different from a levelling matrix we already have?

A levelling matrix defines what each level means, similar to the required-level bar a skills matrix sets per skill. Neither has visibility into who has been sitting past normal tenure with nothing moving. That takes joining the register against a cycle's worth of case history and the ratings a performance cycle produces, which a static matrix does not hold.

Why does the overlooked list matter for retention?

Because it is exactly the group at risk. Research on a forced rating quota found employees nominated for a top rating but denied it were at least 34 percent more likely to leave voluntarily (Cornell Chronicle). The four names on this list are rated Meets or better, not underperformers.

How does this connect to calibration?

Calibration checks whether a rating names something checkable. This pack assumes the rating is sound and asks a different question: once someone has a good rating, did it ever turn into a case, or did tenure just keep passing.

Find out who your promotion cycle has been passing over

Send your levelling framework and current role and tenure data. The first thing back is the Time-in-level Analysis, cross-checked against open cases and ratings, so the overlooked list names actual people rather than a raw tenure ranking.

Find who's overlooked