JH← Back to blog

Build Log: An AI Agent That Mines the Hacker News Hiring Thread

How I built Founder Radar — an agent that pulls the monthly HN 'Who's Hiring' thread via Algolia, scores roles with Claude, and drafts outreach for the best-fit remote jobs.


The HN "Who's Hiring" thread goes up on the first of each month and gathers on the order of a couple thousand comments. Most are irrelevant to me. I built Founder Radar to read them all, score the ones worth pursuing, and draft the first message — so I spend my time on the responses, not the triage.

The problem — finding remote roles from UTC+5

Job boards are noisy and lagging. The HN hiring thread is the opposite: it's where early-stage and technical companies post directly, often with the founder or an engineer writing the comment. That signal is high, but it's buried — scrolling two thousand comments by hand to find the handful that are genuinely remote and timezone-tolerant is not a monthly habit you keep.

The filters that actually matter from a UTC+5 timezone: truly remote (not "remote within the US"), async-friendly or tolerant of a large time offset, and a stack that matches what I build. Everything else is noise to discard fast.

Pulling the thread via Algolia

HN exposes a search API through Algolia, which is the clean way in. The approach: find the month's "Who's Hiring" story, then fetch its comments through the API rather than scraping the page. You page through the comment tree, pull the text of each top-level comment (those are the individual job posts), and you've got a structured list to work from instead of HTML.

Worth knowing going in: respect the API's rate limits, handle pagination properly so you don't miss the tail of a long thread, and expect the comment structure to be loose — these are free-text posts with no schema, which is exactly why the next step needs an LLM rather than a regex.

Scoring fit with Claude

Each comment goes to Claude with a prompt that takes the job text plus my profile and returns a structured score — not prose. Asking for structured output (a fit score plus a few labelled fields like remote-eligibility, stack match, and seniority) makes the results sortable and lets me set a threshold instead of reading everything.

The fields that carried the most signal were remote-eligibility and stack match; seniority and comp were noisier. Calibration mattered: the first prompt was too generous and scored almost everything a 6–7, so tightening the rubric and giving explicit examples of a strong vs weak match pulled the distribution apart into something useful. The thing to correct for is the model's eagerness to find something positive in every post — you want it to be willing to score things low.

Drafting outreach

For roles above the threshold, a second pass feeds the job text and my background into Claude to produce a first-draft outreach message. The brief: specific to the post (reference the actual role and company, not a template), short, and led with the single most relevant thing about my fit.

This is a draft, not a send. The human edit pass is where it becomes worth sending — the model gets the structure and the relevant hook right, and I add the judgment and the genuine specifics. A good cold message to an HN founder is concise and shows you read their post; the agent gets you 80% there without the blank-page tax.

What worked and what I'd automate next

What worked: the triage compression. Going from "scroll 2,000 comments" to "review a ranked shortlist of ~15 with drafts attached" is the entire value, and it held up month to month.

What slipped through: a few false positives where a post said remote but meant US-only — the model took the word at face value. A sharper rubric on geography would catch those.

What the next version does:

  • A digest email on the 1st of each month, so the run is automatic rather than something I trigger.
  • Persistent tracking of which roles I've already seen and contacted, so repeat-posting companies don't resurface as new.
  • Reply threading — linking responses back to the original scored role to close the loop.

FAQ

How do you get the HN hiring thread programmatically? Through the Algolia HN Search API — locate the month's story, then fetch its comments via the API rather than scraping.

Why use an LLM instead of keyword filtering? The posts are unstructured free text. Keyword rules miss nuance like "remote (US only)"; an LLM scoring against your profile handles the judgment, once the rubric is calibrated.

Does it send messages automatically? No — it drafts. The outreach always gets a human edit pass before sending.