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.
| Field | Type | Source | Updated | Written by |
|---|---|---|---|---|
| card_id | string | calculated | on demand | scripts/classify-cards-{mechanical,vector,llm}.ts |
| Oracle-level card (FK → cards.id). | ||||
| concept_name | string | calculated | on demand | scripts/classify-cards-{mechanical,vector,llm}.ts |
| Concept attached to it (FK → game_concepts.name). | ||||
| relationship | string | calculated | on demand | scripts/classify-cards-{mechanical,vector,llm}.ts |
| 'tag' when the card is an instance of the concept; 'context' when it only mentions it. | ||||
| source | string | calculated | on demand | scripts/classify-cards-{mechanical,vector,llm}.ts |
| Which pass produced the association: 'mechanical' (pattern match), 'vector' (embedding similarity), 'llm' (model judgement), or 'human'. | ||||
| confidence | number | null | calculated | on demand | scripts/classify-cards-{mechanical,vector,llm}.ts |
| Score from the producing pass, where it emits one. Not comparable across sources. | ||||
| verdict | string | user | on demand | apps/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
}