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_scoresblock onGET /api/clusters/{id}, both AI-impact endpoints, and DSLGET CLUSTER/GET AI_IMPACT.demand_scoreandentry_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) andpremium_skills_summary(one paragraph covering all premium skills). premium_skill_description_1/2/3are now alwaysnull— usepremium_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_sourceon every row: the cluster name, O*NET title or provider suboccupation name that best matches what was typed. Renderdisplay_name || cluster_name || onet_title.
0.17.5-beta¶
wage_growthblock (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_in0–10), not three. New?years_in=/WHERE YEARS_IN ISfilter.experience_level0/5/10still 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_detailsadded to/pathwaysand/ai-impact. ai_flagdeprecated — 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].textparses to the DSL envelope in onejson.loads(also instructuredContent). Theformatargument is retired (accepted and ignored)./api/dslunchanged.
0.16.8-beta¶
data_status(attributed|taxonomy_only) on adjacency rows and baseline. A taxonomy-only baseline returns200withdata: [], not an error.
0.16.7-beta¶
GET /api/occupations/cluster:{id}/pathwaysreturns410(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_sourcemay be compound (name_corpus+catalog_exact) — test membership.confidencereportshigh/lowfrom source agreement.- Boolean query params accept
1/true/yes/on.
0.16.0-beta (breaking for MCP clients)¶
POST /mcp/v1removed — usePOST /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_appliedis set andmatch_sourceishint.
0.15.16-beta¶
- DSL TITLECONVERT pick JSON:
SUBMIT TITLECONVERT VALUE '{...}'accepts the same envelope REST posts (GET JSON +picked, includingcluster_id/cluster_name). Quote JSON with single quotes.onet_codeis still required insidepicked. - DSL cluster AI-impact:
GET AI_IMPACT FOR CLUSTER "187"is the twin ofGET /api/clusters/{id}/ai-impact.
0.15.15-beta¶
- TITLECONVERT user pick: after
TITLECONVERT/GET /api/titleconvertreturns 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"(ONETis a synonym forCHOICE; optionalAS "<onet_title>"andID "<guid>"— idempotent on the GUID). - REST:
POST /api/titleconvertwith the GET envelope pluspickedset to the chosendata[]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.
- DSL:
0.15.2-beta¶
- TITLECONVERT scoring:
match_scoreon 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) orUSING [NO] FAST(DSL).
0.14.x-beta¶
- 0.14.8: no-company
TITLECONVERTnow 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 dedicatedaoi_title_convert/aoi_company_converttools 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 SAMPLElearning 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 byentry_posting_count/entry_posting_tier/total_posting_count/total_posting_tier/early_career_access. The oldpostings_qtilefilter and sort now return a-32602deprecation error. Also addedEXPAND 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 BYcounts). - 0.12.2 (breaking, scoped): the derived
education_levelfield was removed from the education endpoints - readba_plus_shareand/orjob_levelinstead.
For the complete history, use the live /changelog
feed.