Obsah a podpora (PRD-06)
Podpora zákazníků a obsahový marketing. Plné znění najdete níže na této stránce.
Scope
| Fáze | Obrazovek | Odhad |
|---|---|---|
| MVP | 1 (podpora/kontakt) | 4 h |
| F1 | 2 (FAQ, chat) | 8 h |
| F2+ | 3 (blog feed, detail, empty) | 9 h |
| Celkem | 6 | 21 h |
Eskalační model
FAQ (self-service) → Kontaktní formulář → Chat s agentem → Telefon
Klíčové funkce per fáze
MVP: základní kontakt (info, formulář, provozní doba, mapa)
F1: FAQ s vyhledáváním a accordion, in-app chat s live agentem, volání z aplikace
F2+: blog/content feed, detail článku s galerií, inline event karty
Detailní specifikace (Plné znění PRD)
PRD-06: Obsah a podpora — Colosseum MA
| Verze | 1.0 |
| Datum | 2026-02-23 |
| Stav | Draft |
| Vlastník | Symbio — Analýza & Design |
1. Přehled a cíle
Oblast obsahu a podpory zajišťuje dvě klíčové potřeby uživatele:
- Podpora — Když má uživatel problém, musí rychle najít řešení nebo kontakt. Od základního formuláře (MVP) přes FAQ a samoobsluhu (F1) až po in-app chat a volání (F1).
- Obsah — Inspirace a edukace formou blogu, článků a propojení se sociálními sítěmi. Rozšiřuje hodnotu aplikace mimo čistý ticketing (F2+).
Fázování
| Fáze | Scope |
|---|---|
| MVP | Základní podpora — kontaktní informace, provozní doba, kontaktní formulář (S15) |
| F1 | Rozšířená podpora — FAQ s vyhledáváním (S17), in-app chat, volání z aplikace, historie konverzací (S18) |
| F2+ | Blog / content feed (S20), detail článku (S21), propojení se sociálními sítěmi |
Cíle
| Cíl | Metrika | Fáze |
|---|---|---|
| Poskytnout základní kontakt na podporu | Dostupnost kontaktu z jakékoli obrazovky (max 2 tapy) | MVP |
| Snížit zátěž zákaznické podpory | Podíl vyřešených dotazů přes FAQ vs. kontakt | F1 |
| Zvýšit spokojenost se zákaznickým servisem | CSAT score in-app chatu | F1 |
| Zkrátit čas do vyřešení problému | Průměrný resolution time (chat vs. formulář) | F1 |
| Zvýšit engagement a čas strávený v aplikaci | Počet zobrazení článků, průměrný čas čtení | F2+ |
| Zvýšit konverzi z obsahu na nákup | CTR z článku na detail akce → checkout | F2+ |
Vazba na další PRD
- PRD-01 (Nákup vstupenek): Detail akce (P3) obsahuje link na podporu pořadatele. Chybové stavy (X3, X4) odkazují na kontakt podpory.
- PRD-02 (Klientská zóna): Podpora je přístupná z uživatelského účtu (P9) jako položka menu. Historie chatu se váže na user account.
- PRD-03 (Notifikace): Blog články mohou generovat push notifikace (F2+ — „Nový článek: ..."). FAQ deep link z notifikací.
- PRD-05 (White-label): White-label aplikace zobrazuje kontakt na pořadatele (z brand konfigurace S24) s Colosseum fallbackem.
2. User stories
MVP
| ID | Role | Story | Akceptační kritéria |
|---|---|---|---|
| US-06-01 | Návštěvník / Registrovaný uživatel | Chci najít kontakt na zákaznickou podporu | Obrazovka podpory (S15) je dostupná z uživatelského účtu (P9) a z chybových stavů. Zobrazuje kontaktní údaje. |
| US-06-02 | Návštěvník / Registrovaný uživatel | Chci vědět, kdy je podpora dostupná | S15 zobrazuje provozní dobu (Po–Pá, víkendy, svátky). |
| US-06-03 | Návštěvník / Registrovaný uživatel | Chci odeslat dotaz na podporu | Kontaktní formulář na S15: jméno, email, kategorie dotazu, text zprávy, příloha (volitelná). Po odeslání potvrzení s referenčním číslem. |
| US-06-04 | Návštěvník / Registrovaný uživatel | Chci kontaktovat pořadatele konkrétní akce | Z detailu akce (P3) sekce „Kontakt" s kontaktními údaji pořadatele (z CMS). |
F1
| ID | Role | Story | Akceptační kritéria |
|---|---|---|---|
| US-06-05 | Registrovaný uživatel | Chci najít odpověď na běžnou otázku bez kontaktování podpory | FAQ (S17) s kategorizovanými otázkami a vyhledáváním. Accordion expand/collapse. |
| US-06-06 | Registrovaný uživatel | Chci chatovat s podporou v reálném čase | In-app chat (S18) s live agentem. Uživatel vidí status (online/offline), typing indicator, historii. |
| US-06-07 | Registrovaný uživatel | Chci zavolat podpoře přímo z aplikace | CTA „Zavolat" na S18 spustí telefonní hovor (native dialer) na linku podpory. |
| US-06-08 | Registrovaný uživatel | Chci vidět historii svých konverzací s podporou | S18 zobrazuje seznam předchozích konverzací (chat + formulářové dotazy) se statusem (vyřešeno/otevřeno/čeká). |
| US-06-09 | Registrovaný uživatel | Chci odpověď z FAQ přímo v kontextu problému | FAQ otázky mohou být deep-linkovány z chybových stavů (X3, X4) a z notifikací. |
F2+
| ID | Role | Story | Akceptační kritéria |
|---|---|---|---|
| US-06-10 | Návštěvník / Registrovaný uživatel | Chci číst články a novinky o kulturních akcích | Blog feed (S20) zobrazuje karty článků s obrázkem, titulkem, perex, datem. Filtr dle kategorie. |
| US-06-11 | Návštěvník / Registrovaný uživatel | Chci přečíst celý článek | Detail článku (S21): hero image, autor, datum, rich text, galerie, sdílení, related events. |
| US-06-12 | Návštěvník / Registrovaný uživatel | Chci z článku přejít přímo na akci, o které se píše | Článek obsahuje inline karty propojených akcí s CTA „Koupit vstupenky" → detail akce (P3). |
| US-06-13 | Návštěvník / Registrovaný uživatel | Chci sdílet článek | Share button na S21 — nativní system share (URL + preview image + titulek). |
| US-06-14 | Návštěvník / Registrovaný uživatel | Chci sledovat Colosseum na sociálních sítích | Odkazy na Instagram, Facebook, YouTube dostupné z profilu/účtu (P9) nebo footeru obrazovky podpory (S15). |
3. Funkční specifikace
3.1 MVP scope
Podpora / Kontakt (S15)
-
Přístup:
- Z uživatelského účtu (P9) → položka menu „Podpora"
- Z chybových stavů (X3, X4) → link „Potřebujete pomoc?"
- Z detailu akce (P3) → sekce kontakt pořadatele → „Kontaktovat Colosseum podporu"
-
Layout:
- Header: „Jak vám můžeme pomoci?"
- Sekce „Kontakty":
- Telefon: kliknutelné číslo (native dialer) s ikonou
- Email: kliknutelná adresa (native email client) s ikonou
- Provozní doba: strukturovaný výpis (Po–Pá: 9:00–18:00, So–Ne: zavřeno, svátky: zavřeno)
- Online status indicator: „Jsme online" / „Momentálně offline — odpovíme příští pracovní den"
- Sekce „Napište nám" (kontaktní formulář):
- Jméno (prefill pro přihlášeného)
- Email (prefill pro přihlášeného)
- Kategorie dotazu (select): Nákup vstupenek / Moje vstupenky / Platby a refundy / Účet a přihlášení / Technický problém / Jiné
- Popis problému (textarea, min 10 znaků)
- Příloha (volitelná): max 3 soubory, max 10 MB per soubor, formáty: JPG, PNG, PDF
- CTA: „Odeslat"
- Po odeslání:
- Success state: „Děkujeme! Vaše zpráva byla odeslána."
- Referenční číslo: „Číslo vašeho dotazu: #XXXX"
- „Obvykle odpovídáme do 24 hodin v pracovní dny."
- CTA: „Zpět" / „Odeslat další dotaz"
- Footer:
- Sociální sítě: ikony Instagram, Facebook, YouTube (linky z CMS)
- „Podmínky použití" a „Ochrana osobních údajů" (external links)
Kontakt pořadatele (z detailu akce P3)
- V detailu akce (P3) sekce „Kontakt" zobrazuje:
- Název pořadatele (link na profil S13)
- Telefon (pokud dostupný v CMS)
- Email (pokud dostupný v CMS)
- Web (pokud dostupný)
- Pokud pořadatel nemá kontaktní údaje: fallback na Colosseum podporu
3.2 F1 rozšíření
FAQ / Samoobsluha (S17)
-
Přístup:
- Z obrazovky podpory (S15) — sekce „Časté dotazy" nad formulářem
- Z uživatelského účtu (P9) → „Často kladené otázky"
- Deep link z chybových stavů a notifikací
-
Layout:
- Vyhledávání: Search bar nahoře — full-text search across otázek a odpovědí
- Kategorie: Horizontální chip filter:
- Vše / Nákup vstupenek / Platby a refundy / Moje vstupenky / Účet / Věrnostní program / Technické problémy
- Seznam otázek: Accordion (tap to expand/collapse):
- Otázka (bold, collapsed by default)
- Odpověď (rich text — bold, links, bullet points)
- „Pomohla vám tato odpověď?" — 👍 / 👎 feedback
- Footer: „Nenašli jste odpověď?" → CTA „Kontaktovat podporu" (→ S15 formulář nebo S18 chat)
-
Obsah: Spravovaný v CMS (Dato). Každá FAQ položka:
- Otázka (String)
- Odpověď (Rich Text)
- Kategorie (select)
- Priorita / pořadí (Int)
- Status: publikováno / draft
-
Search: Client-side fuzzy search (offline capability) + server-side full-text pro lepší relevanci. Highlight matching textu v odpovědi.
Chat / Rozšířená podpora (S18)
-
Přístup:
- Z obrazovky podpory (S15) — CTA „Chatovat s námi" (viditelný jen pokud podpora online)
- Z FAQ (S17) — „Nenašli jste odpověď? Napište nám."
- Floating chat bubble (FAB) na vybraných obrazovkách (konfigurovatelné v CMS)
-
Chat interface:
- Header: „Zákaznická podpora" + online/offline status + avatar agenta
- Message list:
- Bubliny: uživatel (vpravo, accent barva) / agent (vlevo, šedá)
- Timestamp per zpráva
- Typing indicator (animated dots) při psaní agenta
- Podpora obrázků a souborů v chatu (upload/download)
- Auto-scroll na nejnovější zprávu
- Input bar:
- Textové pole + send button
- Attachment button (fotka, soubor)
- Keyboard dismiss na scroll up
- Offline stav:
- „Podpora je momentálně offline. Odpovíme vám, jakmile budeme k dispozici."
- Uživatel může odeslat zprávu — doručí se, až bude agent online
- Alternativa: „Zavolejte nám" CTA s telefonním číslem
-
Volání z aplikace:
- CTA „Zavolat" (ikona telefonu) v header S18 nebo v S15
- Spouští native dialer s číslem zákaznické podpory
- Číslo konfigurovatelné v CMS (per locale / per white-label app)
-
Historie konverzací:
- Seznam předchozích konverzací na S18 (tab: „Chat" / „Historie")
- Per konverzace: datum, preview poslední zprávy, status (otevřeno / vyřešeno / čeká na odpověď)
- Tap → otevře celou konverzaci (read-only pro vyřešené, aktivní pro otevřené)
- Formulářové dotazy z MVP se zobrazují také — status dle odpovědi podpory
-
Integrace: Doporučení: napojení na existující helpdesk řešení (Zendesk, Intercom, Freshdesk) přes SDK / API. Alternativa: vlastní řešení (vyšší náklady).
3.3 F2+ rozšíření
Blog / Obsah — feed (S20)
-
Přístup:
- Tab bar položka „Magazín" / „Novinky" (nebo sub-tab pod Home)
- Deep link z push notifikací
- Cross-link z detailu akce (P3): „Přečtěte si více o [akci/pořadateli]"
-
Layout:
- Header: „Novinky a zajímavosti" + search ikona
- Featured článek: Velká karta nahoře (hero image, titulek, perex, datum). CMS-řízený výběr.
- Filtr chips: Vše / Rozhovory / Tipy / Recenze / Novinky / Za scénou
- Grid článků: 2-column grid nebo vertikální list:
- Karta článku:
- Obrázek (thumbnail, 16:9)
- Kategorie badge
- Titulek (max 2 řádky)
- Perex (max 3 řádky)
- Datum publikace
- Čas čtení (estimated: word count / 200)
- Tap → detail článku (S21)
- Karta článku:
- Pagination: Infinite scroll nebo „Načíst další"
- Empty state (X25): „Zatím žádné články. Sledujte nás pro novinky!" + CTA „Prozkoumat akce"
-
Propojení s akcemi: Články mohou být tagované na konkrétní Event / Organizer / Venue. V detailu akce (P3) sekce „Články" zobrazuje související obsah.
Detail článku (S21)
- Layout:
- Hero image: Full-width, parallax scroll efekt
- Metadata bar: Autor (jméno + avatar) | Datum publikace | Čas čtení | Kategorie badge
- Titulek: H1, velký
- Perex: Lead text (bold/italic, odlišený od body textu)
- Body: Rich text:
- Odstavce, nadpisy (H2, H3)
- Obrázky (inline, full-width, galerie carousel)
- Video embed (YouTube, Vimeo)
- Citace (blockquote)
- Seznamy (bullet, numbered)
- Inline event karty: mini karta akce s CTA „Koupit vstupenky" → P3
- Galerie: Swipeable horizontal galerie (pokud článek obsahuje >3 obrázky)
- Sekce „Související akce": Karty propojených eventů (max 3)
- Sdílení: Floating share button (bottom right) → native system share sheet
- Footer:
- „Líbil se vám článek?" — 👍 / 👎 feedback
- „Další články" — horizontální carousel dalších článků ze stejné kategorie
- Autor bio (krátké, kliknutelné na profil autora — pokud existuje)
Sociální sítě
- Umístění odkazů:
- Obrazovka podpory (S15) — footer
- Uživatelský účet (P9) — sekce „Sledujte nás"
- Blog feed (S20) — footer
- Volitelně: Home (P1) — footer
- Platformy: Instagram, Facebook, YouTube
- Chování: Tap → otevření v nativní app (pokud nainstalována) nebo v systémovém prohlížeči
- URL: Konfigurovatelné v CMS (per hlavní app + per white-label app)
3.4 K diskusi
—
4. Business rules
| ID | Pravidlo | Podmínky |
|---|---|---|
| BR-06-01 | Kontaktní formulář nevyžaduje přihlášení | Návštěvník (nepřihlášený) vyplňuje jméno a email ručně. Přihlášený = prefill. |
| BR-06-02 | Odpověď na formulář do 24 h v pracovní dny | SLA — měřené od odeslání po první odpověď. Zobrazit uživateli jako expectation. |
| BR-06-03 | Chat dostupný jen v provozních hodinách | Mimo provozní dobu: offline stav s možností odeslat zprávu (odpověď příští pracovní den). |
| BR-06-04 | FAQ obsah spravuje Colosseum tým | CMS: Dato. Editor přidává/edituje/řadí otázky. Kategorie jsou fixní (definované v kódu). |
| BR-06-05 | Blog články spravuje Colosseum tým | CMS: Dato. Editor vytváří články, taguje na events/organizers/venues. |
| BR-06-06 | Blog článek může odkazovat na 0–N eventů | Vazba article → events. V detailu článku se zobrazují jako inline karty. |
| BR-06-07 | FAQ feedback (👍/👎) je anonymní | Slouží pro interní analytiku. Uživatel nevidí agregovaný výsledek. |
| BR-06-08 | Chat historie se uchovává 12 měsíců | Po 12 měsících se archivuje. Uživatel vidí jen posledních 12 měsíců. |
| BR-06-09 | Přílohy v chatu: max 10 MB per soubor | Formáty: JPG, PNG, PDF, HEIC. Video: ne (příliš velké). |
| BR-06-10 | Sociální sítě se otevírají v nativní app | Pokud nainstalována, jinak system browser. Univerzální link / deep link. |
| BR-06-11 | Blog push notifikace max 1× denně | Nový článek = max 1 push per den per uživatel (aby nedocházelo ke spamu při hromadné publikaci). |
5. Data model
SupportTicket
| Atribut | Typ | Popis |
|---|---|---|
| id | UUID | Unikátní identifikátor |
| userId | UUID? | FK → User (null pro nepřihlášené) |
| ticketNumber | String | Referenční číslo (#XXXX) |
| category | Enum | purchase, tickets, payments, account, technical, other |
| name | String | Jméno odesílatele |
| String | Email odesílatele | |
| message | Text | Text dotazu |
| attachments | JSON | Pole URL příloh |
| status | Enum | new, open, waiting_for_customer, resolved, closed |
| createdAt | DateTime | Datum odeslání |
| resolvedAt | DateTime? | Datum vyřešení |
| source | Enum | form, chat |
ChatConversation
| Atribut | Typ | Popis |
|---|---|---|
| id | UUID | Unikátní identifikátor |
| userId | UUID | FK → User |
| supportTicketId | UUID? | FK → SupportTicket (pokud navázáno) |
| status | Enum | active, waiting_agent, waiting_customer, resolved, closed |
| agentName | String? | Jméno agenta |
| createdAt | DateTime | Datum zahájení |
| lastMessageAt | DateTime | Datum poslední zprávy |
| resolvedAt | DateTime? | Datum vyřešení |
ChatMessage
| Atribut | Typ | Popis |
|---|---|---|
| id | UUID | Unikátní identifikátor |
| conversationId | UUID | FK → ChatConversation |
| sender | Enum | user, agent, system |
| content | Text | Text zprávy |
| attachments | JSON? | Pole URL příloh |
| createdAt | DateTime | Timestamp |
| readAt | DateTime? | Čas přečtení (pro read receipts) |
FaqItem (CMS)
| Atribut | Typ | Popis |
|---|---|---|
| id | UUID | Unikátní identifikátor |
| question | String | Text otázky |
| answer | RichText | Text odpovědi |
| category | Enum | purchase, payments, tickets, account, loyalty, technical |
| sortOrder | Int | Pořadí v rámci kategorie |
| status | Enum | published, draft |
| helpfulCount | Int | Počet 👍 |
| notHelpfulCount | Int | Počet 👎 |
| createdAt | DateTime | Datum vytvoření |
| updatedAt | DateTime | Poslední úprava |
BlogArticle (CMS)
| Atribut | Typ | Popis |
|---|---|---|
| id | UUID | Unikátní identifikátor |
| title | String | Titulek článku |
| slug | String | URL slug |
| perex | String | Krátký úvod (max 300 znaků) |
| body | RichText | Tělo článku |
| heroImageUrl | String | URL hero obrázku |
| galleryUrls | String[] | URL obrázků v galerii |
| category | Enum | interview, tips, review, news, behind_the_scenes |
| authorName | String | Jméno autora |
| authorAvatarUrl | String? | Avatar autora |
| eventIds | UUID[] | FK → Event[] (propojené akce) |
| organizerIds | UUID[] | FK → Organizer[] (propojení pořadatelé) |
| venueIds | UUID[] | FK → Venue[] (propojená místa) |
| readingTimeMinutes | Int | Odhadovaný čas čtení |
| status | Enum | published, draft, archived |
| publishedAt | DateTime? | Datum publikace |
| createdAt | DateTime | Datum vytvoření |
| updatedAt | DateTime | Poslední úprava |
| likeCount | Int | Počet 👍 |
| dislikeCount | Int | Počet 👎 |
6. Edge cases a error states
| Scénář | Chování |
|---|---|
| Kontaktní formulář — odeslání bez připojení | Formulář se uloží lokálně, odešle se při obnovení připojení. Toast: „Zpráva bude odeslána po obnovení připojení." |
| Chat — agent neodpoví do X minut | Po 5 min čekání: systémová zpráva „Omlouváme se za čekání. Váš dotaz je ve frontě." Po 15 min: nabídka „Chcete raději odeslat zprávu emailem?" |
| Chat — ztráta připojení uprostřed konverzace | Inline warning: „Ztráta připojení. Zprávy se odešlou po obnovení." Zprávy se bufferují lokálně. |
| FAQ — žádné výsledky vyhledávání | „Pro '[hledaný text]' jsme nenašli žádnou odpověď." + CTA „Kontaktovat podporu" |
| FAQ — otázka odkazuje na funkci, která ještě není dostupná | Odpověď obsahuje info o plánovaném spuštění: „Tato funkce bude dostupná v příští aktualizaci." |
| Blog — článek odkazuje na zrušenou akci | Event karta v článku zobrazuje badge „Zrušeno". Link na detail akce stále funguje (detail zobrazuje info o zrušení). |
| Blog — uživatel otevře deep link na neexistující článek | Fallback: „Článek nebyl nalezen." + CTA „Zpět na novinky" (→ S20). |
| Sociální síť — nativní app není nainstalována | Otevření v systémovém prohlížeči (Safari/Chrome). |
| Příloha ve formuláři > 10 MB | Validace: „Soubor je příliš velký. Maximální velikost je 10 MB." File picker nepovolí výběr. |
| Nepřihlášený uživatel chce chat | Chat vyžaduje přihlášení (pro historii konverzací). CTA „Přihlaste se pro chat" + alternativa formulář (nevyžaduje login). |
| White-label app — kontakt na pořadatele | S15 zobrazuje kontakt na pořadatele (z brand konfigurace S24). Colosseum podpora jako fallback: „Pro technické problémy s aplikací kontaktujte Colosseum." |
| Blog feed je prázdný (F2+ launch) | Empty state (X25): ilustrace + „Připravujeme pro vás zajímavý obsah. Sledujte nás!" + sociální sítě ikony + CTA „Prozkoumat akce". |
| Uživatel odesílá formulář opakovaně (spam) | Rate limiting: max 3 formuláře za hodinu. Po překročení: „Příliš mnoho dotazů. Zkuste to prosím později nebo zavolejte." |
7. Screen mapping
| ID | Obrazovka | Typ | Fáze | Popis |
|---|---|---|---|---|
| S15 | Podpora / Kontakt | Sekundární (4h) | MVP | Kontaktní info, provozní doba, formulář |
| S17 | FAQ / Samoobsluha | Sekundární (4h) | F1 | Kategorizované otázky, vyhledávání, accordion |
| S18 | Chat / rozšířená podpora | Sekundární (4h) | F1 | In-app chat, volání, historie konverzací |
| S20 | Blog / obsah — feed | Sekundární (4h) | F2+ | Seznam článků, filtr, propojení s akcemi |
| S21 | Detail článku | Sekundární (4h) | F2+ | Rich text, galerie, related events, sdílení |
| X25 | Empty state — Blog | Podpůrná (1h) | F2+ | Prázdný blog feed, CTA |
Celkový odhad (čistý design)
| Fáze | Obrazovky | Hodiny |
|---|---|---|
| MVP | 1 | 4 h |
| F1 | 2 | 8 h |
| F2+ | 3 | 9 h |
| Celkem | 6 | 21 h |
8. Otevřené otázky
Chat řešení — Vlastní implementace, nebo napojení na existující helpdesk (Zendesk, Intercom, Freshdesk)? Integrace přes SDK vs. API. Vliv na náklady a rychlost implementace.
Kdo tvoří blog obsah? — Colosseum interní tým, external copywriter, nebo pořadatelé? Frekvence publikace? Minimální objem pro smysluplný launch? (Doporučení: min. 10 článků při spuštění, 2–3 nové týdně.)
Blog kategorie — Finální seznam kategorií? Aktuální návrh: Rozhovory / Tipy / Recenze / Novinky / Za scénou. Doplnit/upravit dle content strategie.
FAQ — self-service scope — Kolik FAQ položek při launchi F1? Kdo je tvoří? Máme existující FAQ z webu colosseumticket.cz jako základ?
Volání z aplikace — technické řešení — Klasický telefonní hovor (native dialer), nebo VoIP (in-app volání)? VoIP = lepší UX, ale vyšší komplexita a náklady. Doporučení: native dialer v F1, VoIP jako F2+ volitelné rozšíření.
Podpora per pořadatel vs. centrální — Má každý pořadatel svou linku podpory, nebo vše jde přes Colosseum? Implikace pro routing chatů a formulářů.
Blog v MVP? — V PRD-00 otevřená otázka: „Blog v MVP, nebo až v další fázi?" Aktuální zařazení: F2+. Pokud se rozhodne pro dřívější fázi, přesunout S20, S21, X25 do F1.
Sociální sítě — in-app feed? — Aktuální návrh: jen linky na external platformy. Zvážit: embedded Instagram feed / YouTube playlist přímo v aplikaci? (Vyšší engagement, ale závislost na external API.)