MTG Copilot Docs
Data model

Card concept associations

Which concepts are attached to which cards, and which pass decided.

6 columns. Every value below is generated from the provenance registry.

FieldTypeSourceUpdatedWritten by
card_idstringcalculatedon demandscripts/classify-cards-{mechanical,vector,llm}.ts
Oracle-level card (FK → cards.id).
concept_namestringcalculatedon demandscripts/classify-cards-{mechanical,vector,llm}.ts
Concept attached to it (FK → game_concepts.name).
relationshipstringcalculatedon demandscripts/classify-cards-{mechanical,vector,llm}.ts
'tag' when the card is an instance of the concept; 'context' when it only mentions it.
sourcestringcalculatedon demandscripts/classify-cards-{mechanical,vector,llm}.ts
Which pass produced the association: 'mechanical' (pattern match), 'vector' (embedding similarity), 'llm' (model judgement), or 'human'.
confidencenumber | nullcalculatedon demandscripts/classify-cards-{mechanical,vector,llm}.ts
Score from the producing pass, where it emits one. Not comparable across sources.
verdictstringuseron demandapps/web/app/(admin)/admin/tags/actions.ts
'accepted' by default; 'rejected' on a source='human' row records that a maintainer removed the tag. A rejection excludes the concept from cards.tags no matter which pass asserts it.

TypeScript model

interface card_concept_associations {
  card_id:      string
  concept_name: string
  relationship: string
  source:       string
  confidence:   number | null
  verdict:      string
}

On this page