Discovery
Common Crawl’s index finds new company boards.
live · visaproof.azamatos.com
Developer jobs in Europe, with the visa answer first, and the evidence for every answer.


Live from the site’s own data, for the EU, EEA, UK and Switzerland; checked 27 Oct.
A developer who needs a visa opens fifty postings and searches each one for “visa”. Most never say.
Only 22% of open roles mention visas, relocation, permits or the right to work at all. About 2.4 in 100 clearly offer sponsorship, and 4.7 in 100 refuse it. So for most roles the answer can’t come from the posting: it has to come from the law and the sponsor registers.
Read every company’s own job board, keep the engineering roles in Europe, and check each one against the law.
Ashby, Greenhouse, Lever, SmartRecruiters, Personio, Recruitee, Workable, Workday. One request per board where the API allows.
Keeps software roles in the EU, EEA, UK and Switzerland; marks each new, changed or closed.
Every fact stored with its quote or register entry, and when it was checked.
Search with the visa answer first, job, company and country pages, the method and its accuracy.
Common Crawl’s index finds new company boards.
The Dutch IND (13,016 sponsors) and the UK register (122,355).
Reads postings that mention visas and returns facts with exact quotes.
Yes or no isn’t honest. The visa answer has five levels, and each shows where it came from.

Keyword rules were wrong on 67% of the postings they marked “offers”. So they never show an answer; a language model does, checked against 200 postings labelled by hand.
The first full sweep, on 22 October 2026, read every board Common Crawl knew.
Case-insensitive slugs and boards served on two domains held 1,050 duplicate roles. One migration merged them.
All 403 of them: the EU API host doesn’t exist. The main API serves them.
Each Recruitee company has its own subdomain, so requests now queue per site, not per host.
Workable lists a job once per location under one id. Now it’s one posting with all its locations.
✓ after the fixes, 8 of 2,915 boards failed in the next run, all on the boards’ side
Pages render on the server, and the filters are a plain form, so the search lives in the URL. Own components, with Reka UI for the hard widgets like the phone filter drawer.
The site reads Postgres as a read-only user on the same server; answers are cached for 5 minutes, because the data changes every 6 hours at most.
Node runs the TypeScript directly, with no build step. Claude reads the postings that mention visas and must quote them exactly.
On my own server: a missed run starts at boot, and a broken run sends a message.
Precision has to stay at 95% or more on “offers” before a prompt or model change ships.