Přeskočit na hlavní obsah

Věrnostní program (PRD-04)

info

Colosseum Premium — bodový systém a e-shop odměn. Celý scope je F1. Plné znění najdete níže na této stránce.

Scope

FázeObrazovekOdhad
MVP0 (placeholder „Již brzy" v P9)
F15 (hub, e-shop, detail, empty, potvrzení)22 h

Bodový systém

AktivitaBody
Nákup vstupenky5 % z ceny
Narozeniny50 bodů
Kvízy / soutěže10–25 bodů

E-shop odměn

KategorieRozsah bodů
Slevové kupóny200–400
Merchandise500–1000
VIP / občerstvení25–500
  • Body ≠ peníze, pouze výměna v e-shopu
  • Expirace: 12 měsíců rolling
  • Max výměna: 1 odměna per typ per den

Detailní specifikace (Plné znění PRD)

PRD-04: Věrnostní program — Colosseum MA

Verze1.0
Datum2026-02-23
StavDraft
VlastníkSymbio — Analýza & Design

1. Přehled a cíle

Věrnostní program Colosseum Premium je kreditní systém, jehož cílem je motivovat uživatele k opakovaným nákupům a dlouhodobému vztahu s aplikací. Body se sbírají za nákupy a další interakce, uplatňují se výhradně ve věrnostním e-shopu — nelze je směnit za reálné peníze.

Toto rozhodnutí vychází z ekonomické reality (viz context/user-journeys/vernostni-program.md): při marži Colossea by klasický cashback byl nemotivační (cca 3 %, tj. ~33 nákupů na jednu vstupenku zdarma). Bodový systém s odměnami mimo vstupenky (merch, VIP, kupóny od pořadatelů) umožňuje vyšší vnímanou hodnotu.

Celý věrnostní program je F1 — v MVP se neimplementuje. MVP pouze připraví UI placeholder v účtu (P9) pro budoucí integraci.

Cíle

CílMetrikaFáze
Zvýšit opakované nákupyPodíl uživatelů s >2 nákupy za 6 měsícůF1
Zvýšit engagement s aplikacíPočet návštěv / měsíc u členů programu vs. nečlenůF1
Zvýšit průměrnou hodnotu objednávkyAOV členů vs. nečlenůF1
Zvýšit retenci (30/60/90 dní)Retence členů programu vs. nečlenůF1
Aktivovat spolupráci s pořadateliPočet pořadatelů nabízejících odměnyF1

Vazba na další PRD

  • PRD-01 (Nákup vstupenek): Checkout (P6) v F1 zobrazuje inline info o bodech za nákup. Košík (P5) v F1 může zobrazit upsell „+X bodů za tento nákup".
  • PRD-02 (Klientská zóna): Věrnostní hub (P10) je přístupný z uživatelského účtu (P9). Onboarding (S6) může obsahovat krok o věrnostním programu.
  • PRD-03 (Notifikace): Push notifikace o nových odměnách, blížící se expiraci bodů, dosažení milníku (F1).

2. User stories

MVP

IDRoleStoryAkceptační kritéria
US-04-01Registrovaný uživatelChci vidět, že aplikace bude mít věrnostní programV uživatelském účtu (P9) je položka „Colosseum Premium" s popiskem „Již brzy" nebo s ikonou zámku. Tap zobrazí krátký teaser.

F1

IDRoleStoryAkceptační kritéria
US-04-02Registrovaný uživatelChci vidět svůj aktuální stav bodůHub (P10) zobrazuje aktuální počet bodů, úroveň, progress bar k dalšímu milníku.
US-04-03Registrovaný uživatelChci rozumět, jak body sbírámHub (P10) obsahuje sekci „Jak sbírat body" s přehledem zdrojů (nákupy, narozeniny, kvízy).
US-04-04Registrovaný uživatelChci vidět historii svých bodových transakcíHub (P10) obsahuje timeline bodových transakcí: zisk (+ body) a útrata (- body) s popisem zdroje.
US-04-05Registrovaný uživatelChci procházet odměny v e-shopuE-shop (P11) zobrazuje grid/list odměn s filtrováním dle kategorie, bodovou cenou a dostupností.
US-04-06Registrovaný uživatelChci vidět detail odměny před výměnouDetail odměny (S16) zobrazuje fotografii, popis, podmínky, bodovou cenu a CTA pro výměnu.
US-04-07Registrovaný uživatelChci vyměnit body za odměnuPo potvrzení výměny na S16 se odečtou body, zobrazí se potvrzení (X23) a odměna se aktivuje.
US-04-08Registrovaný uživatelChci vidět, kolik bodů získám za aktuální nákupV checkoutu (P6) inline řádek „Za tento nákup získáte +X bodů".
US-04-09Registrovaný uživatelChci uplatnit slevový kupón z věrnostního programu v košíkuKupón vyměněný v e-shopu se zobrazí v sekci kupónů v košíku (P5) a lze jej aplikovat na objednávku.
US-04-10Registrovaný uživatelChci dostat bonus k narozeninámSystém automaticky připíše 50 bodů v den narozenin (vyžaduje datum narození v profilu). Push notifikace: „Všechno nejlepší! Připsali jsme vám 50 bodů."
US-04-11Registrovaný uživatelChci vidět, jak daleko mám k další odměněProgress bar v hubu (P10) s milestone: „Ještě X bodů do [Název odměny]". Nejbližší dosažitelná odměna.
US-04-12Registrovaný uživatelChci dostat notifikaci, když mi brzy vyprší bodyPush notifikace X dní před expirací bodů (konfigurovatelné, default 14 dní).

F2+

IDRoleStoryAkceptační kritéria
US-04-13Registrovaný uživatelChci sbírat body i za další interakce (kvízy, soutěže)Gamifikační moduly: kvízy s 10–25 body za správné odpovědi, výzvy (challenge).
US-04-14Registrovaný uživatelChci vidět svou úroveň a exkluzivní benefity vyšších úrovníLevel systém (Bronze/Silver/Gold/Platinum) s progresí dle celkových nasbíraných bodů. Vyšší úrovně odemykají exkluzivní odměny.

TBD


3. Funkční specifikace

3.1 MVP scope

V MVP se věrnostní program neimplementuje. Připravuje se pouze:

  • Placeholder v účtu (P9): Položka „Colosseum Premium" v menu s ikonou a popiskem „Již brzy" nebo za zámkem.
  • Tap na placeholder: Zobrazí teaser bottom sheet nebo inline sekci s:
    • Krátký popis programu (1–2 věty)
    • Ilustrace nebo ikona
    • „Upozornit mě, až bude k dispozici" — toggle/CTA pro push notifikaci při spuštění
  • Backend: Základní datový model pro body se může připravit, ale není exponovaný v UI.

3.2 F1 rozšíření

Bodový systém — Colosseum Premium

Sbírání bodů
ZdrojBodyPodmínkyFrekvence
Nákup vstupenek5 % z ceny nákupu (zaokrouhleno nahoru)Průměrný nákup 2 000 Kč = 100 bodůKaždý dokončený nákup
Dárek k narozeninám50 bodůVyžaduje datum narození v profilu1× ročně
Kvízy a soutěže10–25 bodů per interakceSprávné odpovědi / dokončeníDle CMS kampaní
First purchase bonus50 bodůPouze první nákup v aplikaci1× (welcome bonus)
Registrace20 bodůPři dokončení registrace

Poznámka k přepočtu: 1 bod nemá přímou korunovou hodnotu. Hodnota odměn je nastavena v CMS nezávisle na bodové ceně — záleží na dohodě s pořadatelem. Princip: body ≠ peníze.

Uplatnění bodů — Věrnostní e-shop
KategorieBodový rozsahPříkladyPoznámka
Slevové kupóny200–400 bodůSleva 10–30 % na konkrétní akciPořadatel poskytuje slevu, Colosseum nastavuje bodovou cenu. TasteTown model — pořadatel zvyšuje povědomí a počet nákupů výměnou za slevu.
Merch500–1 000 bodůTrička, tašky, plakáty, programyMerch od pořadatele (reklamní předmět) nebo interní Colosseum merch. Logistika: objednávka → fulfillment (lhůta na doručení).
VIP / občerstvení25–500 bodůDrink na baru (50 bodů), VIP sedadlo (500 bodů)Technicky: výměna za „kategorii zákazníka" uplatnitelnou v košíku. Na baru: ukázání kupónu v aplikaci.
Expirace bodů
  • Body expirují 12 měsíců po posledním zisku (rolling window)
  • Každý nový bodový zisk resetuje 12měsíční okno pro VŠECHNY body
  • Push notifikace 14 dní před expirací (konfigurovatelné v CMS)
  • Expirované body se smažou a nelze obnovit

Věrnostní hub (P10)

  • Přístup: Z uživatelského účtu (P9), tab bar položka „Premium", nebo deep link z notifikace
  • Layout:
    • Header: Velký číselný ukazatel aktuálních bodů, animovaný při změně
    • Progress bar: Vizuální progres k nejbližší dosažitelné odměně (název + bodová cena)
    • Úroveň (F2+): Badge s aktuální úrovní (v F1 pouze „Člen" — bez level systému)
    • Sekce „Jak sbírat body": Ikonky + text per zdroj (nákupy, narozeniny, kvízy) s body za každý
    • Sekce „Historie": Timeline bodových transakcí:
      • Per řádek: datum, popis (např. „Nákup: La Traviata — +100 bodů"), running balance
      • Filter: „Vše" / „Zisky" / „Útraty"
      • Pagination (load more)
    • CTA: „Prozkoumat odměny" → navigace na e-shop (P11)
    • Footer link: „Pravidla programu" → external link nebo in-app rich text
  • Empty state (X21):
    • Ilustrace + „Zatím nemáte žádné body"
    • „Jak začít sbírat" — 3 kroky (nakupujte, slavte narozeniny, hrajte kvízy)
    • CTA: „Prozkoumat akce"

Věrnostní e-shop / katalog (P11)

  • Přístup: Z hubu (P10) CTA, z tab baru (sub-tab), deep link z notifikace
  • Layout:
    • Header: Aktuální body (compact) + „Máte X bodů"
    • Filtr chips: Vše / Kupóny / Merch / VIP & občerstvení
    • Grid/List toggle
    • Karty odměn:
      • Obrázek (thumbnail)
      • Název odměny
      • Bodová cena (badge)
      • Dostupnost indicator: „Skladem" / „Omezená nabídka" / „Vyprodáno"
      • Badge „Nové" pro čerstvě přidané
      • Badge „Nedostatek bodů" šedě, pokud uživatel nemá dost bodů
    • Sorting: Výchozí „Doporučené", volitelné „Nejlevnější" / „Nejdražší" / „Nejnovější"
    • Empty state: Pokud žádné odměny nejsou dostupné (nepravděpodobné — fallback)

Detail odměny (S16)

  • Layout:
    • Hero image: Fotografie odměny (full-width)
    • Název + bodová cena (velké číslo s ikonou bodů)
    • Popis: Rich text — co odměna zahrnuje, jak ji uplatnit
    • Podmínky: Platnost, omezení (konkrétní akce, pořadatel, venue), stav skladu
    • Sekce „Jak uplatnit":
      • Kupón: „Kupón se aktivuje v sekci Moje kupóny a můžete jej uplatnit v košíku"
      • Merch: „Objednávka bude doručena do X pracovních dnů na vaši adresu"
      • VIP/občerstvení: „Ukažte kupón na baru / při vstupu"
    • CTA sticky bar:
      • Dostatek bodů: „Vyměnit za X bodů" (primary, aktivní)
      • Nedostatek: „Potřebujete ještě X bodů" (disabled) + „Jak sbírat" link
      • Vyprodáno: „Momentálně nedostupné" (disabled)
  • Potvrzovací dialog (před výměnou):
    • „Opravdu chcete vyměnit X bodů za [Název odměny]?"
    • „Akce je nevratná."
    • CTA: „Potvrdit výměnu" / „Zrušit"
  • Potvrzení výměny (X23):
    • Success ilustrace + „Odměna je vaše!"
    • Detail: co uživatel získal, jak uplatnit
    • CTA: „Moje kupóny" (pro kupóny) / „Sledovat zásilku" (pro merch) / „Zpět do e-shopu"

Integrace s checkoutem (F1 rozšíření P5, P6)

  • Košík (P5):
    • Inline info řádek pod cenovou rekapitulací: „Za tento nákup získáte +X bodů ⭐"
    • Pokud uživatel má aktivní slevový kupón z věrnostního programu, zobrazí se v sekci kupónů jako předvyplněný
  • Checkout (P6):
    • Po sekci „Celková cena" řádek: „+X bodů na váš účet Colosseum Premium"
    • Kupón uplatněný v košíku se promítne do slevového řádku

Notifikace (integrace s PRD-03)

Typ notifikaceTriggerDeep link
Body připsány za nákupDokončená platbaHub (P10)
Narozeninový bonusDatum narozeníHub (P10)
Body z kvízuDokončení kvízuHub (P10)
Nová odměna v e-shopuCMS publikaceE-shop (P11)
Blížící se expirace bodůT-14d před expiracíHub (P10)
Milník dosaženCelkové body ≥ milestoneHub (P10)
Odměna doručena / připravenaFulfillment status changeDetail kupónu

3.3 F2+ rozšíření

Level systém

ÚroveňCelkové nasbírané body (lifetime)Benefity
Bronze0–499Základní odměny v e-shopu
Silver500–1 999Odměny Silver + přednostní přístup k limitovaným nabídkám
Gold2 000–4 999Odměny Gold + exkluzivní kupóny + early access na akce
Platinum5 000+Vše výše + osobní pozvánky na VIP akce + Platinum merch
  • Úroveň se počítá z lifetime bodů (ne aktuálního zůstatku) — utracené body se počítají
  • Downgrade: pokud uživatel nezíská žádné body za 12 měsíců, úroveň klesne o 1 stupeň
  • Badge úrovně se zobrazuje v hubu (P10), v profilu (P9), a volitelně u jména v recenzích

Gamifikace

  • Kvízy: CMS-řízené kvízy (5–10 otázek o kultuře, pořadatelích, historii venue). Odměna: 10–25 bodů per kvíz. Max 1 kvíz za den.
  • Challenge systém: „Navštivte 3 různé venue tento měsíc" → bonus body. CMS konfigurovatelné.
  • Streak: Bonus za X nákupů v řadě (3 nákupy za 3 měsíce → 2× body za další nákup).

3.4 K diskusi


4. Business rules

IDPravidloPodmínky
BR-04-01Body se přičítají až po dokončené platběRezervace (hotovost) = body se přičtou až po zaplacení na místě (status: paid)
BR-04-02Body za nákup = 5 % z celkové ceny, zaokrouhleno nahoruZáklad: celková cena vstupenek bez poplatků. 2 000 Kč → 100 bodů.
BR-04-03Body ≠ reálné penízeBody nelze převést na koruny, vyplatit, ani použít jako slevu mimo věrnostní e-shop
BR-04-04Body expirují 12 měsíců po posledním ziskuKaždý nový zisk (nákup, narozeniny, kvíz) resetuje okno pro VŠECHNY body uživatele
BR-04-05Výměna bodů je nevratnáPo potvrzení výměny se body odečtou a nelze vrátit. Kupón/odměna se aktivuje.
BR-04-06Max 1 narozeninový bonus ročněVyžaduje datum narození v profilu. Připsání v den narozenin (00:01).
BR-04-07Kupóny z e-shopu mají omezenou platnostDefault 30 dní od vyměnění (konfigurovatelné per odměna v CMS)
BR-04-08Slevový kupón = 1 per objednávkuV košíku lze uplatnit max 1 kupón z věrnostního programu na jednu objednávku
BR-04-09Pořadatel definuje výši slevy, Colosseum bodovou cenuKupón „20 % sleva na La Traviata" = pořadatel dává slevu, Colosseum nastavuje 300 bodů v e-shopu
BR-04-10Refund nákupu = odebrání bodůPokud je vstupenka vrácena (refund), body za nákup se odečtou. Pokud uživatel mezitím body utratil a jde do mínusu, zůstatek = 0 a další zisky nejprve pokryjí záporný stav.
BR-04-11Merch fulfillmentObjednávka merch z e-shopu → notifikace pořadateli → doručení do X pracovních dnů. Lhůta per pořadatel (CMS).
BR-04-12Občerstvení / bar kupónTechnicky: „kategorie zákazníka" uplatnitelná na konkrétní venue/pořadatele. Kontrola: ukázání QR v aplikaci na baru.

5. Data model

LoyaltyAccount

AtributTypPopis
idUUIDUnikátní identifikátor
userIdUUIDFK → User (1:1)
currentBalanceIntAktuální zůstatek bodů
lifetimeEarnedIntCelkové nasbírané body (pro level systém)
lifetimeSpentIntCelkové utracené body
levelEnumbronze, silver, gold, platinum (F2+: v F1 všichni = „member")
lastEarnedAtDateTimeDatum posledního zisku (pro výpočet expirace)
expiresAtDateTimeDatum expirace bodů (lastEarnedAt + 12 měsíců)
createdAtDateTimeDatum založení účtu

LoyaltyTransaction

AtributTypPopis
idUUIDUnikátní identifikátor
loyaltyAccountIdUUIDFK → LoyaltyAccount
typeEnumearn, spend, expire, refund_deduct
sourceEnumpurchase, birthday, quiz, registration, first_purchase, reward_exchange, expiration, refund
amountIntPočet bodů (+ pro earn, - pro spend)
balanceAfterIntZůstatek po transakci
descriptionStringPopis (např. „Nákup: La Traviata — Národní divadlo")
referenceIdUUID?FK → Order / Reward / Quiz (zdroj transakce)
createdAtDateTimeDatum transakce

Reward (CMS)

AtributTypPopis
idUUIDUnikátní identifikátor
nameStringNázev odměny
descriptionRichTextPopis a podmínky
categoryEnumcoupon, merch, vip, food_drink
pointPriceIntBodová cena
imageUrlStringURL fotografie
organizerIdUUID?FK → Organizer (pokud vázáno na pořadatele)
eventIdUUID?FK → Event (pokud vázáno na konkrétní akci)
venueIdUUID?FK → Venue (pokud vázáno na místo)
stockInt?Skladová dostupnost (null = neomezeno)
validityDaysIntPlatnost po vyměnění (default 30)
minLevelEnum?Minimální úroveň pro zobrazení (F2+: silver, gold, platinum)
statusEnumactive, sold_out, archived
createdAtDateTimeDatum publikace

RedeemedReward

AtributTypPopis
idUUIDUnikátní identifikátor
userIdUUIDFK → User
rewardIdUUIDFK → Reward
loyaltyTransactionIdUUIDFK → LoyaltyTransaction (spend)
statusEnumactive, used, expired
couponCodeString?Unikátní kód kupónu (pro uplatnění v košíku)
qrDataString?QR payload (pro bar / vstup)
validUntilDateTimeDatum expirace kupónu/odměny
usedAtDateTime?Datum uplatnění
createdAtDateTimeDatum vyměnění

6. Edge cases a error states

ScénářChování
Uživatel nemá datum narození a chce narozeninový bonusV hubu (P10) info: „Doplňte datum narození v profilu a získejte 50 bodů k narozeninám." Link na editaci profilu (S14).
Refund objednávky — uživatel mezitím body utratilBody se odečtou, zůstatek může jít do mínusu (interně). UI zobrazí 0 bodů. Další zisky nejprve pokryjí záporný stav. Uživatel vidí transakci „Vrácení bodů za refund: -X bodů".
Výměna bodů, ale odměna se mezitím vyprodala (race condition)Po potvrzení výměny server kontroluje dostupnost. Pokud sold out: dialog „Bohužel, odměna se právě vyprodala. Vaše body nebyly odečteny." + CTA „Zpět do e-shopu".
Expirace bodů14 dní předem: push notifikace „Vaše body vyprší [datum]. Vyměňte je za odměnu!" Den expirace: body se odečtou, transakce typu expire.
Uživatel má 0 bodů a otevře e-shopVšechny odměny se zobrazí, ale s disabled badge „Nedostatek bodů" a textem „Potřebujete X bodů". CTA e-shopu: „Jak sbírat body".
Kupón z e-shopu expiruje před použitímKupón přejde do stavu expired. Uživatel vidí v „Moje kupóny": „Platnost vypršela [datum]". Body se NEVRACEJÍ.
Duplikátní narozeninový bonusServer kontroluje: max 1 birthday bonus per calendar year. Pokud uživatel změní datum narození, bonus se nepřipíše znovu v témže roce.
Offline přístup k hubuHub zobrazuje cached data (poslední stav bodů, historie). Badge „Offline — data nemusí být aktuální". Výměna bodů vyžaduje připojení.
Smazání účtuVšechny body, transakce, kupóny a redeem history se trvale smažou (GDPR). Nevyužité kupóny se zneplatní.
Merch objednávka — doručovací adresaPři výměně za merch systém vyžaduje doručovací adresu. Pokud není v profilu: formulář inline.
Pořadatel zruší akci, na kterou existuje kupónKupón se automaticky zneplatní. Body se VRÁTÍ na účet uživatele. Push notifikace: „Akce [Název] byla zrušena. Vrátili jsme vám X bodů."

7. Screen mapping

IDObrazovkaTypFázePopis
P10Věrnostní program — hubPrimární (8h)F1Body, úroveň, historie, progress bar, CTA e-shop
P11Věrnostní e-shop / katalogPrimární (8h)F1Grid/list odměn, filtr, bodové ceny, dostupnost
S16Detail odměny / produktuSekundární (4h)F1Foto, popis, podmínky, bodová cena, CTA výměna
X21Empty state — Věrnostní programPodpůrná (1h)F1Prázdný stav bodů, vysvětlení, CTA
X23Odměna vyměněnaPodpůrná (1h)F1Potvrzení výměny, detail kupónu, navigace

Celkový odhad (čistý design)

FázeObrazovkyHodiny
MVP0 (placeholder v P9)0 h
F1522 h
F2+0 (rozšíření existujících)0 h
Celkem522 h

Poznámka: F1 rozšíření checkoutu (P5, P6) se počítá v PRD-01 odhadech, ne zde.


8. Otevřené otázky

Bodový přepočet — Je 5 % z nákupu finální? Jaký je minimální nákup pro připsání bodů? (Aby se předešlo micro-transakcím pro farming.)

Merch logistika — Kdo zajišťuje fulfillment merch objednávek? Pořadatel přímo, nebo Colosseum jako prostředník? Skladování?

Kupón od pořadatele — obchodní model — Jak přesvědčit pořadatele, aby poskytoval slevy do věrnostního e-shopu? Jaký je revenue share? „TasteTown model" — pořadatel získá nové zákazníky výměnou za slevu.

VIP místa v košíku — Technická implementace „kategorie zákazníka". Jak se kupón z e-shopu promítne do kategorie v seat map / košíku? Je potřeba nový ticket type?

Bar / občerstvení — validace — Jak se ověřuje uplatnění kupónu na občerstvení? QR scan barem? Manuální potvrzení? Integrace s POS systémem pořadatele?

Level systém (F2+) — Jaké konkrétní benefity per úroveň? Early access = kolik dní předem? Exkluzivní kupóny = jiná kategorie v e-shopu?

Expirace — komunikace — Stačí 1 push notifikace 14 dní předem, nebo série (14d, 7d, 1d)? Příliš notifikací = spam, příliš málo = ztráta bodů bez vědomí.

Záporný bodový zůstatek — Při refundu po utracení bodů: interně záporný stav, UI zobrazí 0. Je to OK? Alternativa: blokovat refund, pokud body utraceny (problematické z pohledu spotřebitele).