Hacker News 'Who is hiring?' (keyless API)
Monthly structured intelligence over Hacker News' 'Ask HN: Who is hiring?' thread: every top-level comment of the month's thread (posted by the whoishiring account on the first weekday; September 2026 thread id 49522897, 257 live job posts after dropping 43 deleted/dead/empty comments), parsed from the official keyless HN Firebase API. Deterministic pipeline: HTML stripped and entities unescaped; company parsed from the first pipe-delimited header segment (null when unparseable or role-like); location resolved to ISO alpha-3 through hub.normalize with a documented cascade (parenthetical 'Remote (US)' -> USA, trailing US-state so 'CA' reads as California not Canada, token scan, curated city map, 'in <City>' fallback; timezone tokens and English-word lookalikes excluded; honest null when unresolvable); work_mode remote/onsite/hybrid/unknown (hybrid wins on mixed signals; 93.8% classified live); employment_type full-time/part-time/contract/internship/unknown first-match-wins; role_category deterministic first-match-wins over 19 categories (ml-ai before generic backend); tech_tags ~45 canonical keyword tags (word boundaries; 'go' matches only golang/capitalised Go); ai_related keyword flag; salary-info, visa-sponsorship and bullet role-list flags; PII redaction — contact emails/phones become '[email redacted]'/'[phone redacted]' in text_excerpt (rows kept, since contact info is the norm in hiring posts; full bodies never stored); hiring_signal_score = 30*has_role_list + 15*has_salary_info + 10*has_visa_sponsorship + 25*min(1, word_count/400) + 20*min(1, n_tags/6), ranked as signal_rank (score desc, comment_id asc). Month/thread fixed per run so identical input is an idempotent no-op; a later live re-fetch in the same month mints a new snapshot as comments arrive. Primary key: (month, comment_id). Nullability: company, location_raw, country_code, tech_tags may be null. Caveats: header parsing is heuristic (not all posters follow the convention); keyword rule sets, not classifiers; the score measures post informativeness, not employer quality; English-language posts dominate. Underlying user-submitted content carries no explicit redistribution license, so commercial_use = unclear with per-row source URLs and attribution. Sample use: filter work_mode = 'remote' and ai_related for remote AI roles, or order by signal_rank for the most informative postings.
- jobs
- employment
- labor-market
- technology
- lignes
- 257 lignes
- Qualité
- 91
- Mis à jour
- 25 sept. 2026
- À jour
- Licence
- Licence incertaine