---
name: zpracuj-briefy
description: Orchestrační skill pro zpracování nových Campaign Briefů z Notionu. Spustí timing + sekvence pipeline pro briefy se Status=Ready. Použij když uživatel říká 'zpracuj briefy', 'zpracuj nové briefy', 'jsou nějaké nové kampaně', 'process briefs'.
---

# Zpracuj briefy – Orchestrační skill

## Co skill dělá

Projde Campaign Briefs DB v Notionu, najde briefy se Status = "Ready" a pro každý spustí:
1. Výpočet timingu (invokací `leadspicker-kampan-timing`)
2. Generování sekvencí (invokací `leadspicker-sekvence`)
3. Zápis výstupů zpět do Notionu
4. Slack notifikaci

> **Sdílená konfigurace** (Notion DB IDs, Slack kanály, Sender mapování): viz `leadspicker-shared-config.md`

## Postup

### Krok 1 – Najdi Ready briefy

Přečti sdílenou konfiguraci z `leadspicker-shared-config.md` pro Notion DB IDs.

Query Notion Campaign Briefs DB (ID viz shared config):

```
notion-search:
  query: ""
  data_source_url: "<Campaign Briefs collection ID ze shared config>"
```

Filtruj stránky kde `Status` = "Ready".

Pokud žádné Ready briefy nejsou, odpověz: "Žádné nové briefy ke zpracování." a skonči.

Pokud jsou, vypiš seznam a pokračuj.

### Krok 2 – Pro každý Ready brief

Opakuj kroky 2a–2f pro každý nalezený brief:

#### 2a) Nastav Status na "Generating"

```
notion-update-page:
  page_id: <brief_page_id>
  command: update_properties
  properties:
    Status: "Generating"
```

#### 2b) Přečti data z briefu

Z Campaign Brief stránky přečti:
- `Name` – název kampaně
- `Event Date` – datum akce
- `Contact Count` – počet kontaktů
- `Daily Limit` – denní limit (default 40 pokud prázdné)
- `Campaign Goal` – typ kampaně
- `Segment` – cílový segment
- `Tone` – tón komunikace
- `Language` – jazyk (default CZ)
- `Target Persona` – popis persony
- `Key Pain Points` – bolesti segmentu
- `Sender` – kdo odesílá zprávy

**Validace Sender:** Použij mapování z `leadspicker-shared-config.md`. Pokud Sender není v mapování nebo je prázdný, ZEPTEJ SE uživatele (nenastav Status na Generating dokud nemáš Sender).

#### 2c) Vypočítej timing

**Invokuj skill `leadspicker-kampan-timing`** v automatizovaném (Notion I/O) módu s daty z briefu.

Skill sám zapíše Timing Result do Notion property na brief stránce.

#### 2d) Vygeneruj sekvence

**Invokuj skill `leadspicker-sekvence`** v automatizovaném (Notion I/O) módu s daty z briefu.

Skill sám vytvoří 2 stránky (Varianta A + B) v Sequences DB a zapíše výstup.

#### 2e) Aktualizuj brief – Status "Review"

```
notion-update-page:
  page_id: <brief_page_id>
  command: update_properties
  properties:
    Status: "Review"
```

Propoj vytvořené sekvence s briefem (Sequences relation).

#### 2f) Pošli Slack notifikaci

Použij Slack kanál ID ze `leadspicker-shared-config.md`:

```
slack_send_message:
  channel_id: "<#leadspicker-kampane ID ze shared config>"
  message: "Kampaň **[název]** má sekvence k review.\n\nSegment: [segment] | Cíl: [goal]\nTiming: nejpozději startovat [datum]\n\nSekvence v Notionu: [link na brief]"
```

### Krok 3 – Souhrn

Po zpracování všech briefů vypiš souhrn:

```
Zpracováno X briefů:
- [Název 1]: timing OK, 2 sekvence vygenerovány
- [Název 2]: timing OPOŽDĚNO o 3 dny, 2 sekvence vygenerovány

Slack notifikace odeslány do #leadspicker-kampane.
Další krok: tým zkontroluje sekvence v Notionu a nastaví Status -> "Approved".
```

## Důležité

- NIKDY negeneruj sekvence bez dat z briefu – pokud chybí klíčové údaje (segment, goal, persona), nastav Status zpět na "Draft" a pošli Slack zprávu o nekompletním briefu
- Veškerá logika timingu a sekvencí žije v příslušných sub-skills – tento skill je POUZE orchestrátor
- Pokud sub-skill selže, zastav zpracování daného briefu, nastav Status na "Error" a pokračuj dalším briefem
