Skip to content

Changelog

Live machine-readable feed

The authoritative, machine-readable changelog is served at https://aonav.ai/changelog (?format=json, ?since=<version>, ?breaking=true). This page summarizes the client-relevant changes.

Beta

The API is in beta; breaking changes can occur between versions and are flagged below.

Catching up from 0.15.16?

What changed since 0.15.16 collects everything below on one page, with a client checklist.

0.23.0-beta

  • AI impact scores: new ai_impact_scores block on GET /api/clusters/{id}, both AI-impact endpoints, and DSL GET CLUSTER / GET AI_IMPACT. demand_score and entry_level_score (−5 to +5), skills_change_score (0 to 5), method, the occupations the score was computed from, and the ones it does not describe. 169 of 794 clusters; the rest return {"available": false, "message": "AI impact information not available at this time."}. SUBJECT TO CHANGE.
  • Cluster text: cluster_description (all clusters) and premium_skills_summary (one paragraph covering all premium skills).
  • premium_skill_description_1/2/3 are now always null — use premium_skills_summary. Premium skills are published for 479 clusters (about 300 fewer).
  • Cluster refresh: 8 clusters withdrawn, 23 restored; 794 clusters.

0.22.3-beta

  • COMPANYCONVERT matches single-word typos it used to miss (deloite → Deloitte).

0.18.5-beta – 0.18.6-beta

  • TITLECONVERT: typeahead ranked by survey usage; curated acronym expansion (vp, sr, mgr, …); faster full search. No shape change.

0.17.7-beta

  • TITLECONVERT display_name / display_source on every row: the cluster name, O*NET title or provider suboccupation name that best matches what was typed. Render display_name || cluster_name || onet_title.

0.17.5-beta

  • wage_growth block (p50_growth_0_10, tier, basis, note) on both wage endpoints and cluster detail. Weighted differently from the wage-row percentiles; does not reproduce from them.

0.17.0-beta (breaking)

  • Wages: eleven rows per MSA size (years_in 0–10), not three. New ?years_in= / WHERE YEARS_IN IS filter. experience_level 0/5/10 still return the same rows.
  • 82 clusters withdrawn by the provider; their ids and O*NET codes return not-found.
  • Destinations widen from 3 to 5. premium_skill_details added to /pathways and /ai-impact.
  • ai_flag deprecated — still served and filterable.

0.16.11-beta

  • Adjacency is a curated set, complete as published — not a top-3 sample. Numbered fields are read at the width the provider delivers; iterate the keys.

0.16.10-beta (breaking for MCP clients)

  • MCP result is single-wrapped: content[0].text parses to the DSL envelope in one json.loads (also in structuredContent). The format argument is retired (accepted and ignored). /api/dsl unchanged.

0.16.8-beta

  • data_status (attributed | taxonomy_only) on adjacency rows and baseline. A taxonomy-only baseline returns 200 with data: [], not an error.

0.16.7-beta

  • GET /api/occupations/cluster:{id}/pathways returns 410 (it never returned data). Use /api/clusters/{id}/cluster-destinations.

0.16.1-beta – 0.16.2-beta

  • TITLECONVERT returns distinct clusters on the no-company path.
  • match_source may be compound (name_corpus+catalog_exact) — test membership. confidence reports high/low from source agreement.
  • Boolean query params accept 1/true/yes/on.

0.16.0-beta (breaking for MCP clients)

  • POST /mcp/v1 removed — use POST /mcp. Bearer token always required; tool errors return HTTP 200 with the error in the JSON-RPC body.

0.15.18-beta

  • TITLECONVERT curated mappings: when one answers, query_info.hint_applied is set and match_source is hint.

0.15.16-beta

  • DSL TITLECONVERT pick JSON: SUBMIT TITLECONVERT VALUE '{...}' accepts the same envelope REST posts (GET JSON + picked, including cluster_id / cluster_name). Quote JSON with single quotes. onet_code is still required inside picked.
  • DSL cluster AI-impact: GET AI_IMPACT FOR CLUSTER "187" is the twin of GET /api/clusters/{id}/ai-impact.

0.15.15-beta

  • TITLECONVERT user pick: after TITLECONVERT / GET /api/titleconvert returns a list and the user chooses a row, tell AOI which occupation they picked. Do not re-run the convert.
    • DSL: SUBMIT TITLECONVERT TITLE "warehouse" CHOICE "41-2031.00" (ONET is a synonym for CHOICE; optional AS "<onet_title>" and ID "<guid>" — idempotent on the GUID).
    • REST: POST /api/titleconvert with the GET envelope plus picked set to the chosen data[] row. POST only (the proxy caches GET).
    • Intake only — stored, not yet used in ranking. Same permission as convert (dsl:execute / occupations:read), not admin-gated.

0.15.2-beta

  • TITLECONVERT scoring: match_score on the database/fusion path is now 1.0-anchored (best match = 1.0, others relative). The previous ~0.50 multi-word plateau is removed. Response shape is unchanged; the fast typeahead path is unaffected.

0.15.1-beta

  • Batch TITLECONVERT (DSL-only): TITLECONVERT ["a","b",...] resolves up to 200 titles in one call (FULLTEXT + RAG only; skips the Tier-3 LLM). See the DSL reference.

0.15.0-beta

  • Fast typeahead (default ON) for no-company TITLECONVERT: word-prefix matching over the survey name corpus. Toggle per call with ?_fast (REST) or USING [NO] FAST (DSL).

0.14.x-beta

  • 0.14.8: no-company TITLECONVERT now returns distinct occupations (dedups by O*NET) rather than one row per company.
  • 0.14.2 (breaking, MCP): the MCP surface collapsed to a single tool, aoi_dsl_query. The dedicated aoi_title_convert / aoi_company_convert tools were removed - use the DSL commands via the single tool. See the MCP reference.
  • 0.14.1: DSL USING <flags> clause (experimental matcher toggles, at parity with the REST ?_* params).
  • 0.14.0: DSL SUBMIT SAMPLE learning channel.

0.13.x-beta

  • 0.13.1: TITLECONVERT ... EXPAND CLUSTER (title -> O*NET -> cluster in one call).
  • 0.13.0 (breaking, schema): occupation-level postings_count_qtile (1-5 quintile) was retired and replaced by entry_posting_count / entry_posting_tier / total_posting_count / total_posting_tier / early_career_access. The old postings_qtile filter and sort now return a -32602 deprecation error. Also added EXPAND TIMESTAMPS.

Earlier (0.11.x-0.12.x)

  • Gen-3 AI-impact narratives and trends; cluster career pathways; skill-adjacency metrics; cross-company badge analytics endpoints (COMPANY_BADGES / OCCUPATION_BADGES + GROUP BY counts).
  • 0.12.2 (breaking, scoped): the derived education_level field was removed from the education endpoints - read ba_plus_share and/or job_level instead.

For the complete history, use the live /changelog feed.