political-classification-guide.md

May 3, 2026 · View on GitHub

Hack23 Logo

🏷️ Political Classification Guide

📊 Multi-Dimensional Classification for Swedish Parliamentary Events
🎯 Sensitivity · Domain · Urgency · Political Temperature · Strategic Significance

Owner Version Effective Date Classification

📋 Document Owner: CEO | 📄 Version: 2.5 | 📅 Last Updated: 2026-04-25 (UTC)
🔄 Review Cycle: Quarterly | ⏰ Next Review: 2026-09-01
🏢 Owner: Hack23 AB (Org.nr 5595347807) | 🏷️ Classification: Public


🎯 AI-FIRST Methodology Card

🚦 Read this card before writing a single paragraph. It names the artifact this methodology owns, the gate check it satisfies, the evidence-density target it must hit, and the Pass-1 / Pass-2 discipline required by .github/copilot-instructions.md §5 (AI-FIRST Quality Principle).

FieldValue
Purpose7-dimension event classification (sensitivity, democratic integrity, policy urgency, economic impact, governance impact, political capital, legislative impact) — Step 3 of the AI-driven pipeline.
InputsPer-document analyses (Family E); incoming Riksdag/Government documents; sensitivity policy in Hack23 ISMS CLASSIFICATION.md
Outputsclassification-results.md (Family A) and per-document classification headers (Family E)
Owning artifact(s)classification-results.md
Owning gate checkCheck 1 (existence) + Check 4 cross-reference when classification feeds SWOT/significance
Citation density targetEvery classification row cites ≥ 1 dok_id and the dimension-specific evidence (e.g. KU document + named MP for Democratic Integrity)
Banned phrasesEnforced via political-style-guide.md §Machine-readable banned-phrase list
Threshold sourcereference-quality-thresholds.jsonthresholds[articleType][artifact] (fallback defaults.coreArtifactFloor)

✅ Pass-1 checklist (creation — minimal viable artifact)

  • Score every document on all 7 dimensions; do not omit dimensions even when low-impact
  • Tag sensitivity using the 4-level ladder (Public / Internal / Confidential / Restricted)
  • Produce every required sub-section listed in the owning template
  • Add ≥ 1 evidence anchor (dok_id, vote id, named MP, or primary-source URL) per analytical claim
  • Apply the correct WEP confidence band for the run's horizon (72h / week / month / quarter / year / cycle)
  • Include ≥ 1 themed Mermaid diagram with style … or themeVariables config (where structurally meaningful)
  • Cross-link the relevant template under analysis/templates/ and the gate check it satisfies

🔁 Pass-2 checklist (read-back & improve — AI-FIRST mandatory)

  • Cross-check sensitivity tag against Hack23 ISMS CLASSIFICATION.md for parity
  • For high-urgency events (Urgency=4-5) confirm forward-indicator coverage in Family D
  • Re-read the file end-to-end; flag every claim that lacks an evidence anchor and add one
  • Replace every banned phrase listed in political-style-guide.md §Machine-readable banned-phrase list with an evidence-anchored alternative
  • Tighten WEP language: never above likely without ≥ 3 cycle-aged sources for year/cycle horizons
  • Strengthen Mermaid (color-coded style … directives, themeVariables, ≥ 5 nodes where the structure admits it)
  • Add ≥ 1 second-order effect, cui-bono note, or counterfactual where the artifact admits one
  • Verify citation density meets the per-file target below and the gate's evidence-density rules

🟢 Exemplar (good — pattern-match this)

(classification row) "H902KU14 — Sensitivity=Public; Democratic Integrity=4 (KU oversight petition, Bergstrand (V) 2026-04-19); Policy Urgency=3; Legislative Impact=2 (committee referral pending). Evidence: riksdagen.se/dok/H902KU14 ([A1])."

🔴 Anti-exemplar (failure mode — never ship this)

(failure mode) "This is an important matter for democratic process." — no dimensions scored, no dok_id, no MP, no sensitivity tag.


🔄 Tradecraft Anchors

ElementValueReference
F3EAD StageFINISHClassification is the first analytical step after document-identity establishment
PIRs ServedClassification outputs feed PIR prioritization — high Democratic Integrity → PIR-7; high Coalition Impact → PIR-1See political-style-guide.md §PIR/EEI Catalog
Admiralty FloorClassification claims require ≥[A1] (primary document) plus ≥[B2] contextSee political-style-guide.md §Admiralty Code
WEP RequirementStrategic Significance Assessment uses WEP language for probability of impactSee political-style-guide.md §WEP + ODNI
ICD 203 GateStandard 1 (source quality), 8 (accurate judgments)See political-style-guide.md §ICD 203
SAT(s)Quality of Information CheckSee political-style-guide.md §SATs

🎯 Purpose

This guide provides the authoritative multi-dimensional classification methodology for Swedish parliamentary events processed by Riksdagsmonitor's agentic workflows. Classification is the first analytical step — all subsequent risk assessment, threat analysis, and significance scoring depend on accurate initial classification.

Beyond basic sensitivity/domain/urgency, this methodology includes:

  • Political Temperature Index — a composite score measuring how politically heated an event is
  • Strategic Significance Assessment — evaluating long-term importance vs. short-term news value
  • Coalition Impact Vector — which direction does this push coalition dynamics?

This methodology is inspired by Hack23 ISMS CLASSIFICATION.md. See reference/isms-classification-adaptation.md for the full mapping.


🔒 Sensitivity Levels

Political sensitivity levels are analogous to ISMS confidentiality levels, adapted for a public transparency platform:

graph TD
    A[Incoming Event] --> B{Contains legally sensitive<br/>personal/security data?}
    B -->|Yes| C[🔴 RESTRICTED]
    B -->|No| D{Politically charged:<br/>coalition threat, allegation,<br/>ongoing investigation?}
    D -->|Yes| E[🟡 SENSITIVE]
    D -->|No| F[🟢 PUBLIC]
    
    C --> G[Requires editorial review<br/>before publication]
    E --> H[Requires careful framing<br/>and attribution]
    F --> I[Freely publishable<br/>in standard workflow]
    
    style C fill:#FFEBEE,stroke:#D32F2F
    style E fill:#FFFDE7,stroke:#FFC107
    style F fill:#E8F5E9,stroke:#4CAF50

🟢 PUBLIC

Definition: Routine parliamentary activity that is fully public record, non-controversial, and freely publishable without additional editorial controls.

Examples:

  • Standard committee betänkanden (committee reports) without partisan controversy
  • Routine interpellationer with standard ministerial responses
  • Published SOU (Statens offentliga utredningar) reports
  • Budget implementation reports with no surprise findings
  • New legislation that passed with broad cross-party support

ISMS Analogy: Public / TLP:WHITE — no restrictions on distribution


🟡 SENSITIVE

Definition: Events that are politically charged, involve ongoing controversies, contain allegations against named politicians, or could be misrepresented without careful framing.

Classification Triggers (any one is sufficient):

  • Event directly threatens coalition stability
  • Named politician faces formal allegation or KU granskning
  • Sensitive migration, crime, or security policy dimensions
  • Significant partisan disagreement between coalition partners
  • EU compliance concerns raised
  • Budget figures significantly different from projections

ISMS Analogy: Internal / TLP:GREEN — share within editorial team only


🔴 RESTRICTED

Definition: Events with legal sensitivity, active security dimensions, potential personal data exposure, or that could cause direct harm if published without expert review.

Classification Triggers:

  • Active criminal investigation involving a politician
  • National security information (defence, SÄPO)
  • Personal data of private individuals (not politicians acting in public role)
  • Information subject to ongoing court proceedings (rättegång)
  • Content that may constitute defamation without additional verification

ISMS Analogy: Confidential / TLP:RED — editorial review mandatory before any publication


📋 Policy Domain Taxonomy

⚠️ Title-Only Classification Warning: Domain classification from document titles alone has a ~40% error rate (observed 2026-04-15: housing motions misclassified as labour, asylum motions misclassified as insurance). Title-only classification is LOW confidence. To achieve MEDIUM or higher confidence, the classifier MUST read the document summary or full text via get_dokument_innehall. When only the title is available, classification MUST include the label [LOW confidence — title only].

Sweden's 13 parliamentary domain codes, aligned with Riksdag committee structure:

  • ECO – Economics & Finance (FiU oversight)
    • Budget process
    • Taxation
    • Monetary policy
  • DEF – Defence & Security (FöU oversight)
    • Military capability
    • NATO commitments
    • Civil defence
  • JUS – Justice & Law (JuU oversight)
    • Criminal law
    • Courts
    • Police reform
  • SOC – Social Policy (SoU oversight)
    • Welfare benefits
    • Pension system
    • Disability rights
  • HEA – Health (SoU/HEaU oversight)
    • Healthcare funding
    • Public health
    • Pharmaceuticals
  • EDU – Education (UbU oversight)
    • School reform
    • University funding
    • Research policy
  • ENV – Environment (MJU oversight)
    • Climate targets
    • Biodiversity
    • Water quality
  • AGR – Agriculture (MJU/NäU oversight)
    • Farm subsidies
    • Food security
    • Fishing rights
  • INF – Infrastructure (TU oversight)
    • Transport
    • Housing
    • Digital infrastructure
  • ENE – Energy (NäU oversight)
    • Nuclear policy
    • Renewable targets
    • Grid capacity
  • FOR – Foreign Affairs (UU oversight)
    • EU relations
    • Bilateral treaties
    • NATO coordination
  • MIG – Migration (SfU oversight)
    • Asylum policy
    • Integration
    • Border control
  • CON – Constitution (KU oversight)
    • Electoral law
    • Government formation
    • Parliamentary procedure

Domain Assignment Rules

  1. Always assign a primary domain — if ambiguous, choose the domain of the lead committee
  2. Secondary domains are optional but recommended when event touches multiple areas
  3. CON (Constitution) takes precedence as primary when constitutional norms are at stake
  4. DEF (Defence) takes precedence for national security events regardless of secondary domain
  5. When in doubt, check which Riksdag committee (utskott) has jurisdiction

⏰ Urgency Matrix

Urgency is assessed against the Swedish legislative calendar and real-world impact timelines:

Urgency LevelLegislative TriggerReal-World TriggerMax Delay to Classify
ROUTINEMotion filed; SOU publishedNo immediate action required24–48 hours
🔵 ELEVATEDCommittee report published; debate scheduledGovernment response expected within 2 weeks4–8 hours
🟠 URGENTVote scheduled within 48 hoursImmediate government or policy action required1–2 hours
🔴 CRITICALConstitutional crisis; emergency session calledAcute national security or democracy eventImmediate

Swedish Legislative Calendar Markers

Key dates that automatically elevate urgency:

  • September 20: Budget Proposition (Budgetproposition) — ELEVATED minimum
  • October: Committee review period — ROUTINE unless contested
  • November: Riksdag budget vote — URGENT minimum for budget items
  • April: Spring Amending Budget — ELEVATED minimum
  • June: Spring session close — ELEVATED for pending legislation
  • September (election year): Riksdag election — CRITICAL political environment

Election 2026 Urgency Boosts

In the 12 months before September 2026, apply urgency boost rules for electoral sensitivity:

Document TypeNormal UrgencyElection-Year BoostBoost Condition
Budget propositionsELEVATEDURGENTWithin 6 months of election
Coalition agreements / breakdownsURGENTCRITICALAny time
Welfare, healthcare, migration policyROUTINE/ELEVATED+1 tierVoter salience > HIGH
Criminal justice reformELEVATEDURGENTIf sentencing/police scope is national
Constitutional amendmentsELEVATEDCRITICALAny time
Government confidence votesCRITICALCRITICALNo boost needed — always CRITICAL
Ministerial appointments/resignationsELEVATEDURGENTWithin 3 months of election

Boost rationale: Electoral proximity makes politically salient events more consequential for public discourse and editorial routing. Analysts MUST apply the election-year boost and document the rationale.


📊 Impact Scope Assessment

Use the following evidence-based criteria to assign impact scope:

ScopeGeographicAffected PopulationInternational Dimension
🏘️ LOCALSingle municipality/region<100,000 affectedNone
🇸🇪 NATIONALWhole of Sweden100K–10.5M affectedNone or minor
🇪🇺 EUSweden + EU implicationsSwedish + EU dimensionEU directive, ECJ, Commission
🌍 INTERNATIONALGlobal dimensionInternational treatyNATO, UN, bilateral

🤖 Automated Classification (Scripts Reference)

The following scripts provide automated first-pass classification:

ScriptFunctionOutput
scripts/analysis-framework/index.tsMain analysis pipeline entryClassification JSON
scripts/analysis-framework/lenses/citizen.tsCitizen impact lensSensitivity indicator
scripts/analysis-framework/lenses/economic.tsEconomic domain classifierDomain codes
scripts/analysis-framework/lenses/government.tsGovernment action classifierUrgency indicator
scripts/analysis-framework/lenses/international.tsInternational scope checkerScope level
scripts/analysis-framework/lenses/opposition.tsOpposition response classifierPolitical temperature
scripts/analysis-framework/lenses/media.tsMedia salience estimatorPublic interest score
scripts/analysis-framework/types.tsTypeScript type definitionsClassification schema

Automated classifications should always be reviewed for SENSITIVE and RESTRICTED levels before workflow propagation.



🤖 AI Analysis Protocol for Classification

The AI agent MUST follow this protocol when classifying political documents:

  1. Read this guide — understand sensitivity levels, domain taxonomy, urgency matrix, AND the advanced dimensions below
  2. Extract key fields from the document (title, type, committee, parties involved, date)
  3. Determine sensitivity — PUBLIC (default), SENSITIVE (triggers apply), RESTRICTED (editorial review)
  4. Assign primary domain + up to 2 secondary domains from the 15-domain DomainKey taxonomy (see §Committee→Domain Canonical Mapping below)
  5. Assess urgency using the calendar-aware urgency matrix
  6. Calculate Political Temperature Index — composite score from 5 temperature indicators
  7. Assess Strategic Significance — distinguish short-term news value from long-term importance
  8. Determine Coalition Impact Vector — which direction does this push coalition dynamics?
  9. Score significance per the 5-dimension rubric in significance-scoring.md

Borderline Classification Guidance

When a document falls between two classification levels:

ScenarioResolution
SENSITIVE vs. RESTRICTEDIf any single trigger exceeds threshold, classify as RESTRICTED. When in doubt, err toward higher classification.
ROUTINE vs. ELEVATED urgencyCheck the legislative calendar — if within 2 weeks of a major vote, use ELEVATED.
Domain ambiguityAssign the domain with strongest evidence as primary; use secondary domains for remaining relevance. CON (Constitution) and DEF (Defence) always take precedence when applicable.
Manual vs. automated score divergence (>3 points)Use the higher score and flag for human editorial review with a note explaining the divergence.

🌡️ Advanced Dimension 1: Political Temperature Index

The Political Temperature Index (PTI) is a composite score (0–100) measuring how politically heated an event is — beyond simple sensitivity classification:

graph LR
    PTI["🌡️ Political<br/>Temperature Index<br/>(0-100)"]
    PTI --> P1["📊 Partisan Charge<br/>(0-20)"]
    PTI --> P2["🏛️ Institutional Impact<br/>(0-20)"]
    PTI --> P3["📰 Media Amplification<br/>(0-20)"]
    PTI --> P4["👥 Public Salience<br/>(0-20)"]
    PTI --> P5["⏰ Temporal Pressure<br/>(0-20)"]

    style PTI fill:#D32F2F,color:#FFFFFF
Temperature ComponentScore RangeAssessment Criteria
Partisan Charge0–20How divided are parties? (0=consensus, 20=deep partisan division)
Institutional Impact0–20Does this affect democratic institutions? (0=routine, 20=constitutional crisis)
Media Amplification0–20Is media likely to amplify? (0=below radar, 20=front-page scandal)
Public Salience0–20Does the public care? (0=technical, 20=pocketbook/safety issue)
Temporal Pressure0–20How urgent is action? (0=no deadline, 20=imminent crisis)

Temperature Classification

PTI ScoreTemperatureColourImplication
0–20❄️ Cold🔵 BlueRoutine; standard monitoring
21–40🌤️ Warm🟢 GreenActive interest; regular reporting
41–60🔥 Hot🟡 YellowPolitically significant; priority analysis
61–80🔥🔥 Very Hot🟠 OrangeCrisis-adjacent; intensive monitoring
81–100🌋 Explosive🔴 RedConstitutional/political crisis; immediate response

🎯 Advanced Dimension 2: Strategic Significance Assessment

Not all politically heated events have long-term significance, and some seemingly routine events have major strategic importance. Distinguish news value (short-term) from strategic significance (long-term):

DimensionNews Value (Short-Term)Strategic Significance (Long-Term)
Time horizonToday's headlinesNext 6–24 months
Question"Will this make the news?""Will this change the political landscape?"
IndicatorsMedia interest, public reactionInstitutional change, precedent setting
Example (high news, low strategic)Minister's gaffe goes viral"Temporary embarrassment, no policy change"
Example (low news, high strategic)Technical SOU on pension reform"Quietly reshapes retirement policy for 10M Swedes"

Strategic Significance Score (1–5)

ScoreLevelCriteria
1EphemeralNo lasting impact; forgotten within a week
2RoutineStandard political activity; minor adjustments
3SignificantAffects a policy domain meaningfully for 6+ months
4MajorReshapes political dynamics; affects coalition/opposition positioning
5TransformativeChanges Swedish governance, institutions, or democratic norms

🧭 Advanced Dimension 3: Coalition Impact Vector

For every classified event, assess its impact on coalition dynamics using a directional vector:

VectorDescriptionExample
→ StabilisingStrengthens coalition cohesion or majorityBudget passes with full coalition + SD support
← DestabilisingWeakens coalition cohesion or threatens majoritySD publicly criticises government on migration
↕ NeutralNo significant impact on coalition dynamicsRoutine committee report on agriculture
↗ OpportunityCreates an opening for coalition to strengthen positionPopular policy initiative with cross-party support
↘ VulnerabilityExposes coalition weakness that opposition may exploitKU investigation reveals government negligence

📡 MCP Data Sources for Classification

The riksdag-regering-mcp server provides direct access to Swedish parliamentary data for classification. Each Riksdag document type maps to a specific MCP tool and carries a default classification baseline:

Riksdag Document TypeMCP ToolClassification BaselineElevation Triggers
Betänkande (committee report)get_betankandenHIGHFiscal policy (FiU), constitutional matters (KU)
Proposition (government bill)get_propositionerHIGHAll government bills carry legislative weight
Motion (parliamentary motion)get_motionerMEDIUMCross-party co-sponsorship; opposition joint motions
Interpellationget_interpellationerMEDIUMMinisterial evasion; repeated follow-up questions
Skriftlig fråga (written question)get_fragorROUTINEElevated for oral questions (muntlig fråga)
Votering (vote record)search_voteringarMEDIUMContested votes; coalition splits; narrow margins
Anförande (speech/debate)search_anforandenROUTINEElevated for party leader statements; budget debates

Committee-Specific Baseline Elevations

The 16 standing committees (utskott) influence classification baseline:

CommitteeCodeDefault ElevationRationale
FinansutskottetFiU+1 levelBudget and fiscal policy
JustitieutskottetJuU+1 levelCriminal law and courts
KonstitutionsutskottetKU+1 levelConstitutional oversight (granskning)
SocialförsäkringsutskottetSfUContext-dependentMigration policy sensitivity
UtrikesutskottetUU+1 levelForeign policy, NATO, EU
FörsvarsutskottetFöU+1 levelDefence and national security
SocialutskottetSoUStandardUnless healthcare crisis
UtbildningsutskottetUbUStandardUnless school reform controversy
Miljö- och jordbruksutskottetMJUStandardUnless climate policy debate
NäringsutskottetNäUContext-dependentEnergy and nuclear policy sensitivity
TrafikutskottetTUStandardUnless major infrastructure controversy
SkatteutskottetSkU+1 levelTax policy impacts all citizens
ArbetsmarknadsutskottetAUContext-dependentLabour market sensitivity
CivilutskottetCUStandardUnless housing crisis
KulturutskottetKrUStandardUnless media/press freedom
EU-nämndenEUN+1 levelEU mandate decisions

🔄 MCP-Integrated Classification Workflow

When using riksdag-regering-mcp tools for automated classification, follow this step-by-step protocol:

  1. Read this guide — understand sensitivity levels, domain taxonomy, urgency matrix, and all advanced dimensions
  2. Extract key fields using MCP tools — fetch document metadata (title, dok_id, doktyp, committee/organ, parties involved, date/datum)
  3. Determine sensitivity level — apply the decision tree: PUBLIC (default), SENSITIVE (any trigger from §2 applies), RESTRICTED (requires editorial review before publication)
  4. Assign primary policy domain from the Swedish 16-committee taxonomy (FiU→ECO, JuU→JUS, KU→CON, FöU→DEF, UU→FOR, SfU→MIG, etc.)
  5. Assess urgency using the parliamentary calendar — cross-reference get_calendar_events for upcoming votes and debates
  6. Score significance per the 5-dimension rubric: Partisan Charge, Institutional Impact, Media Amplification, Public Salience, Temporal Pressure

MCP Tool Selection by Document Type

graph TD
    START["📋 Classification Task"] --> DOCTYPE{Document Type?}

    DOCTYPE -->|Committee Report| BET["get_betankanden<br/>→ Baseline: HIGH"]
    DOCTYPE -->|Government Bill| PROP["get_propositioner<br/>→ Baseline: HIGH"]
    DOCTYPE -->|Motion| MOT["get_motioner<br/>→ Baseline: MEDIUM"]
    DOCTYPE -->|Interpellation| INTER["get_interpellationer<br/>→ Baseline: MEDIUM"]
    DOCTYPE -->|Written Question| FRAG["get_fragor<br/>→ Baseline: ROUTINE"]
    DOCTYPE -->|Vote Record| VOT["search_voteringar<br/>→ Baseline: MEDIUM"]
    DOCTYPE -->|Speech/Debate| ANF["search_anforanden<br/>→ Baseline: ROUTINE"]

    BET --> ENRICH["Enrich with context:<br/>get_dokument_innehall<br/>search_voteringar<br/>search_anforanden"]
    PROP --> ENRICH
    MOT --> ENRICH
    INTER --> ENRICH
    FRAG --> ENRICH
    VOT --> ENRICH
    ANF --> ENRICH

    ENRICH --> CLASSIFY["Apply classification<br/>methodology"]

    style BET fill:#FFEBEE,stroke:#D32F2F
    style PROP fill:#FFEBEE,stroke:#D32F2F
    style MOT fill:#FFFDE7,stroke:#FFC107
    style INTER fill:#FFFDE7,stroke:#FFC107
    style FRAG fill:#E8F5E9,stroke:#4CAF50
    style VOT fill:#FFFDE7,stroke:#FFC107
    style ANF fill:#E8F5E9,stroke:#4CAF50
    style CLASSIFY fill:#E3F2FD,stroke:#2196F3

🔀 Sensitivity Level Decision Tree (MCP-Enhanced)

Use this decision tree when processing documents fetched via riksdag-regering-mcp:

graph TD
    A["📄 Incoming Riksdag Document<br/>(via riksdag-regering-mcp)"] --> B{Contains legally<br/>sensitive data?<br/><em>Personal data, SÄPO,<br/>ongoing court proceedings</em>}
    B -->|Yes| C["🔴 RESTRICTED<br/>Editorial review mandatory"]
    B -->|No| D{Politically charged?<br/><em>Coalition threat,<br/>ministerial crisis,<br/>KU granskning</em>}
    D -->|Yes| E["🟡 SENSITIVE<br/>Careful framing required"]
    D -->|No| F["🟢 PUBLIC<br/>Standard workflow"]

    C --> G["⚠️ Route to senior editor<br/>Do NOT auto-publish"]
    E --> H["📝 Apply attribution rules<br/>from political-style-guide.md"]
    F --> I["✅ Classify and publish<br/>via standard pipeline"]

    style A fill:#E3F2FD,stroke:#2196F3
    style C fill:#FFEBEE,stroke:#D32F2F,color:#B71C1C
    style E fill:#FFFDE7,stroke:#FFC107,color:#F57C00
    style F fill:#E8F5E9,stroke:#4CAF50,color:#1B5E20
    style G fill:#FFCDD2,stroke:#EF5350
    style H fill:#FFF9C4,stroke:#FFD54F
    style I fill:#C8E6C9,stroke:#81C784

⚖️ Borderline Classification Guidance (MCP Context)

When automated classification via MCP tools produces ambiguous results:

ScenarioResolutionMCP Verification
SENSITIVE vs. RESTRICTEDErr toward RESTRICTED (higher classification). If any single trigger exceeds threshold, classify RESTRICTED.Cross-reference search_voteringar for contested votes; check get_interpellationer for ministerial evasion patterns
ROUTINE vs. ELEVATED urgencyCheck parliamentary calendar — within 2 weeks of major vote → ELEVATEDUse get_calendar_events to verify upcoming Riksdag schedule
Domain ambiguityAssign strongest-evidence domain as primary; use secondary domains for remaining relevance. constitutional and defence always take precedence.Verify committee assignment via get_dokument metadata (organ field)
Manual vs. automated divergenceUse the higher score and flag for human editorial review with divergence noteCompare MCP-extracted data against manual analysis; document discrepancy

⚠️ Classification Quality Gate

🚫 Anti-Pattern Warning: Classification output without all three of the following is REJECTED by the pipeline:

  1. Explicit sensitivity level (PUBLIC / SENSITIVE / RESTRICTED)
  2. Domain key from the 15-domain DomainKey taxonomy (fiscal, defence, justice, healthcare, education, environment, labour, housing, transport, trade, eu-foreign, migration, constitutional, culture, social-insurance) — see §Committee→Domain Canonical Mapping
  3. Urgency level (ROUTINE / ELEVATED / URGENT / CRITICAL)

Incomplete classifications are returned to the originating agent for remediation. No downstream processing (risk scoring, significance assessment, publication) proceeds until all three fields are present.


🏛️ Committee→Domain Canonical Mapping (v2.2)

This table is the authoritative single source of truth for mapping Riksdag committee codes to policy domains. Both the TypeScript classification code (scripts/data-transformers/constants/committee-names.ts: COMMITTEE_TO_DOMAIN) and AI analysis agents reference this table. Any discrepancy should be resolved by updating the code to match this document.

Primary Mapping: 15 Riksdag Committees → Policy Domains

Committee CodeCommittee Name (Swedish)Committee Name (English)Domain KeyDomain Display NameClassification Priority
AUArbetsmarknadsutskottetCommittee on Labour Market AffairslabourLabour MarketStandard
CUCivilutskottetCommittee on Civil AffairshousingHousing & Civil LawStandard
FiUFinansutskottetCommittee on FinancefiscalFiscal PolicyElevated (budget)
FöUFörsvarsutskottetCommittee on DefencedefenceDefence & SecurityElevated (security)
JuUJustitieutskottetCommittee on JusticejusticeJustice & LawStandard
KUKonstitutionsutskottetCommittee on the ConstitutionconstitutionalConstitutional AffairsElevated (oversight)
KrUKulturutskottetCommittee on Cultural AffairscultureCulture & MediaStandard
MJUMiljö- och jordbruksutskottetCommittee on Environment and AgricultureenvironmentEnvironment & AgricultureStandard
NUNäringsutskottetCommittee on Industry and TradetradeIndustry & TradeStandard
SkUSkatteutskottetCommittee on TaxationfiscalFiscal PolicyElevated (taxation)
SfUSocialförsäkringsutskottetCommittee on Social Insurancesocial-insuranceSocial InsuranceStandard
SoUSocialutskottetCommittee on Social AffairshealthcareHealthcare & Social AffairsStandard
TUTrafikutskottetCommittee on TransporttransportTransport & InfrastructureStandard
UbUUtbildningsutskottetCommittee on EducationeducationEducation & ResearchStandard
UUUtrikesutskottetCommittee on Foreign Affairseu-foreignEU & Foreign AffairsElevated (external)

Classification Priority Notes

  • Elevated committees (FiU, FöU, KU, SkU, UU) produce documents that default to ELEVATED urgency baseline due to their institutional significance
  • FiU + SkU both map to fiscal domain — the committee code distinguishes spending (FiU) from revenue (SkU) context
  • KU documents involving granskning (constitutional review) default to SENSITIVE classification

Usage in Classification Pipeline

flowchart LR
    DOC["📄 Riksdag Document<br/>with organ field"]
    DOC --> CHECK{"organ in<br/>COMMITTEE_TO_DOMAIN?"}
    CHECK -->|"Yes"| HIGH["✅ Domain assigned<br/>Confidence: HIGH"]
    CHECK -->|"No / missing"| FALLBACK["🔍 Keyword heuristics<br/>Confidence: LOW"]

    style DOC fill:#E3F2FD,stroke:#2196F3
    style HIGH fill:#C8E6C9,stroke:#4CAF50
    style FALLBACK fill:#FFF9C4,stroke:#FFD54F

Rule: Committee-code classification is always PRIMARY (HIGH confidence). Keyword-based domain detection is FALLBACK only (LOW confidence). When both are present, the committee-code result takes precedence.

Code Reference

// Source: scripts/data-transformers/constants/committee-names.ts
export const COMMITTEE_TO_DOMAIN = {
  AU: 'labour',
  CU: 'housing',
  FiU: 'fiscal',
  FöU: 'defence',
  JuU: 'justice',
  KU: 'constitutional',
  KrU: 'culture',
  MJU: 'environment',
  NU: 'trade',
  SkU: 'fiscal',
  SfU: 'social-insurance',
  SoU: 'healthcare',
  TU: 'transport',
  UbU: 'education',
  UU: 'eu-foreign'
} as const;

Maintenance rule: If a new committee is created or an existing committee is renamed, update BOTH this table AND the TypeScript constant in the same PR.


Document Control:

  • Path: /analysis/methodologies/political-classification-guide.md
  • ISMS Reference: CLASSIFICATION.md
  • Version: 2.3
  • Advanced Dimensions: Political Temperature Index, Strategic Significance, Coalition Impact Vector, Election 2026 Context
  • Key Changes v2.3: Added Election 2026 classification context (electoral sensitivity boost rules for pre-election period), 5-level confidence scale integration, enhanced urgency criteria for election-year events
  • Key Changes v2.2: Committee→Domain Canonical Mapping (15 committees with domain keys, classification priorities, Mermaid pipeline diagram, code reference)
  • MCP Integration: riksdag-regering-mcp tool mapping, committee-specific baselines
  • Classification: Public
  • Next Review: 2026-09-01