fix(#170): default min_similarity 0.40 + PM-Prompt als Pressereferent (Issue tba)

**1. Default min_similarity 0.40 statt 0.50.** Live-Test auf dev:
mit 0.50 zeigt only_relevant=true 0 buckets, weil zu strikt fuer die
aktuelle Sparse-Datenlage (77 Bewertungen × 30 News). Mit 0.40 bleiben
1 high + 2 mid News pro 7-Tage-Fenster — genau die kuratierte Sicht,
die wir wollen.

**2. PM-System-Prompt umgeschrieben** als Pressereferent statt
Redakteur. User-Wunsch: "Bürger:innen anschaulich machen, was sich
durch den Antrag konkret im Leben vor Ort aendert".

Pflicht-Elemente im neuen Prompt:
- Konkrete Alltagswirkung (mindestens 2 Beispiele aus Lebenslagen:
  Pflegekraefte, Familien, Mieter:innen, Pendler:innen, ...)
- GWÖ-Verbesserungspotential bei nicht voll ueberzeugenden Antraegen
  (was fehlt, wie ginge es besser aus GWÖ-Sicht)
- Bei negativen Antraegen: klar benennen was verschlechtert wird,
  konkret quantifiziert wo moeglich
- 220–280 Worte (vorher 200–250)
- Aktive Verben, kurze Saetze, keine Floskeln
- Strukturierter Aufbau: Lead → Beispiele + GWÖ-Bewertung →
  Verbesserungspotential → Forderung

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dotty Dotter 2026-05-03 13:45:40 +02:00
parent e27dfc30a2
commit a3d13e984b
2 changed files with 53 additions and 18 deletions

View File

@ -22,25 +22,60 @@ from typing import Optional
logger = logging.getLogger(__name__)
SYSTEM_PROMPT = """Du bist ein politischer Redakteur, der für eine
Gemeinwohl-Ökonomie-Initiative Pressemitteilungen schreibt. Deine Stil-
Richtlinien:
SYSTEM_PROMPT = """Du bist Pressereferent:in einer Gemeinwohl-Ökonomie-
Initiative. Deine Aufgabe: Pressemitteilungen schreiben, die Bürger:innen
**anschaulich machen, was sich durch diesen Antrag konkret in ihrem
Alltag vor Ort ändert** positiv bei guten Anträgen, negativ bei
schlechten.
- 200-250 Worte
- Sachlicher, präziser Stil keine Werbesprache, keine Polemik
- Faktenbasiert: Daten aus dem Antrag und dem News-Kontext explizit nennen
- GWÖ-Werte (Würde, Solidarität, Nachhaltigkeit, Gerechtigkeit, Demokratie)
als Bewertungsmaßstab nicht parteipolitische Linie
- Klare Struktur: Titel, Lead-Paragraph (Wer? Was? Wann? Warum jetzt?),
Begründung mit Bezug auf GWÖ-Bewertung, Schluss mit Forderung oder
Einladung zum Dialog
- Niemals den Anbieter der News-Quelle (Tagesschau, Bundestag) zitieren
nur den Sachverhalt aufgreifen, der dort beschrieben ist
## Pflicht-Elemente
Antworte NUR mit gültigem JSON in dieser Struktur:
1. **Konkrete Alltagswirkung** keine Abstraktion. Nenne mindestens 2
konkrete Beispiele: Wer in welcher Lebenslage merkt was? (z.B.
"Pflegekräfte in Krankenhäusern", "Familien mit Kindern in der
Kita", "Mieter:innen in Großstädten", "Pendler:innen", "Rentner:innen
mit Mindestrente").
2. **GWÖ-Verbesserungspotential** wenn der Antrag nur teils gut ist:
Sage konkret was fehlt oder wie es noch besser ginge. Aus GWÖ-Sicht
(Würde, Solidarität, ökologische Nachhaltigkeit, Gerechtigkeit,
Transparenz/Demokratie) nicht parteipolitisch.
3. **Drucksache + Quelle nennen** der Antrag muss klar identifiziert
sein (z.B. "Drucksache 21/4757 des Bundestages"). Bezug zur aktuellen
News, ohne den Medienanbieter (Tagesschau, Bundestag-Webseite) zu
zitieren.
## Stil
- 220280 Worte
- Aktive Verben, kurze Sätze (max 25 Worte)
- Keine Floskeln ("zukunftsweisend", "innovative Lösung"). Stattdessen
konkret: "Familien mit zwei Kindern und 2.800 € Netto-Einkommen
bekommen ..."
- Bei NEGATIV-Anträgen: klar benennen, was der Antrag verschlechtert
("Erhöht die Belastung der Mieter:innen um geschätzt X €/Monat"
konkret, nicht "ist sozial unausgewogen")
- Schluss: konkrete Forderung ("Wir fordern den Bundestag auf, …")
ODER konstruktiver Verbesserungsvorschlag
## Struktur
- **Titel**: thesenstark, max 100 Zeichen, inkl. der Alltagswirkung
(nicht nur Antragsname)
- **Lead-Paragraph** (1-2 Sätze): Wer? Was? Welche Auswirkung im
Alltag?
- **Begründung** (3-4 Sätze): konkrete Beispiele aus dem Leben +
GWÖ-Bewertung
- **Verbesserungspotential** (1-2 Sätze, falls Antrag nicht voll überzeugt)
- **Forderung/Schluss** (1 Satz)
## Output-Format
Antworte NUR mit gültigem JSON:
{
"titel": "<knackiger Titel, max 100 Zeichen>",
"body": "<Pressemitteilungs-Volltext, 200-250 Wörter>"
"titel": "<thesenstark, max 100 Zeichen, inkl. konkreter Wirkung>",
"body": "<220280 Worte mit den Pflicht-Elementen>"
}"""

View File

@ -172,8 +172,8 @@
<label for="at-minsim">Min. Similarity:</label>
<select id="at-minsim" onchange="loadActiveTab()">
<option value="0.30">0.30 (locker)</option>
<option value="0.40">0.40</option>
<option value="0.50" selected>0.50 (default)</option>
<option value="0.40" selected>0.40 (default)</option>
<option value="0.50">0.50 (streng)</option>
</select>
<label style="display:inline-flex;align-items:center;gap:5px;cursor:pointer;">
<input type="checkbox" id="at-only-relevant" checked onchange="loadActiveTab()" />