strelov1/freehire

freehire — the open-source search engine for job seekers

freehire – Open‑source job‑search & application platform

What it is

  • A self‑hostable service that aggregates >3.3 million live IT job postings directly from company ATSs (Workday, Greenhouse, Lever, etc.) and job boards, deduplicates them into a single schema, and exposes a faceted search API.
  • Built‑in AI‑powered features: semantic job embeddings, deterministic CV‑to‑job scoring, LLM‑driven fit analysis, automated CV tailoring, and an in‑app assistant that can browse, answer questions, rehearse interviews, and even fill application forms via a Chrome side‑panel.

Key capabilities

Area What you get
Find Full‑text + facet search (region, work mode, seniority, skills, salary). Curated dictionaries guarantee reliable tags. Saved searches with email/Telegram digests, shared boards, market analytics, and a “ghost‑job” reality signal.
Apply Structured CV editor with ATS‑safe PDF templates, deterministic CV↔vacancy score, optional LLM fit analysis, automatic form‑filling, tracer links, and referral handling.
Track Personal application board, mail‑inbox linking recruiter replies to the right application, append‑only event ledger, reminders.
Ask In‑process AI assistant (chat, browse, profile, CV tailoring, interview rehearsal) that runs without exposing API keys.
Extend Public keyless HTTP API, Go CLI, MCP server for Claude Desktop/Code, browser extension, ChatGPT Actions.

Architecture at a glance

  • Backend: Go + Fiber HTTP server, PostgreSQL with pgvector for semantic vectors, Meilisearch for fast faceted search, Redis for rate‑limiting & realtime fan‑out, S3‑compatible storage for CV assets.
  • AI layer: langchaingo for any OpenAI‑compatible LLM, Bifrost for per‑user virtual keys & spend tracking, Langfuse for call tracing, optional LLM endpoints for enrichment and fit analysis.
  • Frontend: Server‑rendered SvelteKit 2 app (Tailwind) under web/.
  • Workers: Separate cron‑style Go binaries handle crawling (ingest), enrichment (LLM), embedding, search indexing, Telegram channel extraction, form capture, etc.
  • Deployment: Docker Compose brings up API, web UI, Postgres, Meilisearch, Redis, and S3 stub with a single make up.

Getting started (local)

# clone, copy env template and start everything
cp .env.example .env
make up               # builds & runs all containers
curl localhost:8080/health   # health check
curl localhost:8080/api/v1/jobs   # sample API call
  • Run individual workers with go run ./cmd/<worker> (e.g., ingest greenhouse).
  • Use make reindex to rebuild the Meilisearch index after schema changes.

Typical use cases

  • Job seekers: Search a clean, up‑to‑date catalogue, receive AI‑enhanced match scores, let the assistant tailor a CV and auto‑fill applications.
  • Developers / startups: Fork the repo, host your own instance, or build custom services on top of the public API (e.g., niche job‑alert bots, analytics dashboards).
  • Recruiters / HR tech: Leverage the open data pipeline to feed internal tools, or integrate the CV‑matching engine into existing applicant‑tracking workflows.

Community & contribution

  • MIT‑licensed, welcomes contributions of new sources (one‑line YAML board entry) or new ATS adapters.
  • Discussions on Discord, GitHub Issues/PRs, and a “contribute a board” form on the live site.
  • Monitoring via Prometheus + Grafana; LLM usage tracked per user.

Where to learn more


freehire is a full‑stack, open‑source platform that combines massive, real‑time job aggregation with modern LLM‑driven assistance, all under a permissive MIT license.

Related

  • Project
  • Project
  • Project
  • Project
  • Project