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:
langchaingofor any OpenAI‑compatible LLM,Bifrostfor per‑user virtual keys & spend tracking,Langfusefor 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 reindexto 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
- Live demo: https://freehire.me
- API docs: https://freehire.me/docs/api
- Architecture details:
docs/architecture.md - Feature list:
docs/features.md
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