# Dryfit Scenario: Freemium-to-paid

> Freemium SaaS where the wedge into paid is running up against free-tier limits. Limit-reached events feeding modals and trial starts are the signal chain.

*Source: [https://www.getbeton.ai/oss-tools/dryfit/scenarios/posthog-freemium-to-paid/](https://www.getbeton.ai/oss-tools/dryfit/scenarios/posthog-freemium-to-paid/)*

**Scenario kind:** posthog_freemium_to_paid
**Use-case kind:** freemium
**Value metric:** Free-tier limit hits that drive paid conversion
**Config file:** `configs/posthog_freemium_to_paid_mvp.yaml`
**Dataset id:** `posthog_freemium_to_paid_mvp_v1`

## Scale

- Accounts: 280
- Users per account (mean): 4
- Sessions per user (mean): 8
- Duration: 30 days

**Success event:** `trial_started` (account)

## Research metrics

- Time-to-limit
- Limit-hit frequency
- Conversion funnel drop-off

## Positive signals (ground truth)

- **limit_modal_trial** (count 80): `limit_reached → upgrade_modal_shown → trial_started`
- **blocked_feature_trial** (count 45): `feature_blocked → upgrade_modal_shown → trial_started`

## Negative signals (ground truth)

- **limit_modal_dropoff** (count 60): `limit_reached → upgrade_modal_shown`
- **repeated_feature_blocks** (count 40): `feature_blocked → feature_blocked`
