The internal candidate your systems can't see
Rigid taxonomies hide adjacency. A graph makes the next move computable, with an evidence trail and a human approving it
A commercial underwriting seat opens at an insurance carrier. The strongest candidate has worked there for six years. She sits in claims, two buildings over, and she spends her days doing much of what the open role requires: reading policy language for coverage and negotiating settlements with people who have every reason to push back. The recruiter on the requisition has never heard her name. The search goes external, takes a quarter, and ends with the company paying to onboard a capability it already employs. She learns the seat existed when the welcome announcement lands in her inbox. A year later she interviews somewhere else, and the exit survey records no growth path.
When a move like hers does happen, the mechanism is almost always social. Two managers share a project, one mentions an opening, a name comes up over coffee. The company calls this a mobility program. It is hallway luck with a posting board attached.
I have heard versions of this story in enterprise conversations for as long as we have been having them. Senior people leaders at the largest companies describe internal mobility the same way every time: a commitment on paper they cannot reach in practice. Ask why internal mobility fails at their scale and the answer is rarely culture or budget. The answer is data.
The diagnosis fits in one paragraph, because the lament is commodity by now; Gloat, Eightfold, and Fuel50 have each written it well. Silo walls are data walls. Every system that watches an employee work holds a fragment of what she can do, and none of them share it. The skills taxonomy meant to bridge them is a static list, maintained by self-report and review cycles. It has no adjacency view, no way to ask which open roles sit one demonstrated step away from a given person. It has no minimum-required-skills view, no way to ask what a role demands on day one as opposed to what its description accumulated across a decade of aspirational edits. That is the whole diagnosis. The work is in what comes after it.
Nobody is a 100% match for the adjacent role
Adjacency means gap. An employee who matches an open role completely is not making a move; she is doing her current job under a different cost center. Every move worth making, the kind that grows a person while filling a seat, is a move into a role the person does not fully match yet.
Rigid taxonomies treat the gap as disqualification. A required-skills list rejects the internal candidate who demonstrates most of it, and it cannot ask the only question that matters: are the missing skills load-bearing on day one, or learnable in the seat? The list has no concept of that question. A checklist has two outputs.
We have measured what checklist logic costs at the external gate. At a Fortune 500 insurance carrier, the industry-experience filter alone removed 80% of eventual top performers from the pipeline, and the cumulative screening funnel removed 98%. Internal postings run on the same logic, with one difference: for the internal candidate, the company already holds years of evidence that would overturn the rejection. The checklist cannot read it.
Computing one adjacency
So compute it. Here is what that looks like for the role-pair this piece opened with, claims specialist to commercial underwriter, on a context graph built across the company's systems.
Start at the role. The graph holds everyone who has sat in that underwriting seat as time-stamped edges into the systems where their work left a record. Walk those careers backward and a pattern separates from the job description: what did strong performers carry on day one, and what did they build in their first two quarters? Pricing judgment keeps showing up in the day-one set. Fluency with the book-management tooling lands in the learned set. That separation is the minimum-required-skills view, derived from observed careers.
Then walk from the person. The claims specialist's node carries six years of edges: coverage determinations in the claims platform, settlement negotiations in the call records, escalations she took and resolved, reserve estimates sitting next to what the claims closed at. Each edge is typed, time-stamped, and names its source system. Nothing here requires her to have filled out a skills profile.
Now overlap the two. Her record covers the day-one set except portfolio pricing. Walk the histories of people who made similar moves and portfolio pricing sits in the learned set, built in the seat by movers who arrived with the judgment she has already shown. The distance between her and the seat is small, and the graph can state what it consists of.
What surfaces is a recommendation with its derivation attached: these determinations, these transcripts, these incumbent trajectories, every hop carrying its source and timestamp, logged as a queryable Decision Trace. A bare match percentage cannot be defended to the manager being asked to release her, or to the leader being asked to bet a book of business on a profile from the wrong department. The evidence is what moves the room.
None of this waits for her to apply. A posting board serves the employee who already knows the seat exists and already believes she qualifies, which the 100% match logic has taught her to doubt. The agents reason over the graph continuously and arrive with the match she would never have nominated herself for.
The taxonomy has to move
A skills profile describes the company as it stood at the last cycle. People keep working after the form is filed. The specialist who spent two quarters on complex commercial losses is a different candidate in June than her January profile claims, and a system that cannot see the difference keeps recommending from a company that no longer exists. The graph updates as the operational systems update, because edges are stamped as the work happens, and an adjacency computed in June runs on June's company.
The labels themselves deserve suspicion too. From four years of applicant data at the same carrier, we parsed 8,181 unique skills and measured the 3,597 testable ones against post-hire production. After Bonferroni correction, zero predicted sustained performance. A skill written as a label is weak material. What a person demonstrably did, and what happened afterward, is the strong material. Assemble a taxonomy from labels, refresh it annually, and you have the weakest material on the slowest cycle. A taxonomy derived from observed work is the only kind that holds the weight of an adjacency computation.
A person approves every move
All of it is proposal machinery, and the boundary around it does not move: the graph proposes, a person decides. No employee is auto-placed by an algorithm, ever. A mobility product that routes people without their managers' judgment was designed by someone who never watched a transfer go wrong.
What the agent delivers is a drafted workflow: the match, the evidence trail, the internal posting, the outreach, with the cost of action and the cost of inaction attached. It goes to the people who own the decision. The receiving leader can approve, edit, or decline it. The current manager gets the case instead of a fait accompli. The employee can say no, and her no ends it. Regulated workflows take a second signer before anything executes.
The boundary is there because a move is high-stakes on both ends. It changes a person's livelihood and a team's capacity in the same stroke, and the people closest to it hold context no graph will ingest: the family situation that makes this the wrong quarter, the team dynamic the HRIS has no field for. The system's job is to make the invisible candidate visible and the case for her inspectable. The judgment stays with the people who carry the consequences.
The move was always computable
Adjacency is computable because the graph exists. The structure underneath it, what becomes a node, what becomes an edge, why every hop carries provenance, is laid out in what is a context graph. The planning version of the argument, what pattern-level thinking does to a headcount model, is in the workforce-plan piece. The operational version is on the use cases page: a mobility move is one of the sixteen decisions the system surfaces, carrying the same trail and the same human approval as a hire or a retention play.
The graph underneath runs in production. At a Fortune 500 insurance carrier it spans four years of data covering 10,765 agents, with 850,000+ applicants scored over the same period, and the methodology behind the trail is published on arXiv: Decision Traces.
The claims specialist from the opening was never hard to see. The systems that watched her work for six years recorded everything an adjacency computation needs; they were never connected, so the company searched outside for what it already had. Hallways will keep producing the occasional lucky move. The graph makes the rest computable, and a person says yes to each one.
Saad Bin Shafiq is the founder of Nodes. Anchor pilot: Fortune 500 insurance carrier, four years of production data, 10,765 agents. Methodology: Decision Traces.