Privacy and data¶
Short version: HireEx runs on your laptop. There's no account, no sign-up, no "we collect analytics to improve your experience". Your profile, your search history, the jobs you've looked at — all of it sits in a database on your machine.
The one exception: when HireEx reads a job posting, it sends that posting and your profile to whichever AI provider you chose. That's how the ranking happens. You can swap in a local AI model if that bothers you.
Nothing else leaves your machine unless you turn it on.
What gets stored, and where¶
Everything below lives on your disk. Nobody else has a copy.
| Where | What |
|---|---|
| Postgres (in Docker) | Job postings (title, company, description, rankings, what you did with each). |
| Redis (in Docker) | Temporary caches and rate-limit counters. |
| Qdrant (in Docker) | Numerical fingerprints of job postings so HireEx can spot duplicates. |
.hireex/ folder |
Bookmarks for interrupted fetches, so restarting doesn't re-download everything. |
session_store/ |
Your LinkedIn session (if you use the LinkedIn fetcher). |
config/candidate_profile.toml |
Your positioning, salary floor, preferences. |
prompts/ |
The AI instructions, as tuned by you. |
.env |
API keys and credentials. |
All of that is in your home directory or Docker volumes. None of it is pushed anywhere.
What actually leaves your machine¶
The AI provider¶
Every time HireEx ranks a job, it sends two things to the AI model:
- The ranking instructions plus your profile (who you are, what you're looking for, your dealbreakers, your salary floor).
- The job description being looked at.
If you use OpenRouter, the request goes through their gateway and on to whichever model you picked. Check their data policy before sending anything truly sensitive. The example prompts in the repo are intentionally generic — the real prompts live on your disk and are where any personal details end up.
Want to keep it fully local? Wire up a local model (Ollama, LM Studio, etc.) by dropping a backend file in core/llm/backends/. The rest of HireEx doesn't care what's on the other end.
The job boards¶
When HireEx fetches postings, it talks to the job boards' APIs:
- LinkedIn — uses your own login session. It only reads what LinkedIn shows a logged-in user. Follow LinkedIn's terms.
- JobSpy adapters — Indeed, Glassdoor, ZipRecruiter, and others. Each has its own terms.
If you want HireEx to be extra polite, you can lower the request rates in api/middleware/rate_limiter.py.
If you fork the repo on GitHub¶
HireEx's .gitignore already hides all the private files. If you fork and push, double-check nothing slipped in — a tool like gitleaks detect --source . or trufflehog filesystem . will scan your history for stray secrets.
The files already marked private:
.env,.env.*(but.env.exampleis shared)*.env.backup,docker.env.backup,*.pem,*.key,*_token.jsonconfig/candidate_profile.tomlprompts/score_job.mdandprompts/filter_job.md/dev/(your local work)session_store/,.hireex/
What HireEx explicitly does not do¶
- No Google Analytics, no Mixpanel, no Sentry-without-opt-in. No analytics, period.
- No outbound telemetry from the dashboard.
- No auto-applying for you. HireEx picks the jobs; the click is yours.
- No recruiter-side features. This is a tool for the person looking for a job.
License¶
HireEx is free for personal use, source is open — but commercial use requires a separate licence.
You can read the code, run it for your own job search, change it, and host it for other people for free, as long as every user brings their own AI API key. You can't sell it, run it as a paid service, proxy your own API keys for others, or bundle it into a for-profit product.
See LICENSE for the legal text. Commercial licensing: alex@alexchernysh.com.