Governing product contract

Monetization & Entitlements Master PRD

Decision summary

Lissin launches with Free, Plus, and Pro. Free users retain discovery and a useful creation loop; Plus unlocks a larger weekly creation allowance, transcript, remix, files, and faster playback; Pro raises quotas and unlocks the complete creation/source toolset. A 3-day restricted Plus trial is the acquisition trial. Paywalls are contextual, server-authoritative, and use a two-stage rescue ladder: main → 50% exit offer; a later eligible paywall starts at 50% → 65% exit offer.

Product sign-off assumptions

The spoken “14-5 minutes” requirement is normalized as 45 Explore playback minutes per week. Pro files are normalized as 25 uploads/week at 25 MB each. Rollover is capped at one additional allowance window to avoid unlimited liabilities. The recurring-show weekly limits (shows/week: Free 1, Plus 2, Pro 5; trial 1 total) and the one-time episode limits (episodes/week: Free 2, Plus 10, Pro 50; trial 4 total) are now confirmed. Confirm or replace the remaining assumptions before implementation.

Problem and objective

The app has billing transport, access projection, and several paywall surfaces, but plan limits remain provisional, backend enforcement is absent, legacy and new tier stores overlap, and the requested offers/trial/grandfathering are not implemented. The objective is one auditable entitlement system shared by App Store Connect, RevenueCat, backend, iOS, and admin.

Product principles

Plan contract

RuleFreePlus trial (3 days)PlusPro
Recurring-show generation1 show/week1 show/week; max 1 during trial2 shows/week5 shows/week
Recurring episode max5 min15 min15 min25 min
One-time episode generation2 episodes/week4 total during trial10 episodes/week50 episodes/week
One-time max5 min15 min15 min25 min
Explore catalogAll catalog visible; 45 playback min/weekUnlimitedUnlimitedUnlimited
Playback speed1× onlyUp to 1.5×Up to 1.5×Up to 2×
TranscriptHiddenIncludedIncludedIncluded + advanced tools
RemixNoYesYesYes
Files03/week, 20 MB/file3/week, 20 MB/file25/week, 25 MB/file
SoundscapesBasic catalogExtended catalogExtended catalogComplete catalog
Sound effectsIncludedIncludedIncludedIncluded
Pro sources/exportNoNoNoSource monitoring, advanced transcript, creator export

Rollover normalization

MeterWindowRollover ruleRecommended cap
Recurring-show generationWeekly (UTC week; signup-anchored is a future refinement)Unused weekly shows roll one next weekly windowFree 2; Plus 4; Pro 10. Trial receives 1 total and does not roll.
Free Explore playbackWeeklyUnused minutes roll one week90 minutes total
One-time episode generationWeekly (all tiers)Unused episodes roll one weekFree 4; Plus 20; Pro 100. Trial 4 total with no rollover.
File uploadsWeeklyUnused upload credits roll one weekPlus 6; Pro 50
Quota clarification applied

Recurring-show values are shows generated per week (not per day, not a count of active schedule slots): Free 1, Plus trial 1 total, Plus 2, Pro 5. One-time values are one-off episodes per week: Free 2, Plus trial 4 total in trial, Plus 10, Pro 50.

Three-day Plus trial

Offer ladder and state machine

User statePrimary paywallOn closeNext eligible high-intent event
standardNormal plan/trial paywallShow one 50% exit offerPersist stage rescue50
rescue50Start directly with 50% offeringShow one 65% exit offerPersist stage rescue65
rescue6565% only when campaign and store eligibility permitDismiss completely; no fourth wallCooldown or campaign expiry
Active paid/trial/grantNo acquisition paywallPlan management only
Lapsed subscriberApple/RevenueCat win-back if eligibleDismissRespect win-back eligibility and cooldown
Store and review constraint

RevenueCat supports one exit offer from a presented paywall, not an unlimited stack. The requested behavior is therefore implemented across two sessions: standard→50%, then later 50%→65%. RevenueCat notes that aggressive exit offers can face App Review scrutiny as manipulative. Use one rescue per presentation, a visible close, truthful renewal terms, and a server cooldown.

Recommended offer mechanics

For never-subscribed users, promotional offers are not the right primitive because Apple limits them to current or previous subscribers. Use App Store introductory pricing on dedicated rescue products/packages, or approved offer codes. Attach every rescue product to the same Plus entitlement and show only through its RevenueCat offering. For lapsed subscribers, use promotional or win-back offers instead. Discount means 50%/65% off the first paid billing period unless product signs off on another duration; renewal returns to the standard price.

Paywall placements

PlacementSurfaceTriggerResume after purchase
OnboardingFull pageFinal onboarding stepEnter app with correct access
Second/extra generationFull pageRecurring or one-time credit unavailableSubmit generation
Plan & billingFull pageProfile → Plan & BillingReturn to plan management
Locked personal episodeFull pageFree user taps generated episode requiring paid playbackPlay tapped episode
Generation allowanceBottom sheetCredit/length limit reachedSubmit valid creation
Higher recurring allowanceBottom sheetUser requests a schedule or generation beyond the current weekly creditsSave or retry after valid access
Document attachBottom sheetFile upload unavailable/exhausted/oversizeOpen picker
RemixBottom sheetFree user taps RemixOpen Remix
Pro sourcesBottom sheet, violetNon-Pro user taps Pro source/export toolOpen tool
TranscriptBottom sheetFree user opens transcriptOpen transcript
SpeedInline lock/sheetUser selects > plan maximumApply chosen speed
Soundscape catalogInline locked row/sheetUser selects catalog item above tierSelect soundscape
Explore weekly timeBottom sheetFree playback ledger reaches limitResume selected catalog item

Subscription management

Profile/Settings → Plan & Billing becomes the permanent self-service entry point. It shows the effective plan, trial/paid/complimentary state, renewal or expiry date, current weekly and one-time balances, pending plan changes, Restore Purchases, and a Change or Manage Subscription action. Free and grandfathered-only users open the plan comparison flow; App Store subscribers open Apple’s native management sheet or RevenueCat Customer Center. Upgrades, downgrades, cadence changes, cancellation, and restore must refresh the server-authoritative access snapshot. The complete iOS build specification is in the separate iOS Subscription Management IPRD.

In-app jump notifications / monetization nudges

A jump notification is defined here as an in-app banner, card, coachmark, or inbox item that opens a paywall after an explicit tap. It must not automatically interrupt active playback.

Grandfathering

Admin selects a cohort using signup cutoff plus optional filters, chooses Plus or Pro, start/end time, campaign, reason, and whether the grant is revocable. The backend creates idempotent grants in bulk after a dry run. A grant overlays store access but never lowers a paid tier. Expiry reveals the underlying store tier. Lifetime access requires a nullable expiry or explicit permanent-grant type; do not fake lifetime with a distant date.

Analytics and success metrics

Master acceptance criteria