Sofie — AI persona školy
TL;DR
Sofie je AI persona školy — jedna „kolegyně", se kterou všichni komunikují (chatem, emailem, hlasem). Uživatel řekne pár hesel, Sofie zpracuje, navrhne, nechá schválit — hotovo.
Co Sofie dělá:
- Přepisuje texty učitelů do tónu školy a kontroluje kompletnost
- Buduje znalostní bázi organicky z každé interakce (wiki roste sama)
- Odpovídá rodičům z ověřených informací; co neví, zeptá se a naučí se
- Zpracovává omluvenky, docházku, obědy — jednou větou od rodiče
- Plánuje akce konverzačně (výlet = 5 minut chatu místo 3 formulářů)
- Sleduje úkoly a deadliny z konverzací (nahrazuje Kosmo PM)
- Pamatuje si historii s každou rodinou (nahrazuje Twenty CRM)
- Analyzuje fotky žákovských prací → buduje portfolio → generuje IVP
- Automaticky překládá mezi češtinou a angličtinou (pro zahraniční učitele)
Nasazení: Postupně. Začne se CC v emailu (nikdo nemusí nic měnit), pokračuje appkou pro pár aktivních lidí, zbytek se přidává organicky.
Náklady: ~500 Kč/měsíc (MVP) → ~800 Kč/měsíc (plný provoz). Levnější než samotný Kosmo PM + Twenty + newsletter software.
Persona Sofie
Identita
Sofie není „systém" ani „chatbot" — je to kolegyně, která ví všechno a nikdy nespí.
- Má vlastní email:
sofie@sofie.education - Vždy tyká (interně učitelům) — je to její identita
- Texty pro rodiče píše v tónu školy (vyká)
- Přátelská, přesná, nikdy nespekuluje
- Pokud neví, řekne to a zeptá se správné osoby
Dva tóny
| Kontext | Oslovení | Příklad |
|---|---|---|
| Interně (učitelům, kolegům) | Tykání | „Petro, ještě nemám záznam za dnešek. Co jste dělali?" |
| Rodičům | Vykání (varianta A) | „Posíláme vám info k výletu." |
Tónový manuál — komunikace s rodiči
Škola komunikuje s rodiči vřele, ale kompetentně. Jako soused, kterému na dítěti záleží a zároveň ví, co dělá. Vykání, ale bez formální strnulosti.
Pravidla
| Pravidlo | Příklad | Anti-příklad |
|---|---|---|
| Vykáme, ale srdečně. | „Posíláme vám info k výletu." | „Vážení rodiče, dovolujeme si Vás informovat…" |
| Píšeme jako lidi. Krátké věty, běžná slova. | „Děti budou potřebovat gumáky." | „Je nezbytné zajistit nepromokavou obuv." |
| Pojmenováváme emoce. | „Moc nás potěšilo, kolik vás přišlo." | „Účast na akci byla vysoká." |
| Konkrétní, ne obecné. Čísla, data, jména. | „Ve čtvrtek 15. 5. v 8:30" | „V nejbližších dnech" |
| Aktivní slovesa. Kdo dělá co. | „Přihlaste děti do pátku." | „Přihlášky je třeba zaslat do pátku." |
| Montessori přirozeně. Filozofii jen tam, kde pomáhá pochopit „proč". | „Děti si samy vybraly téma projektu." | „V souladu s principy kosmické výchovy dle Dr. Montessori…" |
Tón v číslech
- Max délka zprávy: 150 slov (ideálně do 100)
- Max bodů v seznamu: 5
- Emoji: střídmě (max 2–3 na zprávu, funkční)
Vzorová komunikace
Výlet na farmu — čtvrtek 15. 5.
Posíláme vám info k čtvrtečnímu výletu na farmu do Kunratic.
Co budou děti potřebovat: - Svačinu + pití (oběd na farmě zajištěn) - Gumáky nebo pevné boty - Pláštěnku pro jistotu
Odjezd v 8:30 od školy, návrat kolem 15:00.
Pokud vaše dítě nejede, dejte nám prosím vědět do středy.
Architektura
Stack
n8n (orchestrátor, workflow automation)
├─→ Vertex AI Gemini (LLM — Flash + Pro, EU region)
├─→ BookStack API (znalostní báze, obsah)
├─→ Supabase pgvector (RAG embeddingy)
├─→ Gmail API (CC email trigger)
├─→ Listmonk API (newsletter, fáze 2+)
└─→ Supabase (aplikační data Kosmo)
Proč n8n (ne Dify)
Jádro projektu je CC email → extrakce → znalostní báze → routing — to je workflow problém, ne chatbot problém.
| Kritérium | n8n | ~~Dify~~ (zamítnuto) |
|---|---|---|
| RAM | ~256 MB (1 kontejner) | ~4 GB (7 kontejnerů) |
| Email integrace | Nativní Gmail trigger | Vyžaduje custom glue code |
| Integrace | 400+ nodes | ~20 tools |
| Google Workspace | Nativní nodes | Omezená |
| Flexibilita | Workflow automation | Chatbot builder |
Úspora RAM umožnila zmenšit VM z e2-standard-4 ($60/měs) na e2-small ($15/měs).
RAG pipeline
BookStack (obsah) → n8n sync → Gemini embedding → Supabase pgvector
Dotaz → Gemini embedding → pgvector similarity → kontext → Gemini Pro → odpověď
Žádný separátní vector DB. Pgvector je extension v PostgreSQL, Supabase ho má out of the box.
Strategie výběru modelu
n8n umožňuje per-workflow routing — nemusíme používat jeden model na vše:
| Úloha | Model | Proč |
|---|---|---|
| Routing, klasifikace | Gemini Flash | Rychlé, levné, stačí |
| Reformulace textu | Gemini Pro | Kvalita výstupu důležitá |
| RAG odpovědi | Gemini Pro | Přesnost + citace |
| Portfolio analýza | Gemini Vision | Multimodální |
| IVP generování | Claude Sonnet / Opus | Nejkomplexnější úloha |
Jeden vzorec pro vše
Každá interakce sleduje stejný vzorec:
Vstup (chat / email / CC / voice / upload)
↓
Sofie porozumí záměru
↓
Odhadne kompetentní osobu
↓
Připraví návrh (odpověď / draft / akce)
↓
Osloví osobu: [Schválit] [Upravit] [Přehodit na...]
↓
Sofie přeformuluje, uloží, publikuje, odpoví
n8n workflow schopnosti
| Schopnost | Co dělá | Příklad |
|---|---|---|
| Reformulace | Přepíše text do tónu školy | Učitel napíše hesla → formátovaná zpráva |
| Zápis do KB | Extrahuje fakta, draft stránky v BookStack | „Od pondělka družina do 16:30" → draft změny |
| Plánování | Konverzačně založí akci, vygeneruje úkoly | „Chci naplánovat výlet" → event + zpráva |
| RAG lookup | Odpovídá z BookStack KB, cituje zdroj | „Kdy jedou třeťáci na výlet?" |
| Routing | Odhadne správnou osobu pro eskalaci | „jídlo" → kuchařka, „výlet 3B" → třídní 3B |
| Extrakce | Z emailu/voice vytěží strukturovaná data | Hlasový debrief → denní záznam |
Znalostní báze (BookStack)
Veřejná vs. interní
BookStack tagy řídí viditelnost:
| Tag | Viditelnost | Příklad obsahu |
|---|---|---|
visibility:public |
Veřejný chat, web | FAQ, pravidla školy, ŠVP |
visibility:internal |
Interní agenti | Metodiky, procesy, kontakty |
visibility:vedeni |
Pouze vedení | Finance, GDPR, smlouvy |
n8n RAG pipeline má dvě sady embeddingů v Supabase pgvector: veřejná (sync jen visibility:public) a interní (sync vše). Veřejný chat nikdy nevidí interní data.
Trasovatelnost
Každá informace nese metadata o původu:
Tag: autor:petra.novakova
Tag: schvalil:patrik.matlak
Tag: zodpovida:jana.kralova
Tag: stav:ke-schvaleni|schvaleno|hotovo
Tag: deadline:2026-03-20
Tag: typ:akce|faq|pravidlo|ukol|sablona
Tag: visibility:public|internal|vedeni
Self-learning FAQ loop
Rodič se ptá → Sofie hledá v KB (visibility:public) → nenašla
↓
„Nemám ověřenou odpověď. Zeptám se."
↓
Odhadne kompetentní osobu → osloví s návrhem odpovědi
↓
Osoba schválí (klik / email reply / auto-publish)
↓
Draft publikován → n8n → pgvector sync → příště Sofie odpoví sama
Čím víc se rodiče ptají, tím je Sofie chytřejší — a nikdo nemusel FAQ psát ručně.
Struktura roste organicky
Nenavrhujeme strukturu BookStack předem. Prvních pár stránek vznikne z reálných interakcí, Sofie navrhuje kam zařadit, ředitel schválí. Struktura emerguje z potřeb.
Komunikační kanály
Sofie přijímá vstup z libovolného kanálu — vše volá stejné n8n workflow.
Email — progresivní integrace
| Fáze | Sofie dělá | Učitel dělá | Technicky |
|---|---|---|---|
| E1 (CC) | Pozoruje, extrahuje, navrhuje drafty | Komunikuje normálně, přidá CC | Parsování CC emailů |
| E2 (asistent) | Navrhuje odpovědi na dotazy rodičů | Klikne Schválit/Upravit | + přístup k mailboxu |
| E3 (persona) | Komunikuje sama, eskaluje když neví | Píše Sofii jako kolegyni | Plný email účet + n8n |
E1 příklad (CC pattern):
Učitelka pošle email rodičům → CC sofie@sofie.education
Sofie pozoruje: extrahuje fakta, připraví draft do wiki,
sleduje odpovědi rodičů. Nic neposílá bez pokynu.
@sofie v emailových vláknech: Učitelé si mohou psát emaily a kdykoliv vyzvat Sofii zmínkou @sofie nebo přidáním do CC. Sofie odpovídá jen když je oslovena — reply-all, takže všichni vidí informaci.
Voice — hlas jako vstup
| Varianta STT | Kvalita CZ | Cena |
|---|---|---|
| Browser Web Speech API | Dobrá | Zdarma |
| Whisper API (OpenAI) | Nejlepší | $0.006/min |
| Gemini multimodal | Výborná | Součást Gemini API |
Klíčový use case — hlasový denní debrief:
Učitel nasadí sluchátka cestou z práce a 2 minuty přirozeně mluví. Z toho vznikne: - Denní záznam (náhrada třídnice) - Aktualizace portfolia - Detekce vzorců chování (vyrušování, nepřipravenost) - Podklady pro budoucí IVP
Sofie automaticky překládá — zahraniční učitel mluví anglicky, Sofie zapíše česky. Každý komunikuje ve svém jazyce.
Chat
Chat v aplikaci Kosmo (Next.js frontend) — primární rozhraní. Sofie navrhuje klikací akce:
Notifikace
| Kanál | Kdy |
|---|---|
| In-app karta | Vše — základní notifikace |
| Web Push (PWA) | Urgentní: schválení, deadline, eskalace |
| Denní digest, nebo urgentní pokud nereaguje | |
| WhatsApp (budoucnost) | Rodiče, kteří nechtějí appku |
Schvalovací workflow
Schvalovací politika dle rizika
| Typ obsahu | Viditelnost | Kdo schvaluje | Auto-publish? |
|---|---|---|---|
| Public FAQ | Veřejnost | Vždy ředitel | Ne |
| Komunikace rodičům | Rodiče | Vždy ředitel | Ne |
| Personální / GDPR | Vedení | Vždy ředitel | Ne |
| IVP / portfolio | Učitel + rodič | Třídní učitel | Ne |
| Interní FAQ | Zaměstnanci | Oslovená osoba | Ano (opt-out 2–3 dny) |
| Zápis z porady | Zaměstnanci | Oslovená osoba | Ano (opt-out 2 dny) |
| Provozní info | Zaměstnanci | Oslovená osoba | Ano (opt-out 1 den) |
Opt-out = pokud osoba nereaguje do timeoutu, obsah se publikuje. Může kdykoliv zablokovat.
Tři úrovně autorizace
| Úroveň | Jak vzniká | Příklad |
|---|---|---|
| Autorizováno | Klik v appce nebo magic link | Ředitel schválil FAQ |
| Neautorizováno | Email odpověď zpracovaná AI | Učitel odpověděl emailem |
| Draft | AI vygenerovala bez lidského vstupu | Sofie navrhla odpověď z kontextu |
U neautorizovaných odpovědí je vždy uvedeno: „Na základě odpovědi [jméno] (email, bez autorizace v appce)".
Smart routing
| Fáze | Routing | Příklad |
|---|---|---|
| v1 | Klíčová slova → osoba | „jídlo" → kuchařka, default → ředitel |
| v2 | Tabulka escalation_log — kdo na co odpovídal |
Kuchařka přehazuje „platby" na ředitele → naučeno |
| v3 | Agent zná role, třídy, rozvrh | Dotaz o 3B → třídní 3B |
Fallback: pokud routing selže → vše jde na ředitele.
Organická náhrada PM a CRM
Kosmo PM (úkoly z konverzací)
Úkoly vznikají z konverzací, ne ze separátního PM softwaru:
Učitel: „Sofie, je potřeba objednat autobus na výlet"
Sofie: Vytvoří úkol (zodpovida + deadline + vazba na akci)
„Kdo má objednat autobus?"
[Já] [Kancelář] [Ředitel]
Ředitel vidí kartu „3 úkoly s blížícím se deadline". Implementováno přes BookStack tagy zodpovida + deadline, zobrazeno v dashboardu.
Twenty CRM (historie interakcí)
Sofie loguje každou interakci s rodinami. Kontakty se budují organicky z CC emailů:
1. Učitelka pošle email → CC sofie@ → Sofie propíše kontakt rodiče
2. Po měsíci: „Mám kontakty na rodiče u 28 z 31 dětí."
Nikdo nezadával kontakty ručně. Stačilo pár CC emailů.
Co tím odpadá
| Původně plánovaný nástroj | Jak to řeší Sofie |
|---|---|
| PM software | Úkoly z konverzací, tagy v BookStack, karta v dashboardu |
| CRM software | Historie interakcí v Supabase, shrnutí per-rodina |
| Newsletter (Listmonk, fáze 2+) | Sofie vygeneruje obsah, ředitel schválí |
Cenový odhad
Infrastruktura
| Položka | Měsíčně | Poznámka |
|---|---|---|
| GCP VM (n8n + BookStack) | ~375 Kč | e2-small, europe-west1 |
| Supabase | 0–600 Kč | Free tier stačí pro MVP |
| Vercel (Next.js) | 0 Kč | Free tier |
| GCP Storage | ~50 Kč | ~$0.02/GB |
| Doména + DNS | ~60 Kč | Cloudflare |
| Subtotal | ~500–1 100 Kč |
LLM API (~80 žáků, ~22 zaměstnanců, ~150 rodin)
| Aktivita | Gemini Flash | Gemini Pro |
|---|---|---|
| Hlasové debriefy (10 učitelů × 2 min) | ~70 Kč/měs | ~70 Kč/měs |
| Reformulace + routing (~30 interakcí) | ~5 Kč/měs | ~80 Kč/měs |
| FAQ / RAG dotazy (~20 dotazů) | ~3 Kč/měs | ~50 Kč/měs |
| Email zpracování (~15 emailů) | ~2 Kč/měs | ~40 Kč/měs |
| Portfolio analýza (~5 fotek) | ~8 Kč/měs | ~8 Kč/měs |
| Proaktivní akce | ~2 Kč/měs | ~30 Kč/měs |
| Subtotal | ~90 Kč/měs | ~280 Kč/měs |
Celkem
| Scénář | Celkem |
|---|---|
| MVP (text, pár uživatelů) | ~500 Kč/měs |
| Plný provoz (voice, portfolio, proaktivita) | ~800 Kč/měs |
| Maximum (premium modely, vysoký traffic) | ~1 300 Kč/měs |
Fázování
| Fáze | Období | Co se nasadí | Kanály |
|---|---|---|---|
| 1 | Týden 1–3 | Reformulátor (n8n workflow) | n8n chat |
| 2 | Týden 4–5 | Zapisovač do wiki, BookStack tagy | Beze změny |
| 3 | Týden 6–8 | Plánovač akcí, klikací karty | + CC email (E1) |
| 4 | Týden 9–12 | Sofie email persona, @sofie v CC | + Sofie email (E3) |
| 5 | Měsíc 4+ | RAG Chat, Magic Links, SSO | + voice (STT), push |
| 6 | Měsíc 6+ | Feed, Twenty CRM / Kosmo PM organicky | + WhatsApp, TTS |
| 7 | Měsíc 9+ | Portfolio žáka (Gemini Vision) | Beze změny |
| 8 | Rok 2+ | Sokratův průvodce, IVP | + žákovský přístup |
Onboarding — žádný big bang
Fáze 0: CC sofie@ v emailech → Sofie pozoruje, nikoho neoslovuje
Fáze 1: Aktivní uživatelé mají appku → Sofie posílá karty a návrhy
Fáze 2: Sofie potřebuje info → osloví emailem, zpracuje odpověď
Fáze 3: Neaktivní uživatel vidí, že to funguje → sám si otevře appku
Nulová bariéra. Nikdo není nucen. Přirozená adopce.
Trust gradient — stupně autonomie
Stupeň 0: Sofie jen pozoruje (CC pattern)
Stupeň 1: Sofie navrhuje, člověk schvaluje vše
Stupeň 2: Sofie schvaluje nízko-rizikové sama (auto-publish)
Stupeň 3: Sofie odpovídá rodičům z ověřené KB sama
Stupeň 4: Sofie zakládá akce z vlastní iniciativy
Stupeň 5: Sofie identifikuje mezery a navrhuje nové workflow
Klíčová rozhodnutí (přehled)
| Oblast | Rozhodnutí | Zamítnuto |
|---|---|---|
| LLM orchestrátor | n8n + Vertex AI (Gemini) | Dify, Vertex AI Agent Builder |
| RAG | pgvector v Supabase | Weaviate |
| Znalostní báze | BookStack | Google Drive (jen pro dokumenty) |
| Email politika | Walled Garden (no-reply, rodič musí do appky) | — |
| CRM | Twenty | HubSpot |
| PM | Kosmo PM (vlastní kanban) | Asana, Plane |
| Newsletter | Listmonk (fáze 2+) | — |
Sloučeno z DECISION_AI_COMMUNICATION.md, DECISION_KNOWLEDGE_BASE.md, DECISION_LLM_ORCHESTRATOR.md a TONE_MANUAL_DRAFTS.md. Poslední aktualizace: březen 2026.