LLM World — Taxonomy

The definitions behind every label on this site — model types, subtypes, modalities and capabilities, and how they overlap.

How models are classified, and what each term means here.

Companion to MASTER-EVOLUTION-PLAN.md (what we intend to support) and EXECUTION-ORDER.md (in what order). This document fixes the vocabulary those two rely on.

Written at Stage 0. Nothing here is implemented yet — schema 1.6 (Stage 1) is what puts it into the data.


1. Three independent axes

The single most important rule in this document:

Type, modality and capability are separate. None implies another.

Collapsing them is the standard mistake in model trackers, and it becomes unfixable once URLs and charts are built on the collapsed version.

AxisQuestion it answersField
TypeWhat kind of model is this, primarily?classification.primary_type
ModalityWhat can go in, and what comes out?modalities.{input,output}
CapabilityWhat can it do?capabilities[]

Worked example — a language model that accepts images and speaks:

"classification": { "primary_type": "language", "subtype": "llm" },
"modalities": {
  "input":  ["text", "image", "audio"],
  "output": ["text", "audio"]
},
"capabilities": ["reasoning", "vision", "tool_use", "speech_generation"]

It is a language model (type) that is multimodal (a property of its modalities, not a type of its own) and can reason (capability). Under the current schema all three of those facts live undifferentiated in tags[], which is why S2 exists.

Note that multimodal is derived, never stored: a model is multimodal when modalities.input or modalities.output holds more than one value. Storing it separately would be a second copy of a fact — see METHODOLOGY §4.


2. classification.primary_type

The discriminator. Every record has exactly one. It answers "what is this model for", not "what can it handle".

ValueDefinition
languagePrimary output is natural-language text. Includes models that also accept or emit other modalities.
visionPrimary purpose is understanding visual input. Output is labels, structure or text about an image, not a generated image.
image_generationPrimary output is a raster image.
video_generationPrimary output is video.
audioPrimary output or input is speech, music or general audio. See subtypes.
3dPrimary output is a 3D asset, scene or representation.
world_modelSee §6 — the strictest category, with its own inclusion test.
decisionAnswers questions posed at request time with typed values and probabilities, instead of generating text. See §6a — it has its own inclusion test.
unknownEvidence is genuinely unclear. Legitimate and preferred over a guess.

unknown is not a failure state. A record classified unknown with a good source is more trustworthy than one confidently mis-typed.

Language subtypes

classification.subtype, only meaningful when primary_type is language:

ValueDefinition
llmGeneral-purpose large language model. The default.
slmSmall language model — deliberately parameter-efficient, positioned by the lab for on-device or low-cost deployment. Lab positioning decides this, not a parameter threshold.
reasoningTrained or configured to spend inference-time compute on explicit reasoning before answering, and presented as such by the lab.
embeddingOutput is a vector representation, not text.
rerankerOutput is a relevance ordering over candidates.

reasoning is deliberately both a subtype and a capability. The subtype means "this is what the model is" (o-series); the capability means "this is something it does" (a flagship model with a reasoning mode). A model can carry the capability without the subtype. It should not carry the subtype without the capability — the validator enforces that direction.

Discriminators, settled 2026-08-10 against 16 records. Three signals decide it, all from the lab's own words:

SignalReading
The lab classes the line as thinking modelssubtype — "Gemini 2.5 models are thinking models"
The lab says the model is a reasoning modelsubtype — "Muse Spark is a natively multimodal reasoning model"
Reasoning is a mode or effort settingcapability — Qwen3's enable_thinking switch; reasoning.effort supporting none (default) on GPT-5.1
The lab ships reasoning as a separately named modelcapability on the base — Grok 3 is the flagship; "Grok 3 (Think)" is the reasoning model
"Hybrid reasoning model"capability. A toggle is precisely "a flagship model with a reasoning mode"

Anthropic stated the distinction outright for Claude 3.7 Sonnet: "we believe reasoning should be an integrated capability of frontier models rather than a separate model entirely." That is this table's fourth row in the lab's own voice, and it is why 12 records keep the capability without the subtype.

Two records could not be decided — gpt-5-6 and qwen-3-8-max have no archived primary source, so they stay llm until one exists.

Other types get subtypes when they get records. Do not invent them now.


3. Modality vocabulary

text · image · audio · video · 3d · sensor · environment

input and output are recorded separately and are frequently asymmetric.

sensor and environment exist for world models and are not to be used for anything else until §6's test has been met by a real record. Charter §9 is right that this vocabulary should not be over-designed before there is data to constrain it.

Record what the model accepts and produces, per the lab's own documentation — not what a surrounding product does. A text-only model inside a product that transcribes audio first is input: ["text"].


4. Capability vocabulary

Recorded only with evidence. An unlisted capability means "not evidenced", never "absent" — the UI must not render absence as a negative claim.

CapabilityRecorded when
reasoningLab documents explicit inference-time reasoning
codingLab positions code as a primary use, or ships a code-specific variant
visionAccepts image input and reasons over it
audioAccepts or produces audio
videoAccepts or produces video
tool_useCan invoke external tools
function_callingStructured function-call interface
structured_outputGuaranteed schema-conforming output (JSON mode or equivalent)
agenticLab documents multi-step autonomous operation
long_contextContext window ≥ 200K tokens. Derived, not hand-set
multilingualLab documents non-English capability as a feature
image_generation, video_generation, speech_generationProduces that modality
world_prediction, planningReserved for §6

long_context is derived from specifications.language.context_window at build time, so it cannot disagree with the number it summarises.


5. What remains in tags[]

After S2, tags[] holds editorial judgements only — claims made by this project rather than facts taken from a source:

TagMeaning
flagshipThis project's judgement that the model was the lab's leading release at the time
small-efficientPositioned for efficiency; overlaps subtype: slm but is a presentation choice

Everything else currently in tags[] moves:

TodayBecomes
multimodalderived from modalities
reasoning, agenticcapabilities[]
open-weightsaccess.open_weights (already stored there — the duplicate goes)

This split matters for trust: it makes the boundary between what a source says and what we think visible in the schema rather than blurred inside one array. flagship is entirely our opinion; it should be labelled as such in the UI.


6. World models — inclusion test

The strictest category, because the term is used loosely in marketing. Charter §47 is right to demand criteria before any record exists.

A model is classified world_model only if the lab's own documentation evidences all three:

  1. It represents the state of an environment — physical or simulated — as

something other than text.

  1. It predicts future states of that environment, conditioned on time,

actions, or both.

  1. That prediction is the model's purpose, not a by-product.

Explicitly insufficient, alone or combined:

A video generator is video_generation until criterion 2 is evidenced. When a record is genuinely borderline, it is unknown with the ambiguity stated in the record's note — not promoted on the strength of a press release.

No record currently qualifies, and none should be added until a real candidate is tested against this list in public.


6a. Decision models — inclusion test

Added in September 2026 for TypeSafe AI's Jev. Every other type here names what a model PRODUCES: text, an image, video, audio, a 3D asset. A model that answers a question with a typed value and a probability produces none of those, and filing it as language would count a model that emits no text among the LLMs in every chart that splits by type.

A model is classified decision only if the lab's own documentation evidences all four:

  1. Its primary output is an answer of a declared type — a choice from a set,

a boolean, a number, a label — rather than free text.

  1. Each answer comes with a probability or confidence, as part of the

model's output rather than something read off afterwards.

  1. The answer is not produced by generating text token by token and then

parsing it.

  1. The questions and their answer types are supplied at request time. It is

general-purpose, not trained for one fixed set of labels.

Explicitly insufficient, alone or combined:

Those are capabilities of a text generator (§4), and the answer is still generated as tokens — criterion 3.

a different kind of output.

generating it, and they stay language subtypes (§2): they score or encode for retrieval rather than answer a posed question — criterion 4.

set is fixed at training time — criterion 4.

the four criteria are what gets tested.

When a record is borderline it is unknown, with the ambiguity in its note, the same rule §6 applies.

Qualifying records: Jev (TypeSafe AI, 2026-09-15). One is enough for a type when no other type describes it — the rule the validator states for re-adding any type — but it is not enough to call this a trend. Community imitations built by fine-tuning a language model (Kev, on Qwen 3.5) are not recorded at all: a release needs a lab behind it (§7).


7. Models, products and milestones

The dataset currently holds two records that are not models: chatgpt and bard, both carrying kind: "product", both filed inside model families (GPT and Gemini).

This is a real classification error worth fixing rather than preserving:

context window, a licence.

it is a product that was originally served by GPT-3.5.

release.

Decision: the dataset holds models. ChatGPT's launch is one of the most significant dated events in this history, so it belongs in the dataset — as a milestone, per charter §40, not as a model record with null specifications. Same for Bard.

This removes kind from model records entirely; the file a record lives in becomes the discriminator. Timelines may merge models and milestones for display, clearly distinguished.

Until milestones ship (Stage 8), these two records stay as they are. They are not to be used as a precedent for adding more products.


8. Families and lineage

A family is a lineage the lab itself presents as continuous — Claude, Llama, Qwen. Filled on every record.

One kind of model per family. Every record in a family shares one primary_type; the validator rejects a family that mixes them. Families used to follow brand alone, so Gemini held Nano Banana, Veo, Lyria and the Live voice models beside the language models, and every lineage comparison paired an image model with the text model released before it. A lab's image, video, speech or vision line gets its own family, named for the lab's own product line where one exists: Nano Banana, Veo, Imagen, GLM-V, Seedream, Qwen-Image.

Rules:

GPT family merely by sharing a prefix; it is separate here, correctly.

one family, several generations.

parsing. Version numbers are not reliably ordered across labs. They are used only as a VETO: a release numbered above another cannot be its predecessor. Qwen-Image-2.1 shipped after Qwen-Image-3.0 because they are two lines (open weights and API) sharing a name, and without the veto 2.1 read as 3.0's successor. The veto compares decimals, because xAI numbered Grok 4.20 before Grok 4.5.

several lines — Claude holds Opus, Sonnet, Haiku, Fable and Mythos — and seriesOf() in lib/record.mjs separates them by stripping versions, sizes and "preview" from the name: "Claude 3 Opus" and "Claude Opus 4.5" are both the Opus series. This is the one place the name is read, and only to divide a family the dataset already records, never to join two: GPT-OSS stays out of GPT. Within a series, a release is compared with the nearest in size, so a 9B follows a 9B and Qwen's 27B is never "upgraded" to its 2.4T; beyond an 8x gap there is no neighbour at all. The first release of a series has no predecessor, and that is shown as none rather than borrowed from another line.

derives predecessor, successor and siblings from family and the canonical date, both of which are filled on every record. A stored pointer would be a second copy of a fact the dataset already holds, and would go wrong the first time a date was corrected (§4).

by date turns GPT-5.6 Sol, Luna and Terra into a three-step chain; they are one launch of three sizes. lineageOf() returns anything sharing a date as a sibling and never as a predecessor. Siblings span the whole family, because a launch day is a family event; predecessors do not.

What changed, the family rail and the family's What changed all take their neighbour from it, so no two can disagree. They used to: the model page took the previous record by date and diffed GPT-5.6 Luna against Sol.

Where a lab forks a line — a family that splits into open and closed branches — record both under the same family and let the branch show in lineage when it exists. Do not create a second family to express a fork.


9. Open questions

Deliberately unresolved; revisit when data forces the issue.

  1. Distilled and quantised variants. Currently absent. Likely events or

variants on a parent record rather than families of their own.

  1. ~~multimodal as a primary_type.~~ Resolved 2026-08-10: removed.

It had no valid members. All 24 records that derive as multimodal are language — text-first models that also accept images. Even GPT-4o, which emits text, image and audio, is a language model that does more rather than a different kind of thing. Multimodality is a property of modalities; a type for it would say the same thing twice. Re-add only if a model appears that no other type fits.

  1. Where fine-tunes by third parties belong. Out of scope for now; the

dataset tracks lab releases.

See how every record scores against this →
Browse the records themselves →