
Disclaimer: All examples in this paper describe generalized patterns observed across large organizations and hypothetical constructs for illustration. They are not descriptions of any specific company’s internal data, policies, or systems. The views expressed are solely my own and do not represent the views of my employer.
Public discourse around the “brutal” job market in large tech and knowledge-work firms tends to focus on three explanations: slowing labor demand (sometimes attributed to AI), fake or compliance-only job postings, and opaque applicant tracking systems that filter out candidates at scale. While each plays a role, they miss a deeper structural mechanism inside firms: lateral vacancy chains in closed internal labor markets.
Classical vacancy-chain theory describes how a single vacancy can generate a chain of promotions and transfers inside an organization before it is ultimately filled by an external hire or eliminated. But many modern firms impose strict policies against level-up transfers and tightly control promotion slots. In these environments, vacancies frequently propagate via same-level internal transfers only, with no promotion at any step. From the outside, each hop appears as a distinct job posting; from the inside, these hops are just one long chain of seat reoccupancy.
In this paper we:
Central claim
In many large firms, the key bottleneck for job seekers is not a lack of roles, but a shortage of entry points into a closed, same-level internal labor market.
Over the past few years, candidates have reported applying to hundreds of roles at brand-name firms with little to no response, despite public job boards showing thousands of openings. The mainstream narrative attributes this to:
While each factor matters, they don’t fully explain the everyday experience:
This paper argues that a large, mostly invisible piece of the puzzle is how vacancies propagate inside the firm once they exist. Specifically:
A closed, same-level internal labor market where a budgeted seat is continuously reoccupied by the same-rank employee, but the job moves across the org while the underlying seat remains active.
From the outside, this looks like many discrete openings. From the inside, it is one budgeted seat whose ownership and incumbent have changed a dozen times.
Understanding this structure is critical for:
Vacancy chains were formalized by White (1970) and reviewed by Chase (1991). A vacancy chain is the sequence of moves triggered by a single opening:
A defining property of a vacancy chain is its length—the number of successive re-postings of the original opening. Longer chains create more internal mobility and greater cumulative disruption.
Later work extended this model to civil-service hierarchies, academic institutions, and sector-wide labor markets. Most studies focus on promotion chains: vacancies at higher levels propagate downward as upward promotions cascade through the hierarchy.
Large firms often function as internal labor markets (ILMs): once hired, workers experience most mobility via internal moves and promotions rather than through external job changes. These markets are characterized by:
Recent worker-flow research shows how ILMs shape wage growth and career paths, and highlights that many firms display high gross turnover but little net employment change—most hiring is replacement hiring, not growth. Replacement hiring naturally generates vacancy chains; microdata confirms that chains are a central feature of establishment dynamics.
However, the policy environment has shifted since much of the classic vacancy-chain literature: many modern firms constrain promotions tightly while permitting lateral transfers relatively freely. This creates a distinct variant of vacancy chains that the literature barely touches.
In many large tech and finance firms, internal mobility policies frequently include rules such as:
The consequence is that most backfills are level-locked. A departing L4 engineer is replaced by another L4; any promotion to L5 is handled separately, often on a quarterly or annual cycle.
This leads to a distinct structure:
Lateral vacancy chain: a vacancy chain in which every internal move is a same-level transfer, governed by level-lock policies; promotions do not occur within the chain itself.
Instead of a vertical ladder, the chain snakes horizontally across teams, products, or sub-orgs.
Inside such a firm, headcount is usually represented as budgeted seats: durable units of capacity tied to budget and level.
We define:
Crucially:
From a seat-centric perspective, we see:
A single budgeted seat being continuously reoccupied by same-rank employees, while the job location (team, project, sometimes manager) moves across the org.
Viewed through job postings, this appears as many distinct openings over time. Viewed through seat keys, it is a single, long-running vacancy chain.
This lateral, level-locked behavior differs from classic vacancy chains in three important ways:
This pattern is not explicitly addressed in existing vacancy-chain work, which is why it does not appear in current job-market discourse despite being structurally important.
Most workforce analytics follow people—tracking promotions, transfers, performance, and tenure. To understand lateral vacancy chains, we instead track seats.
We restate the definitions:
A simplified lineage might look like this:
A naïve per-posting viewpoint would see three “open roles” filled promptly. Seat lineage reveals one budgeted position whose underlying business need has migrated across the org for years.
In level-locked environments, managers often negotiate headcount trades: _ Manager X gives up one L4 seat to Manager Y in exchange for future consideration or a different seat. _ The seat key persists, but its cost center, team, and sometimes job description change.
To a job seeker: _ Each handoff looks like a fresh opening in a new team. _ Several of those postings may be filled by internal candidates already identified via networking before the job ever hits external boards.
To the firm: _ Backfill KPIs look excellent: each vacancy is filled quickly, mostly from strong internal candidates. _ The true chain length—how many moves originated from the initial departure—remains opaque unless someone reconstructs seat lineages.
Practitioners who track seat-level histories often find keys that have cycled through many incumbents across multiple teams over a relatively short period. That is the empirical signature of long lateral vacancy chains.
Most organizations track per-posting metrics such as: _ time-to-fill, _ offer-accept rate, _ internal vs external hire mix, _ internal transfer rates.
These metrics are usually local to each requisition. In the presence of lateral vacancy chains, they become systematically misleading.
Per posting, a lateral backfill might be filled in 30-45 days. These numbers look healthy on dashboards. But if that opening kicked off a chain of 10 internal moves before an external candidate finally entered, the total elapsed time between the original departure and the final external hire might be 12-18 months. The more relevant question for leaders is:
How long does it take to restore the organization to a steady staffing state after a departure?
That is a chain-level metric, not a posting-level one.
From HR’s point of view, high internal mobility rates and high internal fill rates look positive: _ internal candidates perform better and ramp faster, _ internal transfers improve retention and engagement.
At the macro level, however, research shows that replacement hiring (filling quits) dominates firm-level dynamics and is responsible for much of observed hiring volume. In a lateral-chain regime: _ internal moves dominate mid-chain events, _ external hiring becomes concentrated at a few terminal roles.
Standard KPIs will celebrate internal fill rates while obscuring how few external entry points exist at any given time.
Job seekers see hundreds or thousands of postings on a company’s careers site.
A significant fraction of those postings are: _ compliance-driven for internal moves, _ mid-chain roles intended for strong internal candidates, * or postings that will be closed once an ongoing internal shuffle settles.
If a long lateral chain is in motion, dozens of postings may appear and disappear, yet only one or two of them ever had serious external consideration. From the applicant’s perspective this feels like:
“I applied to 500 jobs and never got a call back.”
Seat-centric analysis often reveals a different story: _ Many postings map back to a small set of seats, _ Only a small subset of chains ever invite external candidates at all.
The mismatch between posting counts and entry-point counts is a core illusion this paper highlights.
These dynamics create a labor market that behaves more like an exclusive club than an open marketplace.
Outside the club: _ Long line, heavy screening, high rejection. _ Very few doors actually open to first-time entrants.
Inside the club: _ Lateral moves are common and often informal. _ You choose when to leave. * You are insulated from the most brutal aspects of the external market.
In this framing:
The hard part is not “getting a job” in the abstract; the hard part is crossing the border into the internal labor market of a high-prestige firm.
Once inside, lateral vacancy chains are largely internal games of musical chairs among members, governed by: _ networking, _ performance signals, _ manager reputation, _ and local politics.
Candidates outside understandably misattribute their difficulty to AI or pure randomness because they cannot see that: * many postings they apply to are simply nodes in a lateral vacancy chain already dominated by insiders.
To reason about this more formally, we can adapt classical models.
Consider each vacancy as a state in a simple Markov process. At each step, the firm chooses: _ with probability : fill internally (same level) → new vacancy in the originator’s prior seat, _ with probability : eliminate the seat (budget cut / restructure), * with probability : fill externally (chain terminates).
In a pure lateral regime: _ internal fills are level-locked, _ promotions are handled elsewhere and do not appear in this chain.
The expected chain length (number of moves until termination) under this model is:
The intuition: when internal fills are rare (low ), chains terminate quickly. When internal fills dominate (high ), chains stretch on. At , the expected chain length is 10 moves. This aligns with practitioner accounts of seat keys cycling through 10-20+ incumbents over a few years.
Existing Markov models of manpower planning focus on transitions between levels and roles. Here, the emphasis is on transitions between seats under level-lock, with promotions explicitly excluded from the chain.
From the outside, each node above might correspond to a distinct job posting. Internally, they are successive states of the same seat.
A basic simulation can clarify how policy choices affect chain lengths and external entry points. The following pseudocode-like Python example shows a simple Monte Carlo simulation of chain lengths under parameters , , and .
# Copyright 2025 Google LLC
# SPDX-License-Identifier: Apache-2.0
# Simplified illustrative example of lateral vacancy-chain simulation.
import random
from statistics import mean
def simulate_chain(p_internal: float, q_eliminate: float) -> tuple[int, int]:
"""Simulate a single lateral vacancy chain.
Returns (length, total_days) where:
- length: number of moves until external hire or elimination
- total_days: cumulative time-to-fill across all moves
"""
r_external = 1.0 - p_internal - q_eliminate
assert 0 <= r_external <= 1, "Probabilities must sum to 1 or less"
length = 0
total_days = 0
while True:
length += 1
# Each posting takes 30-60 days to fill (looks great on per-posting KPIs)
total_days += random.randint(30, 60)
choice = random.random()
if choice < p_internal:
# internal fill, chain continues
continue
elif choice < p_internal + q_eliminate:
# seat eliminated, chain ends
return length, total_days
else:
# external hire, chain ends
return length, total_days
def estimate_chain_metrics(p_internal: float, q_eliminate: float, trials: int = 10000):
results = [simulate_chain(p_internal, q_eliminate) for _ in range(trials)]
lengths = [r[0] for r in results]
days = [r[1] for r in results]
return mean(lengths), mean(days)
if __name__ == "__main__":
# Example: 70% internal fills, 10% eliminations, 20% external entries.
avg_length, avg_days = estimate_chain_metrics(p_internal=0.7, q_eliminate=0.1)
print(f"Mean chain length: {avg_length:.2f} moves")
print(f"Mean time to true resolution: {avg_days:.0f} days")
print(f"(Per-posting KPI would show: 30-60 days)")
Running this simulation yields representative output such as:
$ python3 sim_chain.py
Mean chain length: 3.33 moves
Mean time to true resolution: 150 days
(Per-posting KPI would show: 30-60 days)
This toy model can be extended to include team-specific transition probabilities, level-dependent behavior, and policies governing when external candidates are permitted to enter a chain.
To quantify lateral chains, organizations need: 1. Stable seat keys that persist across incumbents and team moves. 2. Event logs of: _ seat creation / deletion, _ changes in reporting line or team ownership, * incumbency (who, when they start/end). 3. Linkage between job postings and seat keys, so requisitions can be mapped back to underlying headcount.
Many HRIS/ATS systems already store data in this form but rarely expose it in a way that emphasizes seat lineage.
Once seat lineages are reconstructable, organizations can compute: _ Chain length per seat - number of internal moves between external hires (or between creation and elimination). _ Chain resolution time - elapsed time between initial departure and final external hire or elimination. _ External entry-point rate - number of external hires per active seat per year. _ Internal-to-external ratio by job family and level - to detect where ILMs are most closed.
These metrics can be compared against traditional KPIs to highlight discrepancies. For example: * A team with great time-to-fill per posting but extremely long chain resolution times is likely pushing vacancies around rather than truly resolving them.
Importantly, analyses can be done internally and published in aggregate: _ No need to expose individual HR records. _ No need to name specific teams or managers. * Seat lineages can be anonymized or compressed into summary statistics.
For an external-facing version, organizations can share: _ synthetic or simulated examples calibrated to real distributions, _ anonymized chain metrics at the org or job-family level.
Vacancy chains have been part of organizational sociology for decades, but the lateral, policy-constrained variant emerging in large modern firms changes the experience of both insiders and outsiders: _ For insiders, lateral vacancy chains create a dense graph of possible moves at the same level—a club you navigate once you’re in. _ For outsiders, they compress the number of genuine entry points and make the job market feel arbitrarily hostile and random.
By shifting perspective from people to seats, and from postings to chains, we can see that:
The brutal feeling of the current job market is not only about fewer jobs; it is also about the structure of internal labor markets that heavily favor insiders through lateral vacancy chains.
This paper has introduced the concept of lateral vacancy chains, defined seat keys and seat lineage, sketched a formal model, and proposed practical metrics. The framework provides a foundation for understanding and measuring a hidden but critical dynamic shaping access to opportunity in modern labor markets. The next steps are empirical: reconstruct seat lineages in willing organizations, calibrate simulations, and publish anonymized results to bring structure to a conversation currently dominated by anecdote and frustration.
White, H. C. (1970). Chains of opportunity: System models of mobility in organizations. Harvard University Press.
Chase, I. D. (1991). Vacancy chains. Annual Review of Sociology, 17(1), 133-154.
This post is also available on Medium.