Skip to content

career-ops: v1.24.0

Choose a tag to compare

@github-actions github-actions released this 30 Jul 13:52
35faacc

Highlights

Five new or revived job sources. The headline: a provider for the a16z speedrun talent network — one feed covering open roles across ~200 portfolio startups (contributed by @justma16ze). Enable it by adding this to your config/portals.yml:

- name: a16z speedrun talent network
  provider: a16z-speedrun-talent
  max_pages: 3          # optional page cap (50 jobs/page, default 3)
  q: machine learning   # optional server-side full-text search

Plus: CryptocurrencyJobs (Web3, RSS, zero-auth), revived Radancy tenants (UnitedHealth + Kaiser — 8,600 postings that previously parsed to zero), iCIMS in the reverse-ATS sweep, and a Playwright scanner for Interamt.de (German public sector).

The jurisdiction lens is complete. Three new evaluation signals backed by citable legal data tables — agency licensing (with official registry pointers), immigration-status requirement overreach (the authorization-vs-status line), and jurisdiction-prohibited content (salary-history class) — plus check-table-freshness.mjs keeping every table's sources and dates honest in CI. Signals describe patterns and hand you official links; they never assert legal conclusions.

Data integrity, everywhere. A grace-floor for every lock in the codebase (a just-created lock can no longer be stolen), batch workers can no longer fabricate results (invented scores are now blocked at three layers), outcome recording phase 1, and a transition ledger for status changes.

A smarter CV cycle. Versioned per-application artifact bundles (flat paths still first-class), a deterministic reuse recommender for similar JDs, and fact gates extended to employer/title/tool claims in cover letters.

Scanning that respects your network. DNS pacing measured against real resolvers, a breaker for resolver outages, and remote-in-title roles surviving city-only locations.


1.24.0 (2026-07-30)

Features

  • compliance: check-table-freshness.mjs — staleness validator for jurisdiction tables (closes #2036) (1e83f67)
  • contacts: company-history.mjs, employer silence and repost facts (#1712) (af21577), closes #1711
  • contacts: job-search phonebook with vCard export (#1719) (8bba0ee)
  • cv: block unsupported employer, title, and tool claims in cover letters (10a2e75)
  • cv: recommend CV reuse for similar JDs — deterministic jd-similarity helper (07a7d9f)
  • doctor: CLI-aware Playwright MCP detection + OpenCode config support (#2247) (960d00b)
  • interview-prep: detect call platform (phone/Zoom/Teams/Meet) from invite text (9acfec1)
  • interview-redflag: protected-grounds question detection with jurisdiction table (#2030) (6b25cdd)
  • interview/debrief: correct contradicted facts in the prep file in place (e8e912b)
  • interview/plan: wire in interview-prep's sourced-question research before Block 4 (3ceb404)
  • interview: debrief directly from an existing transcript (#2122) (5cb7f0a)
  • ledger: set-status transition log + mode wiring (#1695) (2af59e6)
  • oferta/apply: immigration-status requirement overreach — jurisdiction table + posting signal + form warning (2a681d1)
  • oferta/apply: jurisdiction-prohibited content signal — table + Block G + apply-form warning (d8dac75)
  • oferta: agency licensing check — jurisdiction table + registry pointer for agency-mediated postings (closes #2037) (10bf77f)
  • offer-prep: jurisdiction-aware restrictive-covenant notes (#2029) (6eb7778)
  • outcome: outcome recording and application archiving, phase 1 (#2248) (6d60073)
  • portals: standalone fix-slugs.mjs — auto-write ATS slug fixes to portals.yml (7ab1a1d)
  • providers: a16z speedrun talent network board-wide feed (#2231) (1b785a9)
  • providers: add iCIMS to the reverse-ATS full sweep (#2141) (b9cd65e), closes #2137
  • providers: cryptocurrencyjobs — Web3 job board via public RSS, zero-auth (3310855)
  • radancy: support legacy TalentBrew markup and the JSON results fragment (a3e6df9)
  • scan-history: additive normalized-company column for reliable repost keying (#2243) (a4575a6)
  • scan: add Playwright scanner for Interamt.de (2a132d0)
  • scan: country-eligibility filter for remote postings (#2095) (79ba55d), closes #2093
  • scan: negative-cache resolver refusals and stop the sweep on a resolver outage (#2266) (ebaed15)
  • scan: pace DNS lookups so a full sweep can't trip a resolver's rate limit (e03719b)
  • stats: wire followup-cadence's cold classification into activeApps (52a2be8)
  • test: seed-fixture.mjs + era-appropriate install fixtures (#2032) (0c5d146)
  • triage: standalone two-pass triage mode to cut evaluation tokens (#1550) (7f281d8)
  • versioned application CV artifact schema — bundles with flat-path coexistence (1c7a7cb)

Bug Fixes

  • analyze-patterns: use symbol-safe lookarounds so C++, C# and .NET stop vanishing from tech gaps (#2227) (85cb018)
  • batch: don't mark a worker-reported failure as completed (c7b9519)
  • ci: a fork signature's valid check must not go red when the ack comment can't post (5d7b625)
  • cover: prevent double comma in achievement bullets (#2254) (31ddafb)
  • dashboard: pin the row's own status to the top of the status picker (f214d03)
  • dashboard: stop reading funding and valuation figures as Pay (#2139) (581374f)
  • dashboard: the 'hired' status renders with no colour in the pipeline list (8465462)
  • echojobs: keep hybrid roles distinguishable from remote (#2258) (0ef7c23)
  • followup-seed: age out an orphaned recover guard so it can't permanently disable stale-lock recovery (799b3f8)
  • followup: accept an estimated apply date and report which date the age came from (14a4003)
  • followup: recognise name-only outreach so an empty contact list means no contact (6d32f33)
  • jd-skill-gap: canonicalize CV and JD tokens through skill-extract (#2226) (dbaa761)
  • merge-tracker: stop sibling-req clobber when the qualifier is a slashed acronym (#2166) (4910e73)
  • pipeline-lock: floor the ownerless stale check, harden the timeout tests (4720e20)
  • role-matcher: fold accented Latin letters before tokenizing role titles (#2209) (830fe51), closes #2207
  • scaffolder: materialize the Kimi skill entrypoint on symlink-less filesystems (#2259) (06da05c)
  • scan: a title-stated remote role survives a city-only location (8c3e806)
  • scan: ignore StepStone's volatile rltr param when deduping posting URLs (#1982) (b1ae044)
  • scan: portal-health cross-process lock + resolve PORTAL_HEALTH_PATH from cwd (96c578b)
  • scan: record auth, server and unknown fetch errors in portal-health instead of reachable (#2236) (2328f46)
  • test: accept a materialized skill entrypoint, not just a symlink (#2273) (741fadf)
  • tracker-utils, followup-seed: floor the ownerless stale-lock check so a just-created lock can't be stolen (cfc791d)
  • tracker: a data row containing --- is invisible to merge-tracker dedup (#2267) (2333a0f)
  • web: add Hired to the states.ts FALLBACK so the degraded path accepts it (#2282) (fd112c9)
  • web: label-aware pipeline.md reader — posted:/trust:/note: never misread as columns (6c75d9a)
  • web: propagate the Hired terminal-success state across the whole dashboard (#2250) (29503dc)