Historyczny kontekst sięga ewolucji modeli freemium od statycznych limitów (stałych 5GB w chmurze) do dynamicznych, adaptacyjnych ograniczeń opartych na Uczeniu Maszynowym. Klasyczne podejścia do oceny efektywności takich interwencji zmagają się z fundamentalną endogennością: system celowo ogranicza użytkowników z wysoką przewidywaną skłonnością do konwersji, tworząc silny przesunięcie selekcyjne. Wczesne metody analizy korelacyjnej dawały przesunięte oszacowania, ponieważ ignorowały confounding by indication, prowadząc do przeszacowania efektu o 200-300%.
Postawienie problemu wymaga pomiaru Local Average Treatment Effect (LATE) w warunkach, gdy przypisanie limitu jest skorelowane z latentną motywacją użytkownika. Model prognozuje prawdopodobieństwo konwersji $P(conv|X)$ i przypisuje ograniczenie przy $P > \tau$, co czyni grupy nieporównywalnymi pod względem obserwowalnych i nieobserwowalnych cech. Bezpośrednie porównanie użytkowników z limitem i bez niego prowadzi do overestimation, ponieważ grupa traktowana jest pierwotnie "gorętsza" i gotowa do płacenia.
Szczegółowe rozwiązanie opiera się na Regression Discontinuity Design (RDD) w punkcie $\tau$ modelu scoringowego. W okolicy progu (pasmo $h$) przypisanie limitu jest quasi-losowe, ponieważ użytkownicy z $P = \tau - \epsilon$ i $P = \tau + \epsilon$ są statystycznie nieodróżnialni. Buduje się ciągłą regresję wyniku na punkty scoringowe z oszacowaniem skoku (jump) w punkcie $\tau$. W celu zwiększenia dokładności stosuje się Causal Forest do oceny heterogeniczności efektu, a podczas etapowego wprowadzenia wykorzystuje się Difference-in-Discontinuities do kontroli trendów czasowych. Alternatywnie możliwe jest zastosowanie Inverse Propensity Weighting (IPW) z oceną propensity score przez Random Forest, ale to wymaga warunku unconfoundedness, który rzadko jest w pełni spełniany.
Problem
W produkcie B2B SaaS do zarządzania zadaniami wprowadzono dynamiczny limit na ilość aktywnych projektów dla darmowych kont. Model ML analizował ponad 50 cech zachowań i blokował tworzenie nowych projektów, prognozując prawdopodobieństwo konwersji powyżej 0.75. Zespół produktowy zaobserwował wzrost konwersji o 40% wśród "zalimitowanych" użytkowników, ale nie mógł oddzielić efektu ograniczenia od samo-selekcji zmotywowanych użytkowników. Pełny zakaz ograniczeń dla testu był niemożliwy, ponieważ oznaczałoby to utratę 200K USD MRR podczas eksperymentu.
Opcja 1: Naivne porównanie z danymi historycznymi
Porównać konwersję obecnych użytkowników z limitem w porównaniu do kohorty z przed dwóch miesięcy, przed wprowadzeniem funkcji. Plusy: wymaga minimalnych nakładów na infrastrukturę, szybka ocena bez zmian technicznych. Minusy: całkowicie ignoruje sezonowość (noworoczne spadki aktywności), ogólny trend wzrostu konwersji (produkt stawał się bardziej dojrzały) i efekt nowości; daje przesuniętą ocenę w stronę zawyżenia o 35-40% z powodu biasu selekcyjnego.
Opcja 2: Klasyczny A/B test z wyłączeniem modelu ML
Losowo wyłączyć przypisanie limitów dla 15% użytkowników, pozwalając im na nieograniczone korzystanie z produktu niezależnie od scoringu. Plusy: złoty standard przyczynowości, bezpośredni pomiar Average Treatment Effect (ATE). Minusy: kategorycznie odrzucone przez poziom C ze względu na ryzyko utraty "gorących" użytkowników, którzy w grupie kontrolnej nie dostaną impulsu do konwersji; tworzy znaczny koszt alternatywny i konflikty etyczne (dlaczego jedni mają wszystko, a inni nie).
Opcja 3: Regression Discontinuity Design z hybrydowym podejściem
Użyć naturalnego progu scoringowego (0.75) jako punktu rozłączenia, porównując użytkowników z prawdopodobieństwem konwersji 0.74 i 0.76 jako lokalnie losowe grupy (~5000 użytkowników w oknie ±0.05). Uzupełnić Synthetic Control Method dla regionów, w których wprowadzenie opóźniono o miesiąc. Plusy: zachowuje logikę biznesową dla 95% użytkowników; daje nieprzesuniętą ocenę lokalnego efektu (LATE) dla "granicznych" użytkowników; pozwala na wykorzystanie naturalnej wariacji bez uszczerbku dla przychodów. Minusy: wymaga dużej próby w pobliżu progu (>2000 obserwacji); ocena stosuje się tylko do podgrupy z $P(conv) \approx 0.75$, a nie do całej populacji; wrażliwa na manipulacje progiem (wymaga McCrary test na gęstość rozkładu).
Wybrane rozwiązanie i wynik
Wybrano RDD z optymalną szerokością okna wg metody Calonico-Cattaneo-Titiunik (CCT bandwidth), uzupełnione Causal Forest w celu znalezienia subpopulacji z negatywnym efektem. Analiza wykazała, że sztywny limit daje +12% do konwersji dla "średnich" użytkowników (około progu), ale -8% do retencji dla power users (wysokie zaangażowanie, ale scoring nieco poniżej progu). Na tej podstawie wprowadzono hybrydowy tryb: miękkie limity (tylko ostrzeżenie) dla power users, sztywne (hard cap) dla średnich. Ostateczny rezultat: wzrost konwersji o 8% przy zachowaniu 30-dniowej retencji na poziomie 96% od podstawowego, co przyniosło dodatkowe 450K USD ARR za kwartał bez odpływu kluczowych użytkowników.
Jak odróżnić efekt samego ograniczenia od efektu "przypomnienia" (reminder effect) o wersji płatnej?
Kandydaci często interpretują wzrost konwersji jako rezultat tylko finansowego ograniczenia, ignorując, że samo powiadomienie o limicie działa jako punkt kontaktowy marketingowy. Aby to odizolować, potrzebna jest dodatkowa grupa kontrolna z "miękkim" powiadomieniem (tylko informacja o premium bez blokowania funkcji) lub analiza czasu między pokazaniem limitu a konwersją. Jeśli konwersja następuje natychmiast (w ciągu godziny) — prawdopodobnie to reminder effect, jeśli po 3-7 dniach po kilku próbach przekroczenia limitu — to rzeczywisty efekt ograniczenia. Można również użyć zmiennej instrumentalnej w postaci technicznego opóźnienia odzwierciedlenia powiadomienia jako losowej wariacji intensywności przypomnienia, stosując 2SLS regresję.
Jak uwzględnić efekty sieciowe w produktach zespołowych (Notion, Figma), gdzie ograniczenie jednego użytkownika wpływa na współpracę współpracowników?
W B2B SaaS ograniczenie jednego członka zespołu tworzy spillover effects: współpracownicy mogą albo agregować zasoby w jednym koncie, albo migrować do konkurencji. Klasyczne RDD ignoruje te efekty zewnętrzne, naruszając SUTVA (Stable Unit Treatment Value Assumption). Rozwiązaniem jest cluster-RDD na poziomie zespołu/ workspace, gdzie treatment określany jest przez udział "zalimitowanych" użytkowników w zespole, lub wykorzystanie two-stage least squares (2SLS) z liczbą ograniczonych sąsiadów w grafie sieciowym jako narzędziem. Ważne jest, aby mierzyć naruszenia przez analizę aktywności sieciowej (network adjacency matrix) między użytkownikami z różnymi statusami limitów, sprawdzając hipotezę o homophily w zespołach.
Jak oddzielić prawdziwy efekt ograniczenia konkretnej funkcji od przesunięcia użycia na mniej wartościowe funkcje (substitution bias)?
Użytkownicy, napotkawszy limit na funkcję A, mogą migrować do funkcji B (na przykład z arkuszy do dokumentów tekstowych), co tworzy iluzję wysokiej retencji, ale faktycznie degraduje product stickiness i feature adoption depth. Aby to zmierzyć, potrzebna jest analiza Shannon entropy użycia funkcji (mierzenie różnorodności użycia) lub compositional data analysis (CODA). Jeśli entropia spada po wprowadzeniu ograniczenia, to znaczy, że doszło do kanibalizacji wewnątrz produktu. Optymalna polityka powinna maksymalizować nie tylko konwersję, ale oczekiwane LTV z uwzględnieniem zmiany wzorca użycia, co wymaga modelowania za pomocą Markov Decision Process (MDP) lub contextual bandit z funkcją nagrody, uwzględniającą głębokość przyjmowania funkcji i engagement velocity, a nie tylko fakt konwersji.