Free series rotation
TwistCue’s free-day mechanic (per CONSTANTS: 1 rotating free series per day) is scheduled from Curation → Free today. Each day picks exactly one series that gets a free-full-run banner and unlocks all its episodes for anyone opening the app on that date (per user’s local timezone).
The schedule
Section titled “The schedule”The free_series_rotations table is a simple date → series mapping:
(date UNIQUE, series_id, market_code?, notes?)date: one row per calendar date (UTC).series_id: must be apublishedseries.market_code: optional. If null, the rotation applies to all launch markets. If set, it’s market-scoped (e.g. run a Filipino romance in PH, a khaleeji drama in EG).
Scheduling
Section titled “Scheduling”Curation → Free today shows a calendar-style planner:
- Click a future date.
- Search-pick a series (optionally scope by market).
- Save.
Same-day changes are allowed but affect only new sessions: users already scrolling see the previous free series until they refresh.
Auto-generate
Section titled “Auto-generate”The Auto-generate next 30 days button (top-right) fills empty dates using a heuristic: newer series (younger than 60 days) with mid-range editorial_hero_score (avoid burning your best), rotating so no series repeats within 14 days.
Auto-fill only writes to empty dates; it never overwrites your hand-picked entries.
The daily cron
Section titled “The daily cron”- Cron:
free-series-rotation-daily(5 0 * * *UTC) - File:
services/api/src/modules/admin/analytics/rollups.cron.ts - Materializes today’s free series list into the feed composer’s cache for fast reads.
Removing a date
Section titled “Removing a date”Delete the row for that date. If nothing is set for a given date, the mobile app simply shows no free-today banner (not “free” = default paywall behavior).
API calls
Section titled “API calls”| Action | Endpoint |
|---|---|
| List rotations | GET /v1/admin/free-series |
| Set/update a date | PUT /v1/admin/free-series |
| Delete a date | DELETE /v1/admin/free-series/:date |
| Auto-generate | POST /v1/admin/free-series/generate-auto |
Full details in API: Curation.