>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Go

Hoe een vacaturezoekmachine Werkt met Miljoenen Vacatures Zonder Tussenpersonen

Solliciteren bij buitenlandse of grote IT-bedrijven verandert vaak in een routine met vervelende verrassingen. Je vindt een interessante functie op een aggregator, klikt op de link, en de vacature is al een maand gesloten. Of je stuit op eindeloze kopieën van dezelfde vacature van wervingsbureaus die de uiteindelijke werkgever niet eens noemen.

freehire preview

Het freehire-project lost dit probleem op met een eenvoudige technische aanpak: het parseert gegevens rechtstreeks vanuit applicant tracking systems (ATS), waarbij tussenpersonen worden omzeild. De database bevat meer dan 3,3 miljoen actieve vacatures van bijna 300.000 bedrijven. De volledige stack is open onder de MIT-licentie, inclusief datacollectors, webinterface, zoekmachine en API.

Waar de gegevens vandaan komen

De meeste techbedrijven publiceren vacatures via gespecialiseerde services zoals Greenhouse, Lever, Workday, Ashby of iCIMS. De makers van freehire hebben adapters geschreven voor 92 van zulke platforms, en ook ongeveer honderd externe vacaturebanken en directe feeds van grote bedrijven aangesloten.

De pipeline werkt als volgt:

  1. Een worker doorzoekt vacaturebanken en leest nieuwe vacatures. Het toevoegen van een bedrijf kost meestal één regel in een YAML-bestand, met de naam en ID in het ATS.
  2. Gegevens worden genormaliseerd naar een uniform formaat. Als dezelfde vacature op meerdere platforms wordt gepubliceerd, voegt het systeem duplicaten samen met een stabiele sleutel.
  3. Filters voor functieniveaus, salarissen, locaties en tech-stack worden opgebouwd uit strikte woordenboeken. Er worden geen onbetrouwbare heuristieken gebruikt—het systeem probeert niet willekeurig gegevens te raden.
  4. Een aparte worker downloadt het daadwerkelijke sollicitatieformulier van het doel-ATS, waarbij de oorspronkelijke veldstructuur behouden blijft.

Wat er nog meer is naast de vacaturecatalogus

Zoeken is slechts de winkel. Rond de vacaturedatabase hebben ontwikkelaars een volledig uitgeruste werkruimte voor kandidaten gebouwd.

CV-generator en matchcontrole

De repository bevat een CV-builder die PDF-bestanden rendert die zijn geoptimaliseerd voor geautomatiseerde ATS-parsing. Het systeem vergelijkt functievereisten met je ervaring en berekent deterministische compatibiliteitsscoring. Wanneer verbonden met een taalmodel, biedt het gerichte CV-aanpassingen voor specifieke sollicitaties zonder ervaring te fabriceren.

Response-tracker met inkomende mail

Na het indienen van een sollicitatie wordt de tracking voortgezet op een Kanban-bord met statusupdates. Een geïntegreerde e-mailgateway verbindt recruiterreacties met specifieke sollicitatiekaarten, waardoor correspondentie georganiseerd blijft in plaats van verloren te gaan in een algemeen postvak.

Assistent en browserextensie

Er is een Chrome-sidebar-extensie ontwikkeld. Wanneer je een vacaturepagina opent op een willekeurige site, leest de plugin de paginatekst, vergelijkt deze met je profiel en vult het sollicitatieformulier voor je in. Voor wie liever werkt via LLM-clients zoals Claude Desktop, stellen de auteurs een aparte MCP-server beschikbaar.

Architectuur en tech stack

De codebase is geschreven in Go met het Fiber v2 webframework. Architecturally is de backend duidelijk gescheiden: de API-server verwerkt uitsluitend clientverzoeken, terwijl alle achtergrondwerk naar aparte one-off workers is verplaatst. Deze zijn handig te draaien via cron of binnen queues.

Voor opslag en snel zoeken wordt een combinatie van componenten gebruikt:

  • PostgreSQL met de pgvector-extensie slaat hoofdentiteiten en vector-embeddings op voor semantisch zoeken.
  • sqlc genereert type-safe code voor het werken met de database vanuit pure SQL-queries—er wordt geen ORM gebruikt.
  • Meilisearch verzorgt full-text zoeken en directe gefilterde navigatie.
  • SvelteKit 2 (op Svelte 5 runes) en Tailwind 4 vormen de snelle SSR-frontend.
  • Redis en MinIO verzorgen caching, rate limiting en objectopslag voor bestanden.

Snelle start en werken met de API

Je kunt een lokale kopie van de service draaien samen met alle afhankelijkheden via Docker:

De opdracht start de database, zoekmachine, API en webinterface op poort 80.80. Je kunt de beschikbaarheid controleren met een eenvoudig curl-verzoek:

Trouwens, de openbare API van het project is beschikbaar zonder keys of autorisatie. Als je toegang nodig hebt tot actuele vacatures voor je bot of side project, kun je gewoon het eindpunt https://freehire.me/api/v1/jobs aanspreken. Alle responses worden geretourneerd in voorspelbaar JSON-formaat met gestructureerde metadata en paginering.

Om datacollectors te draaien worden console-commando's in cmd/ gebruikt:

Voor wie is dit project

De repository is nuttig in drie gevallen:

  1. Je zoekt een baan bij internationale bedrijven en bent uitgekeken op kwalitatief slechte aggregators. De webversie geeft directe links naar werkgever-ATS-systemen zonder opdringerige tussenpersonen.
  2. Je wilt je eigen aggregator, Telegram-kanaal met vacatures of bot bouwen. De open adapters naar 92 ATS-systemen besparen honderden uren aan het schrijven van parsers.
  3. Je bent geïnteresseerd in een voorbeeld van een volwassen Go-project zonder overladen ORMs, met strikte SQL-typing, scheiding in onafhankelijke workers en integratie met een moderne zoekmachine.

Het project oogt volwassen, en de openheid geeft elke ontwikkelaar de mogelijkheid om een pull request in te dienen met een nieuw bedrijf in één YAML-regel. Je kunt de service live uitproberen op de projectwebsite of door containers te deployen op je eigen server.

Gerelateerde projecten