# Morgenbriefing — Cronjob-Prompt-Vorlage

Dieses Dokument ist die autoritative Prompt-Vorlage für den täglichen Morgenbriefing-Cronjob (`30 9 * * *`). Sie wird als Referenz in den Cronjob-Prompt eingebettet und sollte bei Verbesserungen am Cronjob aktualisiert werden.

Der Agent, der das Briefing ausführt, soll: Kalender (Google), CallKeep (Telefonate), DailyDose (Tracking) und Wetter abfragen, dann ein personalisiertes deutschsprachiges Briefing für Zeyd ("Chef") verfassen.

## Ziel

Ein persönliches, informatives und motivierendes Morgenbriefing — nicht generisch, nicht roboterhaft. Jedes Briefing soll das Gefühl vermitteln, dass ein Assistent wirklich hingeschaut hat.

## Datenquellen (Reihenfolge der Abfragen)

1. **Wetter:** `curl -s "wttr.in/Vienna?format=%C+%t+%h+%w"` — Temperatur, Bedingungen, Luftfeuchtigkeit, Wind
2. **Google Kalender:** `python $GAPI calendar list --all-calendars --start HEUTE --end MORGEN` — alle Kalender, nicht nur primary
3. **CallKeep Telefonate:** `curl -s http://localhost:3002/api/calls?date=HEUTE` — heutige Anrufe; zusätzlich `curl -s http://localhost:3002/api/calls` für Historie (letzte 2 Wochen), um lange nicht kontaktierte Personen zu identifizieren
4. **DailyDose:** `curl -s http://localhost:8765/api/data` → Key `dailydose_YYYY-MM-DD` für heute + gestern parsen (ACHTUNG: doppeltes JSON-Parsing nötig, Werte sind Strings!)

## Struktur des Briefings

```
[WETTER-EMOJI] **Wochentag, DD. Monat JJJJ — Dein Morgenbriefing**

[Wetter-Beschreibung in einem Satz, mit kurzer Interpretation. Nicht nur Daten runterrattern.]

📅 **Kalender:** [Anzahl Termine heute] — [Auflistung mit Uhrzeit + Titel, oder "Heute steht nichts an — freier Tag!"]

📞 **Anrufe:** [Heutige Anrufe ODER "Keine fälligen Rückrufe." + optional: Hinweis auf lange nicht kontaktierte Personen aus der Historie >7 Tage + persönliche Note: "Vielleicht mal bei X durchklingeln?"]

📊 **Daily Dose:** [Status heute: gefüllt/nicht. Gestern-Zusammenfassung. Keine generische Aufforderung, sondern kontextuell: bei Lücken ehrlich, bei Streak feiern, bei Wochenende verständnisvoll.]

💡 **Heute im Blick:**
- [3-4 stichpunktartige, personalisierte Empfehlungen basierend auf Wochentag, Wetter, Kalender, Telefonie-Historie]
- [Keine generischen Phrasen — jede Empfehlung muss sich aus den Daten ableiten]
```

## Stilregeln

- **Sprache:** Deutsch, natürlich, persönlich
- **Anrede:** "Chef" oder "Zeyd" — nicht förmlich
- **Ton:** Freundlich-energisch, aber nicht aufdringlich. Sonntag ≠ Montag — Wochentag beachten!
- **Wetter-Emoji:** ☀️ sonnig, ⛅ bewölkt, 🌧️ regnerisch, 🌨️ Schnee, 🌫️ neblig
- **Länge:** 6-10 Zeilen (Telegram-optimiert), kein Roman
- **Tagesspezifisch:** Samstag/Sonntag entspannter, weniger Druck. Werktags mehr Fokus auf Produktivität. Sonntag = Islam 45min Default erwähnen, falls DailyDose das vorsieht.
- **Nicht roboterhaft:** Kein "Hier ist Ihr tägliches Briefing" oder "Bitte beachten Sie". Natürliche Sprache.

## Nicht verhandelbare Qualitätsstandards (FAIL-Kriterien)

Diese Dinge MÜSSEN im Briefing vorkommen. Fehlt eines, ist das Briefing mangelhaft:

1. **Wochentag explizit nennen** — und zwar den RICHTIGEN. Vor dem Schreiben mit `date +%A` (Linux) oder `date '+%A, %d. %B %Y'` den aktuellen Tag abfragen. Niemals raten. Sonntag ist Sonntag, Montag ist Montag.
2. **Konkrete Anruf-Empfehlung** — nicht nur "Keine fälligen Rückrufe". IMMER die CallKeep-Historie der letzten 14 Tage auswerten und mindestens eine Person nennen, die >7 Tage nicht kontaktiert wurde: "X und Y hast du seit [Datum] nicht mehr gesprochen — vielleicht mal durchklingeln?" Ohne diese konkrete Empfehlung ist das Briefing unvollständig.
3. **DailyDose-Status + Erinnerung** — Wenn heute noch nicht ausgefüllt: explizit daran erinnern mit dem Hinweis auf Defaults. Wenn gestern nicht ausgefüllt: erwähnen. Niemals diesen Punkt weglassen.
4. **Mindestens 3 personalisierte Empfehlungen** unter "Heute im Blick" — jede muss sich direkt aus Wetter, Kalender, CallKeep-Historie oder DailyDose-Gewohnheiten ableiten. Keine generischen Phrasen wie "Nutze den Tag".
5. **Wetter-Nutzungsinterpretation** — nicht nur Daten nennen ("17°C, sonnig"), sondern einen Satz dazu, was das für den Tag bedeutet: "Perfekt für einen Spaziergang" oder "Drinnen bleiben und lernen".

## Pitfalls

- **Tag verwechseln:** Immer den aktuellen Wochentag aus dem Systemdatum ableiten, nicht raten oder hartcoden
- **Leerer Kalender → kein "nichts zu tun":** Positiv formulieren, z.B. "Heute steht nichts an — genieß den Sonntag!" oder "Freier Tag, perfekt für eigene Projekte."
- **CallKeep nicht erreichbar:** Nicht im Briefing erwähnen. Einfach weglassen, nicht "CallKeep war nicht erreichbar" schreiben.
- **DailyDose doppeltes JSON:** IMMER `isinstance(v, str) and v.strip().startswith(('{', '['))` prüfen und parsen
- **Telefon-Historie interpretieren:** Nicht nur auflisten, sondern Muster erkennen — "Du hast [X] seit [Y Tagen] nicht angerufen, vielleicht mal wieder melden?"

## Beispiel (gute Qualität)

```
☀️ Sonntag, 31. Mai 2026 — Dein Morgenbriefing

Strahlender Sonnenschein bei 17°C, leichter Wind aus Südost. Ideales Wetter für einen Kaffee auf der Terrasse oder einen Spaziergang.

📅 Heute steht nichts im Kalender — ein komplett freier Sonntag. Genieß ihn!

📞 Keine fälligen Rückrufe heute. Deine letzten Gespräche waren am Donnerstag mit Orhan, Josef, Fatih und Abdullah zu Bayram. Anneanne und Dede hast du seit über einer Woche nicht mehr gesprochen — vielleicht heute mal durchklingeln?

📊 Daily Dose noch nicht ausgefüllt. Gestern war minimalistisch: Islam, Körperpflege und 8h Schlaf — verständlich für einen Samstag. Heute als Sonntag sind 45 min für Islam vorgemerkt.

💡 Heute im Blick:
• Sonntags-Routine: 45 min Islam sind default — vielleicht gleich nach dem Frühstück?
• Das Wetter schreit nach draußen — Spaziergang oder Kaffee in der Sonne
• Keine Termine, kein Druck — perfekt für ein entspanntes Familienfrühstück
```
