Architektur-Entscheidung aus Issue #62: Diátaxis-Framework für Doku- Pflege ohne Drift. Pflege im Repo, ADRs immutable, Stale-Snapshots explizit als Archiv markiert. Phase 1 — Architecture Decision Records: - docs/README.md — Diátaxis-Index, Erklärung was wo dokumentiert wird - docs/adr/README.md — ADR-Workflow + Index - docs/adr/template.md — Vorlage für neue ADRs - docs/adr/0001-llm-citation-binding.md — Issue #60 Doppel-Fix-Story (A=ENUM-Anker, B=server-seitige Rekonstruktion, warum Option C verworfen) - docs/adr/0002-adapter-architecture.md — ParlamentAdapter-Basisklasse + Registry, Klassen vs. Strategy vs. Modul-pro-Adapter - docs/adr/0003-citation-property-tests.md — Sub-D Strategie, warum Property-Test gegen echte PDFs statt Schema-Tests oder Online-Verify - docs/adr/0004-deployment-workflow.md — Docker-Compose + Volumes Standard-Workflow + SN-XML-Sonderpfad + Container-UTC-Gotcha Phase 3 — Stale Doku archiviert: - DOKUMENTATION.md (24.März, Skript-Architektur vor Webapp-Migrate) → docs/archive/DOKUMENTATION-2026-03-24.md - STATUS-2026-03-28.md (Tagesstand-Snapshot) → docs/archive/STATUS-2026-03-28.md - README.md (28.März, listet nur NRW-Adapter, vor 16 weiteren BLs) → docs/archive/README-2026-03-28.md - docs/archive/README.md erklärt warum die Files da sind und warum niemand sie überschreiben oder ersetzen sollte Plus neue Top-Level-README.md im Project-Root (außerhalb git, da project-root kein Repo ist) als Folder-Index für den User. CLAUDE.md ergänzt um Doku-Sektion mit Verweis auf docs/adr/. Phase 2 (mkdocs Setup) folgt separat — braucht eine Docker-Image- Erweiterung, die ich nicht autark einrollen will ohne Decision. Tests: 194/194 grün (keine Code-Änderung). Refs: #62
12 KiB
GWÖ-Antragsprüfer — Dokumentation
Stand: 24. März 2026, 22:15
0. Datenbank
Alle Bewertungen werden in einer SQLite-Datenbank gespeichert: gwoe-antraege.db
# 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
# 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)
# 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)
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": "<SYSTEM_PROMPT>",
"messages": [{"role": "user", "content": "<USER_PROMPT>"}]
}'
1. Überblick
Der GWÖ-Antragsprüfer bewertet parlamentarische Anträge (aktuell: NRW Landtag) systematisch nach drei Dimensionen:
- GWÖ-Treue (0-10): Übereinstimmung mit der Gemeinwohl-Ökonomie Matrix 2.0
- Wahlprogrammtreue (0-10): Konsistenz mit dem NRW-Wahlprogramm 2022 der einreichenden Fraktion(en) und der Fraktionen in Regierungsverantwortung
- 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
- LLM analysiert Antrag → JSON-Ausgabe
- JSON → TypeScript Assessment-Objekt
- Generator erzeugt
.qmd(Quarto Markdown) - Quarto rendert → PDF
- 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:
{
"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