{% extends "v2/base.html" %} {% block title %}Methodik — GWÖ-Antragsprüfer{% endblock %} {% set v2_active_nav = "" %} {% block head_extra %} {% endblock %} {% block main %}

Methodik

GWÖ-Matrix 2.0 · Gemeinden · Transparenz-Dokumentation

Was ist die Gemeinwohl-Ökonomie?

Die Gemeinwohl-Ökonomie (GWÖ) ist ein Wirtschaftsmodell, das den Erfolg wirtschaftlichen Handelns nicht am Gewinn, sondern am Beitrag zum Gemeinwohl misst. Entwickelt von Christian Felber (2010), trägt die GWÖ eine internationale Bewegung mit über 11.000 Unterstützer:innen, 4.500 Mitgliedern und 1.000 bilanzierten Organisationen.

Das Bewertungsmodell: die Gemeinwohl-Bilanz

Das Kernstück ist die Gemeinwohl-Bilanz: ein standardisiertes Bewertungsverfahren nach einer Matrix aus fünf Werten (Menschenwürde, Solidarität, ökologische Nachhaltigkeit, soziale Gerechtigkeit, Transparenz & Demokratie) und fünf Berührungsgruppen. Die aktuelle Unternehmens-Matrix (Version 5.1) ist in über 35 Ländern erprobt.

Arbeitsbuch Unternehmen 5.1 (PDF) · Matrix-Übersicht

Adaption für die öffentliche Hand

Für Gemeinden gibt es seit 2017 das Arbeitsbuch für Gemeinden Version 2.0. Es überträgt die Unternehmens-Matrix auf kommunale Handlungsfelder: statt „Kund:innen" stehen Bürger:innen im Fokus, statt „Lieferkette" geht es um öffentliche Beschaffung. Eine aktualisierte Version 2.1.A läuft seit 2023 im Pilotbetrieb.

Arbeitsbuch Gemeinden 2.0 (PDF) · Version 2.1.A Pilotfassung (PDF)

Anwendung auf Parlamentsanträge

Dieser Antragsprüfer nutzt die Gemeinde-Matrix 2.0 als Bewertungsrahmen und wendet sie systematisch auf Parlamentsanträge aller deutschen Landtage und des Bundestags an. Parlamentsanträge gestalten die Rahmenbedingungen, unter denen Gemeinden handeln — ihre Gemeinwohl-Wirkung zu messen macht sie vergleichbar und transparent.

Was macht der GWÖ-Antragsprüfer?

Jeder Antrag wird automatisch analysiert und erhält:

  • GWÖ-Score (0–10) — wie stark fördert oder widerspricht der Antrag den fünf Gemeinwohl-Werten?
  • Empfehlung & Bewertungs-Sicherheit — qualitative Einordnung („Uneingeschränkt unterstützen" … „Ablehnen") plus eine Sicherheits-Angabe (hoch/mittel/niedrig), wie selbstsicher das Sprachmodell in dieser Einordnung ist (wissenschaftlich: Konfidenz).
  • 25-Felder-Matrix — detaillierte Bewertung für jede Kombination aus Berührungsgruppe und Wert
  • Schwerpunkt-Felder — die Top-Felder der Matrix, die den Score am stärksten treiben
  • Themen-Tags & Kernforderungen — automatische Themen-Klassifikation und Bullet-Liste der zentralen Forderungen des Antrags
  • Wahlprogramm-Treue — wie gut passt der Antrag zu den Wahl- und Grundsatzprogrammen der Fraktionen, belegt mit verifizierten Zitaten?
  • Verbesserungsvorschläge — konkrete Textänderungen im Redline-Format
  • Abstimmungsergebnis & Wahlprogramm-Konflikt-Marker — fraktions-aggregierte Abstimmung aus dem Plenarprotokoll, plus Hinweis-Symbole, wenn eine Fraktion gegen das eigene Wahlprogramm stimmt (siehe Abschnitt Stimmverhalten).
  • Ähnliche Anträge & News-Match — verwandte Drucksachen aus anderen Bundesländern (per Embedding-Ähnlichkeit) und aktuelle Pressemeldungen, die thematisch zu diesem Antrag passen.

Ziel ist Transparenz: Bürger:innen können nachvollziehen, welche Anträge dem Gemeinwohl dienen — und welche dagegen arbeiten. Die Bewertungen sind öffentlich, maschinenlesbar (JSON/CSV/Atom-Feed) und unter CC BY 4.0 lizenziert.

Die GWÖ-Matrix 2.0 für Gemeinden

5 Berührungsgruppen (Zeilen) × 5 Werte (Spalten) = 25 Bewertungsfelder. Jedes Feld wird von −5 (fundamental widersprechend) bis +5 (stark fördernd) bewertet. Der GWÖ-Score (0–10) ist ein gewichteter Durchschnitt.

Die fünf Werte (Spalten)

WertLeitfrage
1. MenschenwürdeWerden Grundrechte geschützt? Rechtliche Gleichstellung? Schutz vor Diskriminierung?
2. SolidaritätWird das Gemeinwohl gefördert? Mehrwert für die Gemeinschaft? Kooperation statt Konkurrenz?
3. Ökologische NachhaltigkeitKlimaschutz? Ressourcenschonung? Biodiversität? Kreislaufwirtschaft?
4. Soziale GerechtigkeitGerechte Verteilung? Daseinsvorsorge? Soziale Absicherung? Chancengleichheit?
5. Transparenz & DemokratieBürgerbeteiligung? Offenlegung? Demokratische Prozesse? Rechenschaftspflicht?

Die fünf Berührungsgruppen (Zeilen)

GruppeWer ist gemeint?
A · Lieferant:innenExterne Beschaffung, Lieferketten, Dienstleister:innen
B · FinanzenUmgang mit öffentlichen Mitteln, Haushalt, Steuerzahler:innen
C · VerwaltungMandatsträger:innen, Mitarbeitende, Ehrenamtliche
D · Bürger:innenWirkung innerhalb der Grenzen, Daseinsvorsorge
E · Gesellschaft & NaturWirkung über die Grenzen hinaus, Zukunft

Alle 25 Felder

Klick auf ein Feld für Details.

Menschenwürde
Solidarität
Ökologische Nachhaltigkeit
Soziale Gerechtigkeit
Transparenz & Mitbestimmung
A · Lieferant:innen
A1
Grundrechte Lieferkette
A2
Nutzen Gemeinde
A3
Ökol. Verantwortung
A4
Soziale Verantwortung
A5
Rechenschaft
B · Finanzen
B1
Eth. Finanzgebaren
B2
Gemeinnutz
B3
Ökol. Finanzpolitik
B4
Soz. Finanzpolitik
B5
Partizipation
C · Verwaltung
C1
Gleichstellung
C2
Gemeinsame Ziele
C3
Ökol. Verhalten
C4
Gerechte Arbeit
C5
Transparenz intern
D · Bürger:innen
D1
Rechtsgleichheit
D2
Gesamtwohl
D3
Ökol. Leistung
D4
Soz. Leistung
D5
Demokratie
E · Gesellschaft & Natur
E1
Zukunft
E2
Beitrag Gesamtwohl
E3
Ökol. Auswirkungen
E4
Sozialer Ausgleich
E5
Demokratie global
Bewertungsskala
SymbolRatingBedeutung
+++4 bis +5Stark fördernd, vorbildlich
++1 bis +3Fördernd
0Neutral / nicht berührt
−1 bis −3Widersprechend
−−−4 bis −5Stark widersprechend

Analyse-Pipeline

1
Antragstext laden
Der PDF-Volltext wird aus dem Landtags-Portal geholt ({{ adapter_count }} Parlamente angebunden). Nur echte Anträge und Gesetzentwürfe werden analysiert — Kleine Anfragen werden übersprungen.
2
Wahlprogramm-Passagen suchen
Per semantischer Suche ({{ embedding_model }}, 1024 Dimensionen) werden für jede Fraktion die thematisch relevantesten Passagen aus Wahl- und Grundsatzprogrammen gefunden. Aktuell {{ programme_count }} Programme mit {{ chunk_count }} Textabschnitten indexiert.
3
KI-Bewertung
Ein Sprachmodell ({{ model_name }}) bewertet den Antrag anhand der GWÖ-Matrix und vergleicht ihn mit den gefundenen Programmpassagen. Der Prompt erzwingt die Verwendung wörtlicher Zitate.
4
Zitat-Verifikation (partei-skopiert)
Jedes Zitat wird server-seitig verifiziert: der Text muss als Substring (oder 5-Wort-Anker) in einem retrieten Chunk derselben Partei auffindbar sein. Quellenangabe und Seitenzahl werden aus dem echten Treffer rekonstruiert — die Modell-Ausgabe wird für diese Felder verworfen.
Wenn der Text wortgleich auch in einem fremden Programm vorkommt (z. B. „Eine Schulden- und Haftungsunion lehnen wir ab" steht in mehreren Programmen), wird das Zitat nicht mit fremder Quelle markiert — sondern verworfen. Lieber 0 Zitate als ein Misattributions-Zitat.
Technische Details
EigenschaftWert
Sprachmodell{{ model_name }} (DashScope / Alibaba Cloud)
Embedding-Modell{{ embedding_model }} (1024 Dimensionen)
Chunk-Größe400 Wörter, 50 Wörter Overlap
Retry bei Parse-Fehlern3 Versuche mit steigender Temperatur
Zitat-VerifikationSubstring- oder 5-Wort-Anker-Match gegen Original-PDF

Bewertungs-Kontext: gegen welches Programm wird gemessen?

Jeder Antrag trägt ein Datum (Einbringungsdatum). Welches Wahlprogramm gilt für eine Partei am 10. September 2025 eigentlich? Die Antwort ist nicht "das aktuellste, das auf der Parteiwebseite liegt" — sondern: das, gegen das die Partei zur Wahl angetreten ist und das mit der Vereidigung der Regierung politisch wirksam wurde.

Im Antrag-Detail steht deshalb ein Kasten "Bewertungs-Kontext" mit drei Angaben:

  • Wahlperiode — welche Legislatur lief zum Antragsdatum (z. B. NRW WP18 seit Konstituierung 01.06.2022)
  • Regierung zur Antragszeit — Kabinett + Koalitionsparteien + Vereidigungsdatum (z. B. Wüst II CDU+GRÜNE seit 29.06.2022). Bei Sukzessionen ohne Wahl (z. B. RP Dreyer III → Schweitzer I am 10.07.2024) wird das tatsächlich amtierende Kabinett ausgewiesen.
  • Wahlprogramme, gegen die der Antrag inhaltlich gemessen wurde, mit Geltungsdatum + PDF-Link. Plus ein Snapshot-Hinweis: zu welchem Datum mit welchem LLM-Modell die Bewertung erstellt wurde.

Die zugrundeliegende Datenbasis (16 Bundesländer + Bund × bis zu 8 Parteien × Wahlprogramme + 12 Bundes- und Landes-Grundsatzprogramme; 56 Wahlperioden, 70 Regierungen historisch) liegt in den Modulen app/programme.py und app/legislaturen.py. Architektur-Details in ADR 0013.

Hinweis: aktuell sind im Embeddings-Index nur die jeweils gegenwärtigen Wahlprogramme indiziert. Antragsbewertungen aus früheren Wahlperioden zeigen den jetzigen Programm-Stand, nicht den damaligen. Das ist eine bewusste Etappe — die Architektur ist für historische Indexierung vorbereitet.

Stimmverhalten & Marker

Wenn fraktions-aggregierte Plenum-Abstimmungen vorliegen, vergleicht der Prüfer das Stimmverhalten jeder Fraktion mit ihrem eigenen Wahlprogramm-Score für genau diesen Antrag und setzt — falls auffällig — kleine Hinweis-Symbole neben den Fraktions-Pill:

Symbol Konstellation Schwelle Wissenschaftlicher Begriff
Fraktion stimmt mit Nein, obwohl der Antrag inhaltlich gut zu ihrem Wahlprogramm passt Wahlprogramm-Score ≥ 7 / 10 Heuchelei-Indikator
! Fraktion stimmt mit Ja, obwohl der Antrag schlecht zum eigenen Wahlprogramm passt Wahlprogramm-Score < 3 / 10 Opportunismus-Indikator

In der Bürger:innen-Ansicht (v3) werden beide Symbole unter dem neutraleren Sammelbegriff „Wahlprogramm-Konflikt" geführt; die wissenschaftliche Klassifikation erscheint im Tooltip beim Hovern.

Konsistenz-Hinweis (Empfehlung vs. Beschluss)

Über jedem Abstimmungsergebnis steht ein Hinweis, ob die parlamentarische Mehrheit der GWÖ-Empfehlung folgt. Beispiele:

  • Mehrheit deckt sich mit GWÖ-Empfehlung — der Antrag wurde angenommen, und der Prüfer empfahl Zustimmung; oder umgekehrt.
  • Mehrheit gegen GWÖ-Empfehlung — der Beschluss läuft inhaltlich der Gemeinwohl-Empfehlung entgegen.

Die Logik ist deterministisch (kein LLM beteiligt) und in app/marker.py dokumentiert + getestet.

LLM-Prompts

Volle Transparenz: hier liegen die exakten Anweisungen, mit denen das Sprachmodell ({{ model_name }}) jeden Antrag bewertet.

Wie System- und User-Prompt zusammenwirken

Beide Prompts werden in einem einzigen API-Call gesendet — nicht getrennt ausgeführt. Sie fließen gemeinsam ins Modell-Kontextfenster und werden zusammen bewertet.

System-Prompt (statisch, ~5 KB) User-Prompt (dynamisch, pro Antrag)
Wer und wie bewertet wird: GWÖ-Matrix-Definition, 25 Felder, Bewertungs-Skala, Empfehlungs-Kategorien, Ausgabe-JSON-Schema, strenge Regeln (max. 3 Verbesserungs­vorschläge, wörtliche Zitate, …). Was bewertet wird: BL-Spezifika, semantisch gefundene Wahlprogramm-Chunks, der Antragstext selbst, Pflicht-Fraktionen-Liste.

Das Modell wendet die Matrix-Definition aus dem System-Prompt auf den Antragstext aus dem User-Prompt an. Ohne System-Prompt wüsste es nicht wonach es bewerten soll; ohne User-Prompt hätte es nichts zu bewerten.

Warum die Trennung?

  • Caching: Der API-Anbieter cached den System-Prompt — pro neuem Antrag werden nur die User-Tokens verrechnet.
  • Modell-Compliance: Sprachmodelle behandeln System-Anweisungen mit höherem Vertrauen, was robuster gegen Prompt-Injection aus dem Antragstext ist.
  • Wartbarkeit: statische Bewertungs-Regeln getrennt vom dynamischen Inhalt — leichter zu pflegen, leichter zu auditieren.

Quelle: app/analyzer.py (get_system_prompt() und get_user_prompt_template()); API-Aufruf in app/adapters/qwen_bewerter.py (Zeilen 83–85, messages=[{"role":"system",…}, {"role":"user",…}]).

Die Prompts im Wortlaut

Der User-Prompt unten ist als Template abgebildet — die Platzhalter {kontext}, {wahlprogramm_zitate}, {antrag} und {pflicht_fraktionen} werden pro Antrag mit den konkreten Inhalten gefüllt.

System-Prompt anzeigen ({{ system_prompt|length }} Zeichen)
{{ system_prompt }}
User-Prompt-Template anzeigen ({{ user_prompt_template|length }} Zeichen)
{{ user_prompt_template }}

Qualitätssicherung

  • Partei-skopierte Zitat-Verifikation — jedes Zitat wird gegen die Chunks derselben Partei geprüft (Substring oder 5-Wort-Anker). Wortgleiche Treffer in einem fremden Programm zählen nicht; das Zitat wird in dem Fall verworfen statt mit fremder Quelle markiert.
  • Score-Cap-Invariante — ein einziges Matrix-Feld mit Rating ≤ −4 deckelt den Gesamt-Score auf maximal 3 / 10. Verstöße werden im Server-Log als Warning protokolliert.
  • Typ-Filterung — nur abstimmbare Drucksachen (Anträge, Gesetzentwürfe) werden bewertet. Kleine Anfragen, Antworten und Bundesrats-Drucksachen werden übersprungen.
  • Manuelle Neu-Analyse — auf jeder Detail-Seite gibt es einen „Neu analysieren"-Button, der den Antrag mit der aktuellen Pipeline frisch bewertet.
  • Property-Tests & Fixture-Tests — Zitat-Binding, Marker-Logik und Score-Cap sind in tests/ mit deterministischen Fixtures abgesichert (siehe ADR 0003 + 0008).
  • Open Data — alle Bewertungen sind als JSON und CSV exportierbar (CC BY 4.0).

Einschränkungen

  • Wertebasierte Einordnung, keine Rechtsprüfung
  • KI-Bias — Sprachmodelle können systematische Verzerrungen aufweisen. Bewertungen sind Orientierung, nicht objektive Wahrheit.
  • Programmabhängig — Fraktionen ohne hinterlegtes Wahlprogramm erhalten keinen Programm-Vergleich. Der Antrag-Detailseite zeigt diese Lücke explizit als Hinweis am Programm-Treue-Block.
  • Aktuelles Programm, nicht historisch — derzeit wird jede Fraktion gegen das jeweils aktuell hinterlegte Wahl-/Grundsatzprogramm bewertet. Bei älteren Anträgen aus früheren Wahlperioden ist das u.U. nicht das Programm, das zum Zeitpunkt der Antragstellung galt (Issue #186 — Behebung in Arbeit).
  • Antragstext, nicht Umsetzung — bewertet wird was im Antrag steht, nicht ob es umgesetzt wird.
  • Drucksachen-Eindeutigkeit — der Prüfer löst Drucksachen aktuell nur über die Nummer auf. In seltenen Fällen gleicher Nummern in verschiedenen Bundesländern wählt der Detail-Permalink den ersten DB-Match.

Datenquellen

{{ adapter_count }} Parlamente angebunden:

{% for bl in bundeslaender %} {% endfor %}
Parlament Doku-System Drucksachen Plenum-Votes
{{ bl.name }} ({{ bl.code }}) {{ bl.doku_system }} ✓ aktiv {% if bl.code in plenum_vote_parsers %} ✓ aktiv {% else %} ○ Stub {% endif %}

Plenum-Votes = fraktions-aggregierte Abstimmungs­ergebnisse aus den Plenarprotokollen (#106). Dort wo der Parser aktiv ist, zeigt die Antrag-Detail-Seite einen Block „Abstimmungs­ergebnis" mit Ja/Nein/Enthaltung pro Fraktion. Stubs sind Tracking-Stellen fuer kuenftige Implementierungen (Issues #148–#163).

Programme & Quellen · Open Data (JSON) · Atom-Feed · Quellcode

Versionsstand

KomponenteStand
Sprachmodell{{ model_name }}
Embedding-Modell (READ){{ embedding_model }} (1024 Dimensionen)
Indexierte Programme{{ programme_count }} mit {{ chunk_count }} Textabschnitten
Angebundene Parlamente{{ adapter_count }} (16 Bundesländer + Bundestag)
GWÖ-Matrix2.0 Gemeinden (Arbeitsbuch 2017, Pilot 2.1.A 2023)
Bewertungs-Skala−5 … +5 pro Matrix-Feld; 0 … 10 als Gesamt-Score
Citation-Verificationpartei-skopiert seit Mai 2026 (Issue #175-bug fix)

Diese Tabelle wird live aus dem System gerendert — die Werte sind genau die Konfiguration, mit der Bewertungen jetzt erstellt werden.

{# .meth-body #}
{# .meth-layout #} {% endblock %} {% block body_scripts %} {% endblock %}