Skip to content
brockamerPublic

About

Self-hosted pipeline for a sane job search. Pulls listings from LinkedIn, Indeed, Greenhouse, and Gmail; LLM filters out the noise; auto-generates a tailored resume, cover letter, and company briefing for each application worth sending. Web UI for triage, Docker Compose to deploy.

Topics

Resources

Contributing

Security policy

Stars

20 stars

Watchers

0 watching

Forks

Repository files navigation

findajob

Self-hosted job search infrastructure: AI triages thousands of listings down to a handful, generates tailored materials for the ones worth applying to, and learns from every rejection.

Notice (October 2026). findajob is in a top-to-bottom audit while its maintenance moves to an automated work queue. Until the audit completes, documentation and behaviour may change or break between releases. Issues and pull requests are still welcome; see CONTRIBUTING.md.

The modern job search grinds people down — hundreds of listings per day, most irrelevant; the same cover letter rewritten at midnight; black-hole rejections that tell you nothing about whether you targeted wrong, wrote wrong, or got unlucky. findajob absorbs the triage, the tailoring, and the tracking so your attention goes to the few applications actually worth sending.

Pre-1.0 means active development.

Who this is for. findajob is maintained for operators who are comfortable with Docker, a terminal, git and SQLite, and who run it for themselves or on behalf of other people. It is not optimized for a non-technical job seeker installing it alone, and the documentation assumes those skills (Decision 37). Where the project stands, what is next and the rules every change follows: docs/status.md.

Dashboard

Fictional demo data — a cross-discipline candidate's program, operations, and customer-facing roles. The same pipeline works for every field; only your candidate profile changes.


What it does

  • Cuts the noise so you can focus. Every morning it pulls hundreds of fresh listings, scores each one against your background, and surfaces only the handful worth your attention. Most job tools track what you applied to; this one finds the few worth applying to.
  • Writes the application for you to finish. Flag a job and findajob researches the company and drafts a briefing; approve it and a second pass produces the full package — a tailored resume, a cover letter, and outreach drafts that name real contacts from your network.
  • Learns from every rejection. Each job that doesn't pan out gets tagged with a reason — Skills Mismatch, Geography, Compensation — and those reasons train the next day's scoring. No other job tool closes that loop.
  • Works for any field. It works for a social worker, teacher, accountant, software engineer, or trades professional alike. Only your profile changes.

Example: thirty days on one instance:

Listings ingested                8,393   ── 30-day window
Worth a look (AI-scored)           187      2.2%
Entered the prep pipeline           93      50% of those
Applications submitted              59      63% of prepped
Interviews from those 59 apps       13      22%

8,393 listings narrowed to 59 applications — and 13 interviews — in a month. Interview rates are unpredictable; what the system does is shrink the application volume you need to get them.


What you'll need

  • An OpenRouter account (required) — funds every AI call findajob makes. Pay-as-you-go, starting from $0. Add at least $10 of credit before you begin (that covers the onboarding interview); $20–30 covers a typical first month.
  • A RapidAPI account (optional) — adds LinkedIn and Indeed listings to the mix. Free tier, no credit card. Skip it and findajob still pulls from company career pages and your Gmail job alerts — but most people want LinkedIn too.
  • A Gmail account (optional) — lets findajob read your LinkedIn job alerts and notice rejection emails automatically.

Sign-up walkthroughs for both keys: docs/getting-started/api-keys.md. You paste them into the app once during setup.


What it costs

Real per-call rates from the operator's instance (last 30 days):

Item Typical
Daily scoring (~100 listings) $0.10–$0.40
Per fully-prepped job ~$1.10
Per interview-prep run ~$0.30

Most people: ~$20–50/month in AI spend, plus ~$5/month if you host on Fly.io. Full breakdown across usage levels: docs/getting-started/cost.md.


Quick start

  • Self-host with Docker — the path the maintainer runs and verifies. Runs on a box you operate, with no hosting cost beyond the machine. You handle backups, TLS, and updates. → Docker install guide
  • Fly.io — runs under your own Fly account, about $5/month. The maintainer does not verify this on-ramp, and its documentation is being retired (#1092). → Fly guide

Both paths run the same image and reach the same dashboard. Once it's live, a one-time onboarding interview — a roughly hour-long chat inside the app about your background and target role — teaches findajob who you are. The next morning's triage then delivers your first scored shortlist.


Documentation


For contributors

findajob is a real, daily-driven system, and the codebase is a worked example of how a multi-stage LLM pipeline holds together in production.

  • Architecture — system design, the prep pipeline's stage-by-stage data flow, and the per-stage model choices
  • CONTRIBUTING.md — dev setup, commit conventions, and the architectural invariants the code enforces
  • Project board — the single source of truth for active work

Privacy

The repo contains no personal data. Candidate content lives in the stack's own state/ directory, which is gitignored. Some of it comes from .example templates, such as candidate_context/profile.md.example. Onboarding writes the rest, such as the master resume. The pre-commit hook that blocks PII is an opt-in install for each clone; see CONTRIBUTING.md.

An instance calls only the services you configure: the AI provider through OpenRouter, RapidAPI for job search, Gmail over IMAP if you connect it, ntfy.sh for push notifications, and Google Gemini for podcast audio if you set a key. If you run an instance for someone else, read Data handling for operator-run instances.

  • Issues — file a bug, request a feature, or ask a question
  • Security — please don't file public issues for security bugs; see SECURITY.md

License

MIT.

About

Self-hosted pipeline for a sane job search. Pulls listings from LinkedIn, Indeed, Greenhouse, and Gmail; LLM filters out the noise; auto-generates a tailored resume, cover letter, and company briefing for each application worth sending. Web UI for triage, Docker Compose to deploy.

Topics

Resources

Contributing

Security policy

Stars

20 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages