Horror Cinema · MORPHEUS · Telegram and VK
Discounts only where time sits empty.One price in every channel.
A horror cinema sells sessions on its website and through Telegram and VK bots. Promo codes handed a discount to anyone, while empty weekday slots stayed empty. We replaced promo codes with a personal bonus wallet, taught the system to find sessions that usually don’t sell, and made the website and the bots work out the price in one place.
Live · wallet and bots since summer 2026, hot sessions since 11 July 2026
🎁 My bonuses
Your balance: 700 bonuses
🎬 Book👥 Invite a friend
200 expire on 24 October
500 expire on 3 November
1 bonus = 1 RUB. Bonuses can pay for up to 30% of a session.
🎬 Book
Tuesday 21 October, up to 4 guests:
13:00🔥 15:00
• 13:00 — 3,390 RUB
• 🔥 15:00 — 2,712 RUB · hot session −20%🔥 15:00
Discounted price: 2,712 RUB.
Use 339 bonusesNo bonusesthe server works out the discount, bonuses and cap
Bonuses can cover another 339 RUB — 30% together with the discount.
A 1,000 RUB prepayment holds the time.
- 30%cap on discount plus bonuses for any sessionenforced by the server, the same on the website, Telegram and VK
- 10 of 11hot-session bookings landed on time that usually sits emptypreviously 0.13 bookings per slot a week
- 9 of 11of those bookings ended in a won deal11 July – 9 October 2026
- 60 sbetween checks of the “session → discounted price” chainthree failures in a row alert Telegram
A promo code works for everyone. A bonus works for one person
A promo code has a life of its own: it gets forwarded and posted in coupon groups, and anyone who finds it gets the discount. Working out who it brought in and what it cost is close to impossible.
Instead, every customer got a personal balance in the bot. Bonuses are earned for specific actions: connecting the bot, a VK welcome after joining the community, subscribing to the channel, inviting a friend, finishing a quiz. Each award has its own expiry, and the same action never pays twice.
The spending rules are simple and the same everywhere. 1 bonus = 1 RUB, and bonuses can pay for no more than 30% of a session. Bonuses closest to expiry go first, so customers don’t lose what is about to run out.
🎁 My bonuses
Your balance: 700 bonuses
🎬 Book👥 Invite a friend
200 expire on 24 October
500 expire on 3 November
1 bonus = 1 RUB. Bonuses can pay for up to 30% of a session.
- Telegram
200 bonuses
for connecting the bot, expire after 21 days
- VK
500 bonuses
a welcome once community membership is confirmed
- Friends
200 / 100 / 50
for the first, second and each further friend, valid 30 days
Hot sessions: a discount only where time sits empty
A blanket discount also cuts revenue in hours that sell anyway. We needed a discount only on time that would otherwise stay empty.
The system looks at calendar history and picks up to three sessions in the next 7 days, no more than one per day: an empty weekday, a time next to a popular one, or a weak but sellable slot. These get 20% off, 15% in the morning. Customers see the same “hot session” badge on the website, in Telegram and in VK.
Discount and bonuses combine, but never beyond 30%: bonuses only fill the gap. If a 3,390 RUB session already has 678 RUB off, bonuses can cover another 339 RUB.
🎬 Book
Tuesday 21 October, up to 4 guests:
13:00🔥 15:00
• 13:00 — 3,390 RUB
• 🔥 15:00 — 2,712 RUB · hot session −20%🔥 15:00
Discounted price: 2,712 RUB.
Use 339 bonusesNo bonusesthe server works out the discount, bonuses and cap
Bonuses can cover another 339 RUB — 30% together with the discount.
A 1,000 RUB prepayment holds the time.
- 11hot-session bookings11 July – 9 October 2026
- 10 of 11on time that usually doesn’t sellby calendar history
- 3,059 RUBaverage session price after the discount
The discount got lost on its way to the server
In August, a review of one booking showed something unpleasant. The customer saw 2,712 RUB with the hot-session discount on the website, but 3,390 RUB went to the calendar and the CRM. Only the browser knew about the discount; the server recorded the full price.
The cause wasn’t a single bug but the fact that the price was worked out in several places. We kept one: the server calculates the price, discount and bonuses, and the website and bots only display the result. The server no longer accepts an amount from the website.
Rate
Hot session
Bonuses
Monitor
- price = rate − discount
- free times match the calendar
- three failures in a row alert Telegram
Then came the monitor. Every minute it checks the whole chain: the calendar is fresh, free sessions match the calendar, every hot session gets its discount, and the total equals the rate minus the discount. Three failures in a row send an alert to Telegram.
The bot reminds and refunds on its own
A booking without prepayment is held for 30 minutes, then the time is released. So customers don’t lose a session by forgetting, the bot reminds them to pay. Four such scenarios are switched on, all only for bookings no older than 48 hours: there is no point messaging someone about a week-old booking.
When a booking is cancelled, bonuses come back, but exactly those spent on that booking and with the original expiry. Since 17 October the same applies to a booking that wasn’t paid in time: we added this case after a customer got in touch, and the bot sends one message about the refund.
Your booking for 21 October at 15:00 is waiting for the prepayment. Without it the time is released 30 minutes after booking.
💳 Pay 1,000 RUBthe bot writes first, only about recent bookings
Your booking for 21 October is cancelled.
🎬 Pick another timeexactly what was spent on this booking comes back
339 bonuses are back on your balance, with the same expiry date.
Two brands, three bots, one core
The cinema’s Telegram and VK bots and the MORPHEUS immersive theatre’s Telegram bot share one core: menu, wallet, choosing a time, booking and payment. Only what really differs is different: the theatre has its own shows, day and evening rates, up to 4 guests in the price and +1,000 RUB for each additional one, 6 at most, and a 2,000 RUB prepayment.
The VK bot wasn’t about adding a channel for its own sake. People arriving from VK ads weren’t making it to Telegram, and since February Telegram has been restricted in Russia. The shared core opened a second channel without a second system: bookings from both bots and the website land in one calendar and one CRM.
How it was built
How we built it
The company decided how many bonuses each action earns, which campaigns to run and how deep a discount it could afford. We built the wallet, the single price calculation, hot-session selection, the monitor and the reminders.
Awards are protected by a key: one action, one award, even if the request arrives twice.
- The companyBonus amounts and expiry, campaigns, acceptable discount, message copy.
- SemCueThe wallet and spending rules, server-side pricing, hot sessions, the monitor, reminders and refunds.
- ManagersTake over the conversation when a customer types in their own words instead of tapping buttons.
For technical readers
Under the hood
- Wallet
- A ledger of awards and spends; each award has an expiry and a duplicate-protection key. Spending goes by nearest expiry, and each booking records how much was spent and refunded.
- Price
- One server-side calculation for the website, Telegram and VK. A hot-session discount and a promo code don’t stack — the better one wins; bonuses fill the gap up to 30%.
- Hot sessions
- Chosen from calendar history: up to 3 sessions in 7 days, at most one a day, 20%, 15% in the morning.
- Monitor
- A read-only check of the “calendar → free time → discounted price” chain every minute. Three failures in a row alert Telegram.
- Reminders
- A scenario engine: 4 switched on, only for bookings under 48 hours old, with short tracked links.
- Channels
- Telegram and VK adapters over one core, plus a theatre profile with its own rates. One calendar and one CRM.
Where the numbers come from
Where the numbers come from
- The bonus wallet description: award types, amounts, expiry, spending and refund rules.
- The hot-session decision log: mechanics, launch dates, booking results as of 9 October 2026.
- The booking funnel review of 8 August 2026.
- The booking monitor description and its alert settings.
- The reminder scenario catalogue and its switch-on log.
Next system
Cash Flow and payroll →