DEV Community

Radar Labs
Radar Labs

Posted on Edited on

I built a job-lead radar because the job boards I tried returned garbage

Solo developers don't have a finding-work problem. They have a filtering problem. I spent a week measuring exactly how bad the filtering is, then built a small tool around the answer. Every number below comes from my own runs in October 2026.

The noise, measured

GitHub bounties. I pulled open issues labelled bounty: 4,640 of them. In the 200 most recently created, exactly 4 carried a dollar figure, and 191 came from a single repository that opens issues in bulk. Sampling 298 issues from the bigger bounty label pool, 208 had a price and the median was 5 dollars (p25 3, p75 7, max 750). Roughly two thirds of that sample came from one account.

Hacker News. The monthly Freelancer? Seeking freelancer? thread is half people looking for work, not posting it. In the October 2026 thread, 21 of the top-level comments were resumes. Salaried postings are a separate problem: if you rank them together, a 200k-a-year role crowds out every contract gig, because no single project will ever outbid an annual salary.

Freelancer.com. Wide open API and a trap: most listings are priced in rupees. My first version ranked a 1,500 INR project as if it were 1,500 USD. It sat at the top of the list for an hour before I noticed.

Three mistakes I made, and the fix

1. A 248,400 dollar lead that was not a lead. Top of my ranking one morning was a GitHub pull request titled Add researched paid bug bounty target list, whose body said: total advertised value 230,000 EUR across 214 programs. My parser saw a currency symbol and a number. Now a price only counts if a bounty-ish word (bounty, reward, budget, payout, prize) sits within 60 characters of it, and aggregate words (total, across, combined, median, pool) disqualify the match outright. Both rules came from that one failure.

2. Treating a bounty range as a price. Programs publish a range, for example 500 to 30,000. Taking the top put a 248,000 dollar project at number one; taking the bottom pushed good programs under 20 dollar bounties. The geometric mean of the two ends is a much better estimate of what a program actually pays, so that is what I use, and the output marks it as an estimate.

3. Filtering by date on things that never expire. Bounty programs stay open for months. A 21-day recency window deleted almost all of them. Recency now only applies to sources where it means something.

The rules that survived

Effort matters more than payout. A 5,000 dollar project that needs a 40-hour full-stack build is not better than a 400 dollar one that takes four hours, so every lead gets an effort estimate from its text and the ranking is dollars per hour, not dollars.

Deduplication matters. The same job gets reposted across sources, so titles are normalized before ranking and the most valuable copy survives.

And the output says what it threw away. The run summary is always three numbers: how many items were scraped, how many survived filtering, how many were returned. When a source starts returning junk, the middle number tells you before the list does.

What it does not do

It does not bid on anything. Every platform's terms forbid automated bidding, and a bot-written proposal loses to a human one. It does not send messages and it does not guarantee a lead is still open, so check before you quote.

Coverage is five sources: GitHub bounties, two Hacker News monthly threads, Freelancer.com, YesWeHack programs, and Remotive for remote roles. No Chinese platforms yet. The Freelancer.com endpoint rate-limits after a couple of minutes of hammering, so that one source alone takes about 90 seconds.

Where it lives

It runs as a hosted Actor on Apify, so there is nothing to install and nothing to keep alive:

https://apify.com/contributory_garnet_hyz/freelance-lead-radar

Pricing is per lead returned plus a small per-run start charge. Filtered-out noise is not billed. A default run returns 25 leads, which comes to about 38 cents.

What I would like to know

The scoring weights are the part I am least sure about: payout 42 percent, ease 22 percent, skill fit 21 percent, freshness 9 percent, competition 6 percent. If you have built a similar filter for your own work search, what would you weight differently? I would rather change the weights than keep guessing.


Follow-up: I later went to the source of these postings — 527 company career pages, six public ATS APIs, 18,825 real postings — and found that two of my salary numbers were off by 12× and 2,080×. That write-up is here: Six APIs, zero keys: what 18,825 real job postings contain.


Look at the output before you pay for it. Both tools live at https://sjdfi0wjvosdju9.github.io — the job-feed sample is browsable as a table at https://sjdfi0wjvosdju9.github.io/samples/ats-jobs.html and the lead sample at https://sjdfi0wjvosdju9.github.io/samples/freelance-leads.html. Static snapshots, no account, no email, no signup.

There is also a write-up of how I picked these two ideas and which ones I rejected: https://sjdfi0wjvosdju9.github.io/how-we-choose.html.

Top comments (0)