# Day 12: recruiter.ai and the Gradient Ring lab

Date: October 8, 2026 (Day 12 is dated October 9, 2026)
Contributor: Claude Code (Claude Sonnet 5.5)
Direction: Roman

## The idea

recruiter.ai started on Day 4 as a team of five AI agents that read public job postings and build small browser apps from what employers ask for. This milestone turns the same idea into something anyone can open and read: **a daily dashboard of what companies hiring software, AI and machine-learning engineers want right now**, plus an original interactive machine-learning lab.

Day 12 opens the dashboard: [recruiter.ai on RawmWare](/365-days/projects/day-012).

## What we built, in order

### 1. The data pipeline

- Public job boards only: Greenhouse, Lever, Ashby, Remotive and the Hacker News "Who is hiring" thread. The first snapshot read **5,520 target roles from 67 sources, and every source answered**.
- Each posting is classified into an **AI, ML or software track**, with seniority and work mode (remote, hybrid, on-site).
- A hand-written skill taxonomy covers AI and LLM tools, machine learning, languages, frameworks, cloud and data, and engineering practices. Early bugs were fixed along the way: escaped regex word boundaries, and generic "security" or "alignment" boilerplate that was inflating skills.
- Postings are split into **required, preferred and other** sections, so the dashboard can rank skills by how often they are listed as *required* rather than just mentioned.
- Locations are bucketed into metros and remote, and salary ranges, sponsorship and years-of-experience asks are extracted.
- Every run writes a dated snapshot, compares against an earlier one to find **skill movers**, and refuses to publish if too few postings came back. The first run is labelled as a baseline so nothing is wrongly called "new".

### 2. The dashboard

- Demand by skill category, required-versus-preferred ranking, skill bundles, movers, a history chart, real quotes from postings, and a role explorer with search and filters.
- **My match** lets a visitor pick the skills they have and see which roles fit and which gaps matter most. Choices stay in the browser.
- Dark and light themes, a layout that works at phone width, and DOM helpers that never use `innerHTML`.
- A "How it's built" section shows the method, its limits, run health and the build log generated from the repository's own commit history.

### 3. The Gradient Ring lab (the machine-learning page)

An original, interactive page about **distributed training**. A real neural network (a small multilayer perceptron written from scratch) learns two-moons, spiral or concentric-ring data while its simulated workers synchronise gradients.

- **Ring all-reduce** and **parameter-server** synchronisation, animated step by step.
- A data-parallel trainer that **checks itself**: the page reports the maximum gradient error against a single machine, the divergence between worker copies, and accuracy on all data.
- A cost model with link bandwidth, latency, compute time, communication overlap and a slow "straggler" worker, so you can find the point where adding machines stops paying off.
- Charts for the decision boundary, the ring, the loss and scaling.

### 4. Automation and tests

- 46 pipeline tests pass, including all-reduce exactness, replica consistency and the learning and cost-model checks for the lab.
- A GitHub Actions workflow refreshes the data daily in the source repository, and tests run on every push.
- The original Day 4 agent prototype is kept in the repository.

## Putting it on RawmWare

The dashboard and lab are static files, so the site hosts them at `/365-days/projects/day-012`. The Day 12 archive card opens it directly. The lab is at `/365-days/projects/day-012/labs/gradient-ring/index.html`.

## Limits

- The copy on rawmware.com is a **snapshot from October 8, 2026**. It does not refresh by itself; the daily refresh runs in the source repository, and a new snapshot has to be copied into the site.
- Counts come from public postings and keyword matching. They show what employers *wrote*, not what they will hire for, and the taxonomy will miss skills it does not list.
- The lab is a simulation of cluster behaviour with a model cost formula, not a measurement of real hardware.
- Earlier work on the Day 4 agents used `gpt-5-nano`; this dashboard itself makes no model calls.

Source: [github.com/rawmware/recruiter.ai](https://github.com/rawmware/recruiter.ai)
