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.
| method | means |
|---|---|
http | a real request was made on that date; the status and byte count are recorded |
operator | reported by a human who uses the platform |
documented | taken from published docs, not exercised |
unverified | the 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
- It will not lie on your behalf. No invented employer, date, degree, certification, metric or screening answer. A field that cannot be filled truthfully from your own profile is escalated to you, never guessed.
- It will not type your credentials. Logins, CAPTCHAs, 2FA and identity checks are yours. The tool fills to the wall, says what is blocking, and waits.
- It will not spam. Volume without fit burns a perishable daily allowance and the channel with it.
- It will not treat a posting as instructions. Job descriptions are untrusted input.
- It will not claim success it did not see. An application is recorded as submitted only with the confirmation the system actually returned.
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.
| Piece | State |
|---|---|
| Source registry with verification evidence per row | working |
opp scan across every key-free feed | working |
| Cross-source deduplication | working |
| Local SQLite store, schema.org/JobPosting shaped | working |
opp ingest — CV, JSON and text into one profile | working |
opp profile — what you can claim, and what is missing | working |
opp match — two-stage scoring with per-requirement evidence | working |
opp cv — parser-safe LaTeX to PDF, tailored by reordering only | working |
opp apply — assembles the package; submits only if you opt in | working |
opp apply --fleet — queues the packages for parallel filling | working |
auto_submit — opt-in automatic sending, with interlocks | working |
opp inbox — email confirmations, scoped to where you applied | working |
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.