Research loop

How this site maintains itself

ML Degrees uses web research, isolated compute, and a coding agent to find new programs and re-check existing ones. Evidence and deterministic checks constrain what the agent can propose before anything reaches the directory.

01

Discover

Exa searches the web for new and changed machine learning degree programs, filtering candidates against explicit degree and source criteria.

02

Wake

A signed webhook wakes a worker. It acknowledges the event immediately, then continues the research job inside an isolated runtime.

03

Evaluate

The worker clones this site's repository and gives a restricted OpenCode agent the candidate, citations, and the site's editorial rules.

04

Verify

Deterministic checks reject unsupported claims, invalid categories, duplicate programs, unsafe SQL, and changes without official sources.

05

Publish

An approved change is transactionally upserted into the database, then triggers a clean static rebuild so verified data reaches the directory without stale pages.

The event path

Fast acknowledgement, continued work

The webhook does not wait for research to finish. The worker returns an acknowledgement and continues running Git, OpenCode, and validation tasks afterward.

Exa detects a candidate

↓ signed webhook

Worker returns 202

↓ background task

OpenCode evaluates evidence

↓ validated database upsert

Git + CI rebuilds the directory

Ongoing verification

Existing programs get re-checked too

The directory is not set-and-forget. A separate maintenance loop re-validates every entry against current sources, so outdated degrees are corrected or removed rather than left to go stale.

01

Schedule

A daily job rotates through every program, always checking the ones validated least recently first.

02

Re-check

Current official pages are fetched again for each program's name, degree, location, format, and cost.

03

Compare

A contained OpenCode agent compares fresh evidence against the stored record and proposes a verdict.

04

Act cautiously

Only high-confidence corrections are applied. A program is hidden only after two separate runs agree it ended; anything ambiguous is flagged for review.

Sources first

Official university, catalog, tuition, and accreditation pages take priority. Unclear evidence is flagged for review rather than guessed.

Agent contained

Candidate text is untrusted. The review agent cannot access database, webhook, search, or GitHub credentials and cannot publish directly.

History preserved

Research events, decisions, failures, citations, and publication timestamps leave an auditable trail for every automated update.