Discover
Exa searches the web for new and changed machine learning degree programs, filtering candidates against explicit degree and source criteria.
Research loop
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.
Exa searches the web for new and changed machine learning degree programs, filtering candidates against explicit degree and source criteria.
A signed webhook wakes a worker. It acknowledges the event immediately, then continues the research job inside an isolated runtime.
The worker clones this site's repository and gives a restricted OpenCode agent the candidate, citations, and the site's editorial rules.
Deterministic checks reject unsupported claims, invalid categories, duplicate programs, unsafe SQL, and changes without official sources.
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
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
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.
A daily job rotates through every program, always checking the ones validated least recently first.
Current official pages are fetched again for each program's name, degree, location, format, and cost.
A contained OpenCode agent compares fresh evidence against the stored record and proposes a verdict.
Only high-confidence corrections are applied. A program is hidden only after two separate runs agree it ended; anything ambiguous is flagged for review.
Official university, catalog, tuition, and accreditation pages take priority. Unclear evidence is flagged for review rather than guessed.
Candidate text is untrusted. The review agent cannot access database, webhook, search, or GitHub credentials and cannot publish directly.
Research events, decisions, failures, citations, and publication timestamps leave an auditable trail for every automated update.