Hiring Obstacles & Barriers Atlas
You applied. Silence followed — here is why the hiring funnel breaks
hoba is an open, versioned atlas of 96 entries mapping the causal mechanisms, barriers, and hidden structural dynamics behind tech hiring.
H → O → B → A: obs.republished_job_posting_with_refreshed_date_and_identical_requirement_body → bar.outbound_sourcing_talent_pool_contact → mech.speculative_sourcing_talent_pooling_without_opening
Republished job posting with refreshed date and identical requirement body
Outbound Sourcing & Talent Pool Contact
Speculative Sourcing / Talent Pooling Without Opening
- Entries
- 96Formal ontology nodes
- Funnel barriers
- 16Sequenced funnel stages
- Mechanisms
- 28Verified causal mechanisms
- Named double binds
- 4Formal Lean 4 kernel proofs
Atlas Engine Suite
Four Ways to Explore the System
Runs locally in your browser with zero telemetry or data extraction.
Situation Analyzer
Input your witnessed observations and derive compatible root causes without speculative self-blame.
Conformance Check
Audit posting hard requirements against your verified profile before investing preparation time.
Pipeline State Machine
Step through sequenced pipeline state machines and verify where stage turnaround exceeds normal limits.
Knowledge Graph
Explore 96 cross-referenced entities, stratified tiers, Tarjan cycles, and agency zone distributions.
The problem it exists for
Nobody inside the process can see all of it
Nothing in the process is built to tell you which of them it was. Nobody inside it sees the whole of it — the recruiter cannot see how the panel scored you, the panel cannot see whether the budget still exists — so what reaches you is short, standardised and late. People fill that gap with the one explanation always available: that the problem was them. Often the arithmetic was settled before anyone read anything.
- 01
Separates what you saw from what it means
Every observation is recorded with what it can establish and, separately, what it cannot. A rejection at two in the morning establishes that a decision was recorded. It establishes nothing about your work.
- 02
Names every cause that fits, and never picks one
For each observation the registry lists the mechanisms compatible with it — 18 of them, for the most common rejection template. It does not assert which one fired, because from outside the system that cannot be known, and pretending otherwise is how the guessing starts.
- 03
Says who could change it, and what it would cost them
Each barrier the registry can name carries matching interventions — who would have to act, from employer policy to the ATS vendor's defaults to the candidate's own next move, and what that action is rated to cost: low, medium, or high. 24 are catalogued so far. Naming who could act is not the same as expecting them to.
One observation, several causes
This email is what most candidates are left with
It is also the least informative. Here is what the atlas does with it.
Subject:Update on your application
Thank you for your interest in our company and for the time you invested in the process.
After careful consideration we have decided to move forward with candidates whose profiles more closely align with the requirements of the role.
We wish you the best in your search and encourage you to apply for future openings.
What to notice: Nothing in the text is specific to this candidate, this conversation or this role. The message is a routing decision rendered as prose.
What it establishes
That a decision was recorded and sent out as a template, on a date you can point to. Nothing more.
🛡️What this observation does NOT establish2
- Does not establish which specific skill was deemed insufficient.
- Does not establish whether a human reviewer read the full resume.
What could be behind it
4Every mechanism below can produce this exact message. The registry does not tell you which one it was — only which ones are compatible, and which of those you can test.
- The ATS is configured to reject in bulk every application still pending after 45 or 60 days.mech.automated_application_expiration_timeoutAutomated Application Expiration TimeoutExogenous (no agency)
- Deterministic filter rejecting applications missing exact acronyms, certifications, or specific years-of-experience thresholds.mech.automated_keyword_qualification_filterAutomated Keyword / Qualification FilterCandidate action
- An engineer already employed and between projects becomes available mid-search, and the seat the external candidate is interviewing for is filled from the bench.mech.bench_priority_fillBench-Priority FillExogenous (no agency)
- During a collaborative interview exercise the candidate is abrasive in tone, defensive about critique, or not listening.mech.communication_or_working_style_frictionCommunication or Working Style FrictionCandidate action
This is why the registry sorts by agency zone. Some of these you can probe in one message; some depend on an intermediary; some are budget decisions taken above the hiring process.
Open this observation →Named patterns
Some traps are structural, and worth a name
When two defensible decisions combine into a bind nobody chose, it can only be discussed once it has a name.
Closed-Then-Reposted Requisition Motif
A candidate completes multiple late-stage interviews, is rejected with a generic message, and sees the identical role reposted weeks later.
Compensation Double Bind
The candidate has to name a compensation expectation first: a high number ends the process, and a low one lowers the level the candidate is assessed at.
Experience-Age Impossibility
A requisition requires more years of hands-on experience with a specific framework or tool than that technology has existed in the open-source ecosystem.
Seniority Double Bind
The same candidate is rejected as overqualified for junior and mid-level roles and as underqualified, or not specialised enough, for staff and leadership roles.
Machine-readable, all of it
Every entry on this site is a validated file in a public repository, served as static JSON, GraphML and CSV, and available to agents over MCP.