# GWÖ-Antragsprüfer — Dokumentation *Stand: 24. März 2026, 22:15* --- ## 0. Datenbank Alle Bewertungen werden in einer SQLite-Datenbank gespeichert: `gwoe-antraege.db` ```bash # DB initialisieren (einmalig) sqlite3 gwoe-antraege.db < scripts/init-db.sql # Übersicht aller Anträge sqlite3 -header -column gwoe-antraege.db "SELECT * FROM v_antraege_uebersicht;" # Statistik nach Fraktion sqlite3 -header -column gwoe-antraege.db "SELECT * FROM v_statistik_fraktionen;" # Themen-Ranking sqlite3 -header -column gwoe-antraege.db "SELECT * FROM v_themen_ranking;" ``` Schema: siehe `scripts/init-db.sql` und `prompt-gwoe-antragspruefer-v4.md` --- ## 1. Batch-Workflow ### Vollautomatisiert ```bash # Einzelner Antrag ./scripts/process_single.sh 18-18102 # Batch aus Datei ./scripts/gwoe-batch.sh --batch neue-antraege.txt # Alle neu rendern ./scripts/gwoe-batch.sh --render-all ``` ### Manuell (Schritt für Schritt) ```bash # 1. PDF herunterladen curl -sL "https://www.landtag.nrw.de/portal/WWW/dokumentenarchiv/Dokument/MMD18-18102.pdf" \ -o antraege/18-18102.pdf # 2. Text extrahieren pdftotext -layout antraege/18-18102.pdf antraege/18-18102.txt # 3. LLM analysieren (manuell oder via API) # → JSON in assessments.json einfügen # 4. data.ts aktualisieren cat assessments.json > quarto-report/src/data.ts # vereinfacht # 5. Quarto rendern cd quarto-report && npm run generate cd reports && quarto render gwoe-18-18102.qmd --to pdf # 6. Mit Original mergen pdftk quarto-report/reports/gwoe-18-18102.pdf antraege/18-18102.pdf \ cat output output/gwoe-bericht-18-18102.pdf ``` ### API-Aufruf (Claude) ```bash curl -sS https://api.anthropic.com/v1/messages \ -H "Content-Type: application/json" \ -H "x-api-key: $ANTHROPIC_API_KEY" \ -H "anthropic-version: 2023-06-01" \ -d '{ "model": "claude-sonnet-4-20250514", "max_tokens": 4096, "system": "", "messages": [{"role": "user", "content": ""}] }' ``` --- ## 1. Überblick Der GWÖ-Antragsprüfer bewertet parlamentarische Anträge (aktuell: NRW Landtag) systematisch nach drei Dimensionen: 1. **GWÖ-Treue (0-10):** Übereinstimmung mit der Gemeinwohl-Ökonomie Matrix 2.0 2. **Wahlprogrammtreue (0-10):** Konsistenz mit dem NRW-Wahlprogramm 2022 der einreichenden Fraktion(en) und der Fraktionen in Regierungsverantwortung 3. **Parteiprogrammtreue (0-10):** Konsistenz mit dem Grundsatzprogramm der einreichenden Fraktion(en) und der Fraktionen in Regierungsverantwortung Das Tool generiert professionelle PDF-Berichte mit dem offiziellen ECOnGOOD-Branding. --- ## 2. Gewählte Matrix: V2.0 für Gemeinden ### Warum nicht Matrix 5.1? Die **GWÖ-Matrix 5.1** ist für Unternehmen konzipiert mit Berührungsgruppen wie "Kund:innen", "Eigentümer:innen", "Mitarbeitende". Diese passen nicht zu parlamentarischen Anträgen. ### Warum nicht Matrix 2.1.A? Die Matrix 2.1.A ist für die "öffentliche Hand" allgemein. Die **Matrix 2.0 für Gemeinden** bietet einen etwas weiteren Blick und ist kompakter formuliert — ideal für parlamentarische Analyse. ### Die Matrix 2.0 für Gemeinden | Aspekt | Beschreibung | |--------|--------------| | **Struktur** | 5×5 (25 Felder) | | **Fokus** | Kommunale Gebietskörperschaften | | **Zielgruppe** | Kommunalpolitik, Landesanträge | | **Staatsprinzipien** | ja (verfassungsrechtlich verankert) | ### Die 5×5-Struktur **Spalten (Werte des Gemeinwohls + Staatsprinzipien):** | Nr | Wert | Staatsprinzip | |----|------|---------------| | 1 | Menschenwürde | Rechtsstaatsprinzip | | 2 | Solidarität | Gemeinnutz | | 3 | Ökologische Nachhaltigkeit | Umwelt-Verantwortung | | 4 | Soziale Gerechtigkeit | Sozialstaatsprinzip | | 5 | Transparenz & Mitbestimmung | Demokratie | **Zeilen (Berührungsgruppen):** | Code | Gruppe | Beschreibung | |------|--------|--------------| | A | Ausgelagerte Betriebe, Lieferant:innen, Dienstleister:innen | Externe Beschaffung, Lieferketten | | B | Finanzpartner:innen, Geldgeber:innen, Steuerzahler:innen | Haushalt, Finanzpolitik | | C | Politische Führung, Verwaltung, Ehrenamtliche | Mandatsträger:innen, Mitarbeitende | | D | Bürger:innen und Wirtschaft | Interne Wirkung, Daseinsvorsorge | | E | Staat, Gesellschaft und Natur | Überregionale/langfristige Wirkung | ### Relevanz für Landesanträge Die meisten Parlamentsanträge betreffen: - **D-Zeile:** Wirkung auf Bürger:innen und Wirtschaft im Land - **E-Zeile:** Überregionale oder langfristige Auswirkungen **Prinzip:** D (intern) hat Vorrang vor E (extern). --- ## 3. Programmtreue-Bewertung ### Zwei Dimensionen Anträge werden sowohl gegen das **Wahlprogramm** als auch gegen das **Grundsatzprogramm** der Fraktionen geprüft: | Partei | Wahlprogramm | Grundsatzprogramm | |--------|--------------|-------------------| | CDU | NRW 2022 | "In Freiheit leben" (2024) | | SPD | NRW 2022 | Hamburger Programm (2007) | | GRÜNE | NRW 2022 | "...zu achten und zu schützen..." (2020) | | FDP | NRW 2022 | "Verantwortung für die Freiheit" (2012) | | AfD | NRW 2022 | "Programm für Deutschland" (2016) | ### Bewertungsskala | Score | Bedeutung | |-------|-----------| | 9-10 | Vollständige Übereinstimmung | | 7-8 | Hohe Übereinstimmung | | 5-6 | Partielle Übereinstimmung | | 3-4 | Geringe Übereinstimmung | | 1-2 | Widerspricht Teilaspekten | | 0 | Vollständiger Widerspruch | --- ## 4. Bewertungsskala GWÖ | Punkte | Stufe | Beschreibung | |--------|-------|--------------| | 7-10 | **Vorbildlich** | Innovative Maßnahmen, weitreichende Verbesserungen | | 4-6 | **Erfahren** | Erkennbare Verbesserungen, gute Ergebnisse | | 2-3 | **Fortgeschritten** | Erste Maßnahmen, erste Erfolge | | 1 | **Erste Schritte** | Erstes Engagement | | 0 | **Basislinie** | Nur gesetzliche Anforderungen | | negativ | **Widerspruch** | Aktiver Widerspruch zu GWÖ-Werten | ### Matrix-Feldwertung Für jedes berührte Feld im Antrag: - `++` (+2/+3): Stark fördernd - `+` (+1): Fördernd - `○` (0): Neutral - `−` (-1): Widersprechend - `−−` (-2/-3): Stark widersprechend --- ## 5. ECOnGOOD Corporate Design ### Branding (aus CD Manual 2024) Das Layout folgt strikt dem offiziellen ECOnGOOD Corporate Design Manual (Juni 2024). **Farbpalette (Primärfarben aus Logo):** | Farbe | Hex | CMYK | Pantone | Verwendung | |-------|-----|------|---------|------------| | **Dunkelgrau** | `#5a5a5a` | 0-0-0-80 | 425 U | Fließtext, H1-Überschriften | | **Grün** | `#889e33` | 40-10-90-20 | 583 U | Positive Werte, H3, Akzente | | **Blau** | `#009da5` | 100-10-40-00 | 320 U | Hauptfarbe, H2, Links, Linien | | **Hellgrau** | `#bfbfbf` | 0-0-0-30 | 421 U | Hintergründe, Fußzeilen | **Typografie:** - **Primär:** Avenir (light, roman, black) - **Fallback:** Arial - **Web:** Avenir - **Überschriften:** - H1: Avenir black, 22pt, Dunkelgrau - H2: Avenir black, 16pt, Blau oder Grün - H3: Avenir black, 12pt, Blau oder Grün - **Fließtext:** Avenir roman, 10pt, Dunkelgrau - **Hervorhebungen:** Avenir black **Logo:** ECOnGOOD-Logo (`econgood-logo.png`) — zwei stilisierte Pusteblumen (Blau + Grün) **Boxen (CD-konform):** - Flächig farbig (Grün oder Blau) mit weißem Text - Oder mit farbiger Outline und farbigem Text - Keine abgerundeten Ecken (arc=0pt) **Tabellen:** - Titelleiste in Markenfarbe (Blau) - Weißer Text in Titelleiste, fett, Großbuchstaben - Innere horizontale Linien max. 1pt - 3mm Abstand zwischen Text und Linie **Layout:** - Offenes, leichtes Design - Reinweißer Hintergrund - Kräftige Farben (aktiv) - Genug Weißraum zwischen Elementen ### Empfehlungs-Symbole | Empfehlung | Symbol | Farbe | Hex | |------------|--------|-------|-----| | Uneingeschränkt unterstützen | `[++]` | Grün | `#889e33` | | Unterstützen mit Änderungen | `[+]` | Blau | `#009da5` | | Überarbeiten | `[!]` | Orange | `#F7941D` | | Ablehnen | `[X]` | Rot | `#d00000` | --- ## 6. Technische Umsetzung ### Stack - **TypeScript** — Datentypen, Generator - **Quarto** — Markdown → PDF (via LuaLaTeX) - **TikZ** — Grafische Elemente (Score-Balken) - **pdftk** — PDF-Merge (Bewertung + Original-Antrag) ### Projektstruktur ``` quarto-report/ ├── src/ │ ├── types.ts # Datentypen, Matrix-Labels │ ├── data.ts # Testbewertungen │ └── generate-qmd.ts # Quarto-Generator ├── reports/ # Generierte .qmd + .pdf ├── econgood-logo.png # Logo (aus CD Manual) └── package.json ``` ### Workflow 1. LLM analysiert Antrag → JSON-Ausgabe 2. JSON → TypeScript Assessment-Objekt 3. Generator erzeugt `.qmd` (Quarto Markdown) 4. Quarto rendert → PDF 5. pdftk merged Bewertung + Original-Antrag --- ## 7. Kontext-Dateien Im Ordner `kontext/`: | Datei | Beschreibung | |-------|--------------| | `gwoe-matrix-2.0.md` | Matrix 2.0 für Gemeinden — vollständige Dokumentation | | `gwoe-matrix-2.0-gemeinden.pdf` | Offizielles Matrix-PDF | | `gwoe-arbeitsbuch-gemeinden-2.0.pdf` | Arbeitsbuch zur Matrix | | `parteiprogramme.md` | Kurzreferenz Wahlprogramme + Grundsatzprogramme | | `cdu-grundsatzprogramm-2024.pdf` | CDU "In Freiheit leben" | | `spd-hamburger-programm-2007.pdf` | SPD Hamburger Programm | | `gruene-grundsatzprogramm-2020.pdf` | Grüne Grundsatzprogramm | | `fdp-grundsatzprogramm-2012.pdf` | FDP "Verantwortung für die Freiheit" | | `afd-grundsatzprogramm-2016.pdf` | AfD "Programm für Deutschland" | | `wahlprogramme-nrw-2022.md` | NRW Wahlprogramme 2022 | --- ## 8. Getestete Anträge | Drucksache | Titel | GWÖ | Empfehlung | |------------|-------|-----|------------| | 18/18081 | Schlechte-Kita-Gesetz stoppen (SPD) | 8/10 | Uneingeschränkt unterstützen | | 18/18088 | Iran-Solidarität (alle) | 9/10 | Uneingeschränkt unterstützen | | 18/18094 | Versorgungssicherheit/Fracking (AfD) | 1/10 | Ablehnen | | 18/18099 | Kultur-Schecks (CDU/Grüne) | 6/10 | Unterstützen mit Änderungen | | 18/18104 | KI-Korrektur (FDP) | 6/10 | Unterstützen mit Änderungen | --- ## 9. Gendering **Standard:** `:` (Doppelpunkt) statt `*` (Sternchen) Beispiele: - Bürger:innen - Lieferant:innen - Mitarbeiter:innen --- ## 10. Quellen - **GWÖ-Matrix 2.0:** https://germany.econgood.org/wp-content/uploads/sites/8/2024/04/Matrix-Gemeinwohl-Bilanzierung-Gemeinden-V2.0.pdf - **Arbeitsbuch 2.0:** https://austria.econgood.org/wp-content/uploads/sites/7/2022/01/Arbeitsbuch-Gemeinden_2.pdf - **ECOnGOOD CD Manual:** Corporate Design/2024_ECOnGOOD_Manual_DE_Juni_02.pdf - **GWÖ Deutschland:** https://germany.econgood.org - **Kontakt:** Gemeinde@ecogood.org --- ## 11. Changelog | Datum | Version | Änderung | |-------|---------|----------| | 24.03.2026 | v4 | Matrix 2.0 statt 2.1.A, Parteiprogrammtreue ergänzt, `:` beim Gendern, ECOnGOOD-Logo | | 23.03.2026 | v3 | Umstellung auf Matrix 2.1.A (5×5), GWÖ-Branding | | 23.03.2026 | v2 | Vollständiger Kontext (Matrix + Wahlprogramme) | | 23.03.2026 | v1 | Initiale Version mit Matrix 5.1 | --- *Projektordner:* `~/Nextcloud/dotty/projekte/2026-03-23 GWÖ-Antragsprüfer _WIP_/` *Telegram:* https://t.me/c/3823618505/4247 --- ## Session 28.03.2026 (Nachmittag/Abend) ### Security - CSP, X-Frame-Options, X-XSS-Protection etc. als Middleware - /docs deaktiviert ### v5-Prompt mit Verbesserungsvorschlägen Neues Format: ```json { "original": "Zitat aus Antrag", "vorschlag": "Verbesserter Text mit **Markierungen**", "begruendung": "GWÖ-Begründung" } ``` ### UI-Erweiterungen - Partei-Filter (Dropdown) - Tag-Wolke mit Multi-Select - Partei-Durchschnitte in Stats-Bar - Kombinierte Filter (Score + Partei) ### Infrastruktur-Fixes - DB-Persistenz: Dockerfile kopiert data/ nicht mehr - JSON-Import deaktiviert - Retry-Logik für LLM (3 Versuche) ### Repository - https://repo.toppyr.de/tobias/gwoe-antragspruefer - MIT License - Vollständige Dokumentation