We built a global talent pool without building a matching protocol.
Two threads go up on Hacker News the same day every month. One for companies hiring, one for people who want to be hired. Same board, same audience, same timestamp. If matching were a volume problem – not enough jobs, not enough candidates – the threads would answer each other. They don’t.
The reason isn’t buried in the data. It’s visible in the forms.
Candidates fill out the same template every time. Location. Remote or not. Willing to relocate. Technologies. Email. Every post, same fields. It’s a structured record, whether the poster realizes it or not.
Employers don’t. Company, role, a paragraph about the stack, sometimes a location, compensation if you’re lucky. Freeform. Narrative. Designed to attract, not to match.
Two sides filling out different forms, populating different fields. Line them up and the records can’t join. The only column both sides reliably populate is location and remote – which is the single thing they most disagree on. That’s not a coincidence. It’s the architecture of the failure.
This is HN data, which means it’s self-selected. Startup-heavy, senior-heavy, AI-distorted. Read the shape, not the percentages. The shape is what matters, and the shape is clean.
Last count: 322 job posts, 589 candidate posts. Plenty of supply on both sides.
About two-thirds of candidates want remote, a lot of it worldwide – “Remote: Yes (worldwide)” shows up in the template field over and over. Roughly half the jobs mention remote, and most of those are geo-fenced. US-only. EU timezone. Pacific overlap required. Must reside in Canada. Within UTC-3 to UTC+3. The word “remote” does six different things depending on which side you’re on. For candidates, it means “I can work from anywhere.” For employers, it means “you can work from anywhere within these coordinates we already decided.”
Truly worldwide remote – no location constraint, no timezone requirement, no “must be authorized to work in” – came to about twenty jobs out of three hundred. Single digits as a percentage. So the one field both sides populate is the field of maximum disagreement. The match collapses onto the fight.
Then there’s compensation. Shown on about 40% of job posts, and close to zero percent of candidate posts. The number that would clear the market fastest is the one neither side writes down. Both sides burn cycles on conversations that were never going to close on money, because neither knows the number until the final round. That’s not a discovery problem. That’s a pricing problem. A market that won’t price itself won’t clear. Compensation band is the hardest field to make required – the side that holds the information has an incentive to withhold it. Any protocol that mandates it makes the protocol harder to adopt. A version-one protocol might make it optional, to see whether parties that hide it get fewer matches.
Two more structural things.
The junior desert. Two percent of candidates have less than two years of experience. Two percent. However you feel about AI replacing entry-level work, the on-ramp has already collapsed on the supply side. Nobody’s coming up. That’s a five-year tail on a problem the industry hasn’t started discussing. And it’s what happens when the matching layer has no “seniority” column. The on-ramp disappears from the data.
Geographic diversity on the candidate side is real. India, Brazil, Indonesia, Nigeria, Ukraine – the talent is distributed. The jobs, by volume, are not. Remote was supposed to be the bridge. It’s not bridging. It’s a toll road with country-specific gates.
None of this is a hiring-is-broken complaint. Hiring isn’t broken. It was never designed.
The industry built a global talent pool. It built pipelines, sourcing tools, ATS platforms, interview frameworks. What it didn’t build was a matching protocol – a shared schema that lets the two sides find each other on anything other than geography and luck.
Think about what a protocol does. It establishes a shared vocabulary. It defines message formats both sides agree on. It separates discovery from negotiation – you find the match first, then you talk terms. DNS doesn’t ask you to describe your server in a paragraph and hope a client recognizes it. It has resource records. Type A, Type MX, Type TXT. Both sides know the fields. That makes matching deterministic – you query on shared columns, not guess at what someone meant.
Hiring has none of this. Candidates structure their data; employers don’t. The employer side’s “freeform” isn’t laziness – it’s a feature they didn’t ask for. Role descriptions don’t share a shape, and a template that captured them well enough to join on would be the protocol itself. Nobody’s built it, so both sides write prose and hope.
The matching collapses onto the one shared field, which is the field they can’t agree on. Everything else – skills, experience, pace, communication style, what kind of work energizes you – stays invisible to the matching step. It surfaces in interviews, if you get that far. But getting that far depends on the one field that doesn’t match.
This is what “shortage of shared fields” means. Not a shortage of talent. Not a shortage of roles. A shortage of columns both sides populate, so the join fails before the conversation starts.
What would a matching protocol look like?
It would have a small number of required fields both sides commit to. Not fifty. Maybe six.
Location and timezone overlap – not “remote yes/no.” A timezone range the role can accept, and a timezone range the candidate can work. Overlap is a computable boolean. You don’t need to discuss it. You query on it.
Compensation band – both sides. The employer states a range with a minimum. The candidate states an expectation. If the ranges don’t overlap, there’s no match and no conversation. Both sides save the cycle.
Work authorization – a small set of values. Citizen. Permanent resident. Visa-required. Visa-transferable. Contractor-only. This is a filter, not a conversation. It should happen before anyone writes a cover letter.
Seniority band – not years of experience, which is a proxy that drifts. A small set: learning the craft, autonomous, leads teams, leads orgs. Both sides self-classify. The match doesn’t require precision. Ballpark is enough.
Primary skill – one thing. Not a list of twelve languages. The one thing you’d put on the form if the form only had room for one. Database internals. Distributed systems. Frontend architecture. Developer tools. The match starts on the shape of the work, not the keyword density.
Work mode – async, sync, or hybrid. Not “remote” as a catch-all. Async means written-first, meetings are exceptions. Sync means real-time collaboration is the default. Different people thrive in different modes, and the mode is more structural than the location.
Six fields. Both sides fill them. Matching becomes a join on shared columns, not a search through prose.
This isn’t a product pitch. The point isn’t “someone should build this.” The point is that the absence of a protocol is the architecture underneath every complaint about hiring – the ghosting, the spray-and-pray applications, the mismatch between what the job said and what the job is. Those aren’t failures of the process. They’re symptoms of a system designed without a matching layer.
If you’re inside this mismatch right now, knowing it doesn’t fix the search. But it fixes the diagnosis.
You’re not failing a market. The market doesn’t have the fields it needs to price and clear. You’re routing around a missing layer, and that layer is a design problem – not an effort problem, not a numbers problem, not a “market is tough right now” problem. It’s a schema problem. Schema problems have solutions. The solution isn’t more applications or better outreach or another rewrite of your resume. The solution is matching on the right columns, and most of those columns don’t exist yet in the forms we fill out.
The fix isn’t a better job board or an AI screener that reads both sides’ prose more carefully. That’s the same missing layer with better optics. The fix is the protocol. The shared fields. The join that works.
The data’s been sitting in two monthly threads on HN, holding the shape of the failure, for years.