opportunity‑engine / find paid work from sources that cost nothing

One command searches many job boards at once, collapses the same role posted to four of them into one row, and prepares applications for a market where two different machines read them before a human does.

Apache-2.0 Python stdlib only 27 sources · 13 verified live 189 self-tests no account, no key, no card

What it is

opportunity-engine is an open-source command-line tool for finding, ranking and winning paid work of any shape — employment, contract, freelance projects, fellowships and collaborations — using only sources that are usable with no payment. Your profile and everything it finds stay in a local SQLite file that you own. Nothing is uploaded anywhere.

Thirty seconds

git clone https://github.com/MSKazemi/opportunity-engine ~/opportunity-engine
~/opportunity-engine/bin/install

opp init
opp scan --limit 80
  ok    arbeitnow          80 fetched    79 new    1 dup     0 already seen
  ok    remotive           16 fetched    16 new    0 dup     0 already seen
  ok    remoteok           80 fetched    80 new    0 dup     0 already seen
  ok    jobicy             80 fetched    77 new    3 dup     0 already seen
  ok    himalayas          20 fetched    20 new    0 dup     0 already seen
  ok    weworkremotely     80 fetched    79 new    1 dup     0 already seen

351 new opportunit(ies), 5 same job under another URL

That run took 7.7 seconds and needed no account, no API key and no payment.

Why it is built this way

Two screeners, not one

A classic applicant tracking system parser still rejects on structure and keywords. Behind it, a language-model layer now reads what survived, summarises it and ranks it. Optimising for one lands you mid-pile at the other — they want different things from the same document.

The network overtook the board

The share of freelancers winning work through professional and personal networks went from 30% in 2024 to 56% in 2026. A tool that only fires applications at postings is optimising the half of the market that is shrinking.

The counterparty is software

A majority of talent teams intend to run autonomous agents this year. Being machine-legible is no longer a nice property of a CV — it is the interface. The profile is JSON Resume; opportunities are stored in schema.org/JobPosting shape.

Free means free

Every source shipped in the registry is usable with no card attached, and every row records how it was checked and when.

methodmeans
httpa real request was made on that date; the status and byte count are recorded
operatorreported by a human who uses the platform
documentedtaken from published docs, not exercised
unverifiedthe pattern is recorded but was never confirmed — treat with suspicion

A capacity number with nothing behind it is a rumour, and rumours are what make a scan waste an afternoon. opp sources-check re-verifies rows by actually calling them.

What it will not do

Status

This is version 0.4. The whole loop runs: discover, profile, match, generate a CV, and assemble an application package. Submitting is deliberately left to you.

PieceState
Source registry with verification evidence per rowworking
opp scan across every key-free feedworking
Cross-source deduplicationworking
Local SQLite store, schema.org/JobPosting shapedworking
opp ingest — CV, JSON and text into one profileworking
opp profile — what you can claim, and what is missingworking
opp match — two-stage scoring with per-requirement evidenceworking
opp cv — parser-safe LaTeX to PDF, tailored by reordering onlyworking
opp apply — assembles the package; submits only if you opt inworking
opp apply --fleet — queues the packages for parallel fillingworking
auto_submit — opt-in automatic sending, with interlocksworking
opp inbox — email confirmations, scoped to where you appliedworking

Questions people actually ask

Is there a free job board API that needs no credit card?

Yes, several. Greenhouse, Lever, Ashby, SmartRecruiters and Workable each publish a per-company board endpoint that needs no key at all. Arbeitnow, Remotive, RemoteOK, Jobicy, Himalayas and We Work Remotely publish open aggregate feeds. All eleven were verified with a real request on 2026-08-15 and ship configured in this tool.

How is this different from Jobscan, Teal, Huntr or LoopCV?

Those are hosted services with paid tiers; your CV and job history live on their servers. This is a local CLI under Apache-2.0: your profile is a JSON Resume file on your disk, the store is a SQLite file you own, and every source is free by construction. The trade is real — there is no web dashboard, no mobile app, and you run it yourself.

Does it auto-apply to hundreds of jobs?

No. It can submit automatically — auto_submit in your config, off by default — but only to postings that passed your own match rules, only up to auto_submit_max per run, and only when every field was answerable truthfully from your profile. Volume without fit burns the free daily allowances that make the tool possible, and the application carries your name. Anything behind a login or a CAPTCHA waits for you whatever the setting says.

Can it fill applications on several platforms in parallel?

Yes. opp apply --top 10 --fleet prepares the packages and queues them for agent-fleet, which opens as many parallel sessions as the work and your machine justify — capped at one worker per host, so ten postings across three boards become three terminals rather than ten tabs against one site. A worker fills the form, screenshots it, and stops: every task ends awaiting your approval, and nothing is ever submitted on your behalf. agent-fleet is optional; without it the tasks are written to a batch file instead. See the animated architecture →

Will it write my CV for me?

It will generate a tailored, parseable CV from facts already in your profile. It will not invent experience, dates or numbers to improve a match score. If the profile does not support a claim, the claim does not appear.

Is it production-ready?

The discovery half is: it is tested, it runs in seconds, and it is what the author uses. Matching, CV generation and the apply flow are built and covered by the selftest, but are younger and have seen less real-world use. The status table above is kept honest deliberately.