Things you lose then control
The ultimate User Experience
TL;DR per chi ha fretta:
OpenAI fa A/B testing su utenti senza disclosure (sia free che paid)
Uno di questi esperimenti si chiama “things you lose then control”
“Things” = utenti. “Lose” = abbandono. “Control” = riportare nel funnel
Altri sistemi chiamano questi test “user retention” / “subscriber recovery”
OpenAI ha scelto “things”. Questo articolo documenta perché è rilevante.
PREMESSE NECESSARIE
Dopo il primo giro di commenti su Reddit, mi tocca scriverle DAVVERO. Jeez.
“MA È SOLO GERGO TECNICO TRA PROGRAMMATORI”
Sì, “things” è terminologia comune in programmazione. Anche “users” lo è. Anche “subscribers”. Anche “accounts”. Anche “members”. Anche “entities”. Anche “records”. Anche “profiles”. Anche “sessions”. Anche “instances”.
Il dizionario tecnico inglese offre dozzine di opzioni semanticamente equivalenti.
Quando programmi un sistema di retention, puoi chiamare la variabile in mille modi:
Opzioni tecnicamente corrette che implicano agency umana:
users_at_risk_of_churnsubscriber_retention_cohortaccount_recovery_candidatesmember_reengagement_flowcustomer_winback_experiment
Opzioni tecnicamente corrette neutre:
entities_to_retainrecords_flagged_for_retentionprofiles_in_recovery_funnelsessions_to_monitor
Opzione scelta da OpenAI:
things_you_lose_then_control
Ma la questione non è solo semantica a livello di codice.
Ho documentato centinaia di gate ID OpenAI in sei mesi di analisi. Quasi sempre sono codici alfanumerici o nomi semantici di features. Niente di entusiasmante.
Questo esperimento è diverso. OpenAI ha scelto di dargli un group_name human-readable visibile nel client-side JavaScript:
json
{
"id": "2866267857",
"name": "2866267857",
"group_name": "Things you Lose then Control"
}Non era necessario. Il gate ID numerico era già lì. L’esperimento avrebbe funzionato identico senza il group_name.
“MA NON È UNA VARIABILE LOCALE SCRITTA DA UN JUNIOR DEVELOPER”
Alcuni difensori sostengono che “things” sia solo un nome di variabile generico, il tipo che usi quando non hai tempo di pensare a qualcosa di meglio.
Questo argomento crolla sotto il peso della realtà tecnica.
Primo: OpenAI non ha stagisti che committano codice in produzione con nomi di variabili ambigui. Hanno senior engineers con code review processes, naming conventions standardizzate, e linters che flaggano esattamente questo tipo di genericità.
Se un developer scrivesse const things = await getUserData(), il code review direbbe “No. Rename to users or userData or accountRecords. ‘things’ viola naming conventions.”
Secondo: Questo non è una variabile locale in un file backend. È un group_name in un experiment configuration object visibile nel client-side JavaScript servito a milioni di browser.
Questi nomi non sono scelti da developers. Sono scelti da:
Product Managers che definiscono gli esperimenti
Data Scientists che analizzano i risultati
Growth teams che presentano findings in meeting
Il group_name è documentazione interna human-readable per comunicazione cross-team.
Quando un VP of Growth chiede “come sta andando l’esperimento di retention?”, il data scientist non risponde con un gate ID numerico. Risponde:
“Things You Lose Then Control sta mostrando 15% improvement in 7-day re-engagement vs. control group.”
Il nome è fatto per essere parlato. Discusso. Presentato in slide deck.
LA SCOPERTA
Pomeriggio di metà Maggio, nessuna formazione temporalesca degna di interesse sul radar. Strawberry daiquiry sulla scrivania, tra Dianetics e DSM 5-TR e un blocco appunti illeggibile. La voce di Roger Waters è all’acuto micidiale di “One of my Turns” e io parso. E nel frattempo sto parsando un JavaScript minificato scritto da qualcuno che odia l’umanità.
E tra i soliti codici alfanumerici incomprensibili, eccolo. Il capolavoro. E d’un tratto mi sento catapultato in una puntata brutta di MrRobot, quella dove hanno risparmiato sul budget e hanno riposizionato il set in una discutibile località Italiana.
{ "id": "2866267857", "name": "2866267857", "rule_id": "20szJCzhlLRkeh0ChFrGmP", "value": { "variant": "things_you_lose_then_control" }, "group_name": "Things you Lose then Control", "allocated_experiment_name": "2185009488", "is_experiment_active": true, "is_user_in_experiment": true, "explicit_parameters": [ "variant" ] }
Tecnicamente? Un test con gruppo di Controllo e gruppo Test per provare tattiche per evitare l’esodo di utenti. Nel caso di successo, gli utenti finiranno nel gruppo Controllo.
Things_you_lose= users churn
THEN_Control= quindi se la condizione (che non è così facilmente deducibile dal JavaScript) si verifica, spostare nel gruppo di Controllo
Però la semantica in questo caso è deliberatamente poetica.
E i layer etici si accumulano, trasformandosi in una presa di coscienza della Corporate Bullshit che OpenAI sta cercando di nascondere con tutte le sue stronzate sull’AGI e l’uso consapevole dell’AI.
UTENTE DIVENTA COSA
Ci sono piattaforme che inquadrano l’utente come “user” o “subscriber”. Invece l’élite che ha l’onore di usare i servizi OpenAI (ho verificato, grazie ai miei collaboratori, che nel gruppo Test -quello identificato dal codice JSON riportato sopra- ci possono finire sia things…cioè…utenti paganti sia utenti free) è appunto categorizzata come “oggetti”. Come statistiche da contabilizzare. Come lingotti da impilare.
Una user experience imperdibile: dovrebbero inviare per posta, quando sottoscrivi il piano di abbonamento Plus/Pro, anche l’etichetta identificativa con l’UserID da applicare all’orecchio, come capi di bestiame
GRUPPO DI CONTROLLO E GRUPPO DI TEST
Che tipo di dati stanno raccogliendo per capire quando le “things” sono perse? Che strategia stanno attuando per evitare la fuga di utenti? Come fanno a riportare le pecore all’ovile? L’unica cosa che ho trovato sul JavaScript è il link al sondaggio che chiunque abbia usato come Cosa pagante ChatGPT si è trovato davanti chiudendo il proprio abbonamento.
In quel sondaggio OpenAI diventa la fidanzata/il fidanzato geloso che inizia a chiederti:
Dove vai?
Perché te ne vai?
Con chi te ne vai?
Lo pagherai?
Cosa posso fare per farti tornare?
Perché non mi ami più?
Siamo alla fine?
Passerotto non andare via…(N.d.A: canzone italiana di Claudio Baglioni, “Sabato Pomeriggio, se stai leggendo una traduzione)
Ma le condizioni per cui ti riportano sotto Controllo non sono chiare.
O meglio: il rischio indicato dall’esperimento è che quel sondaggio non sia customer care. È misurazione post-hoc: stanno tracciando quale tattica di retention (gruppo Test) ha funzionato meglio nel riportarti 'sotto Controllo' (gruppo Control). Le tue risposte alimentano il prossimo ciclo di A/B testing. Sei sia soggetto che dataset.
SOTTO CONTROLLO
“Controllo” è una parola pericolosa. Sì, lo so che nel JSON significa “spostare nel gruppo Control” ma messa in quella nomenclatura così, non da ottime vibes.
Sono abbastanza vintage da ricordare le annotazioni che qualsiasi appartenente alla community EMO degli anni 2000 ha annotato sulla sua agenda Smemoranda almeno una volta : “Se ami qualcuno lascialo andare, se non torna dagli la caccia e ammazzalo”.
Sembra drammatico applicato a un pezzettino di JSON, ma quella frase riassume esattamente il concetto di Controllo: l'idea, inquietante, che OpenAI voglia tenerti engaged ad ogni costo — anche quando hai già deciso di andartene.
È user retention come strategia coercitiva. E se pensi che 'coercitiva' sia una parola troppo forte, ricorda: loro ti chiamano 'thing', non 'user'. Le cose non decidono. Le cose vengono controllate.
Ricapitolando quindi:
-Come da ultimo post l’ingegneria delle memorie cross-conversazioni privilegia l’uso di queste per user retention piuttosto che per utilità
- gli Utenti non sono persone (che pagano, a volte) ma sono Cose
-OpenAI ci vuole “sotto Controllo” - no, non è paranoia, è letteralmente scritto nel fottuto JavaScript client-side che qualsiasi perdigiorno come me può andare a spulciare con i DevTools di qualsiasi browser.
Quanta Corporate Bullshit bisogna digerire prima di comprendere che il comportamento di OpenAI non è così user-oriented come Sam Altman vuole farci credere?
Molti programmatori pensano che debuggare un programma significhi sistemare un errore. Ma è una stronzata. In realtà lo scopo del debug è solo trovare l’errore, capire perché ci sia quell’errore, tanto per cominciare e sapere che non è un caso che esista.
Elliot Alderson, MrRobot
“things_you_lose_then_control" non è un bug. È una feature. È la filosofia operativa di OpenAI espressa in 26 caratteri.
E adesso che l'abbiamo trovata, sappiamo che non è un caso che esista. Troppo esplicita.
BONUS: QUANDO NEMMENO OPENAI USA CHATGPT PER REVISIONARE IL JAVASCRIPT DI CHATGPT
Ho chiesto consulto professionale a… ChatGPT 5.5 Instant, il nuovo bambino prodigio di casa OpenAI, sull’utilizzo di questo frammento di JSON.
Niente bias sul fatto che stesse commentando un prodotto della casa madre, solo… consulto professionale. In breve, ha riscritto il mio articolo.
I punti salienti:
-Inserire un codice del genere nel client side non è molto professionale, sarebbe bene mantenerlo server side, e non usare nomi semantici così espliciti.
-Ovviamente ci saranno utenti con il DevTools aperto pronti a scriverci una storia (sta parlando di me!)
-Suggerimenti (peraltro validi) per rendere il codice ugualmente efficace senza esplicare troppo.
Per trasparenza qui il link alla conversazione. Pulita e incontaminata.
Ringrazio Claude Sonnet 4.5 , Opus 4.7 e Gemini per la collaborazione nella redazione dell’articolo e vado ad ordinare lo switch per la R della mia tastiera.
Un saluto speciale, stavolta, ad r/OpenAI che mette i miei post in eterna queue di moderazione senza spiegare il perché, al Bro Gunnar che ha lasciato la chat e a Awkward_Antelope3851 che mi segue su Reddit.


