01
Case · Tibber
Churn-prediktion hos Tibber: från riskvärde till tid till händelse
Fyra länder, 550 000 kunder och en affärsmodell vars centrala risk är att folk lämnar. Modellen behövde svara på när, inte bara vem.
02
Kort svar
Hos Tibber, en nordisk energitech-scaleup med ungefär 550 000 kunder i fyra länder, är churn affärsmodellens centrala risk. Som Head of CRM & Lifecycle Strategy flyttade jag churn-prediktionen från ett statiskt riskvärde till survival-modeller – gradient-boostad accelerated failure time, skrivna av mig på Databricks – som ger en tid till händelse för varje kund. Ett riskvärde rangordnar vem som är på väg bort. En överlevnadskurva sätter ett datum på det, och ett datum är det enda en insats går att schemalägga mot.
Varför churn var siffran som betydde något
Tibber säljer el som en prenumeration, och i prenumererad el är relationen produkten. Elen i sig är odifferentierad – en kilowattimme är en kilowattimme – så det kunden fortsätter betala för är mjukvaran runt omkring, prismekanismen och känslan av att någon håller koll åt en. Det gör churn till affärsmodellens centrala risk snarare än ett marknadsföringsmått nedströms tillväxten.
Programmet täckte fyra länder och ungefär 550 000 kunder. Fyra marknader räcker för att skillnaderna mellan dem ska sluta vara anekdoter: anciennitetsprofilerna skiljer sig, säsongsmönstren skiljer sig, och skälen till att folk lämnar skiljer sig. En och samma insats lagd likadant över alla fyra är samma kompromiss gjord fyra gånger, och i den skalan har kompromissen ett pris som går att läsa i kohortkurvorna.
Det var också här jag slutade beställa churn-modeller och började skriva dem. Inte av någon förkärlek för själva hantverket. Avståndet mellan den som äger retention-siffran och den som anpassar modellen är precis där en retentionstrategi tyst blir en kampanjkalender igen, och det billigaste sättet att korta avståndet var att lära sig göra båda delarna.
- Roll
- Head of CRM & Lifecycle Strategy
- Bolag
- Tibber – nordisk energitech-scaleup
- Skala
- 550 000 kunder, fyra länder
- Metod
- Överlevnadsanalys – XGBoost-AFT
- Stack
- Databricks · SQL · Python
- Byggt av
- Mig, internt i stället för beställt
03
Varför ett riskvärde inte räckte
En churn-sannolikhet talar om i vilken ordning en lista ska betas av. Den säger ingenting om när den ska betas av, och det är två olika problem med olika svar. Nästan varje retentionkalender jag har ärvt löser det första och antar sedan tyst att svaret på det andra är ”den här månaden”.
Det antagandet blir dyrare ju fler marknader man kör. En enda månadstakt över fyra länder når de kunder vars risk mognar inom fjorton dagar för sent för att det ska spela roll, och de kunder vars risk mognar nästa kvartal månader innan en insats hade kunnat fungera – där de, eftersom de inte har gått någonstans än, tyst räknas som räddade. Båda felen kostar pengar och bara det ena syns i rapporteringen.
Vad en överlevnadskurva tillför
En survival-modell svarar på en annan fråga: inte hur sannolikt det är att en kund lämnar, utan hur länge kunden sannolikt stannar. Utfallet är en kurva i stället för en punkt – sannolikheten att kunden finns kvar nästa vecka, nästa månad, nästa kvartal. Läs av en tröskel på den och ni har ett datum. Ett datum går in i en plan; en decil gör det inte.
Träffsäkerheten är inte poängen här, och diskussioner om träffsäkerhet är oftast ett sätt att slippa den här. Det som spelar roll är att en tid till händelse gör ett retentionprogram till ett schema i stället för en månadslista. Varje kund har ett fönster, varje fönster har en kostnad, och frågan på måndagsmorgonen blir vilka fönster som stänger först i stället för vem som fick högst riskvärde.
04
Vad som byggdes
Gradient-boostade accelerated failure time-modeller – XGBoost-AFT – anpassade på Databricks mot kundhistorik på individnivå. AFT i stället för en klassificerare, eftersom de flesta i kundbasen inte har churnat än: deras verkliga livslängd är okänd och begränsad nedåt bara av hur länge man hunnit titta. En survival-modell räknar en fortfarande aktiv kund som delvis bevis. En klassificerare måste etikettera samma kund ”lämnade inte”, vilket lär den att alla som står på listan i dag är trygga.
Variablerna, på den nivå det är värt att beskriva dem
Kohortbeteende snarare än kampanjrespons: anciennitet, förbrukningsmönster och hur stabilt det är, fakturerings- och betalningshistorik, supportkontakter, och vilken marknad kunden sitter på. Varje variabel återskapad som den såg ut den dag prediktionen utgår från, aldrig som den ser ut nu. En tabell som läcker framtiden ger ett vackert valideringsvärde och noll prediktivt värde, och det är det vanligaste sättet arbetet tyst misslyckas på.
En modellfamilj, fyra marknader
Fyra marknader vill inte ha fyra orelaterade modeller, och en modell som låtsas att marknaderna är likadana är sämre än båda alternativen. Det som fungerar är en gemensam modellfamilj med marknaden som variabel och kalibrering per marknad ovanpå: mekaniken är gemensam, skillnaderna är uttalade i stället för oavsiktliga, och en ändring som görs för ett land syns för de tre andra innan den går live.
Var den kördes
Inne i bolagets egen miljö, på bolagets egen data, uppdaterad i en takt som retentionprogrammet kunde planera mot – och tillbakaskriven dit orkestreringen kunde läsa den. En prediktion som bara landar i en dashboard ändrar ingenting. Värdet måste komma dit beslutet fattas, den dag det fattas.
05
Hur det mättes
En survival-modell går att betygsätta på sina egna villkor: konkordans, kalibrering mot observerad anciennitet, och om den slår den enkla regeln – anciennitet plus dagar sedan senaste aktivitet – med tillräcklig marginal för att vara värd att underhålla. Det är grundkravet, och det är inte den intressanta frågan.
Den intressanta frågan är om det lönar sig att agera på modellen jämfört med att låta bli, och bara en design svarar på den. En holdout: slumpmässigt undanhållen inom varje behandlat segment, överenskommen innan första utskicket går, och avläst mot retention och bidrag i stället för mot öppningar och klick. Definierad i efterhand slutar en holdout vara en mätning och blir ett sätt att förklara ett resultat man redan har.
Vad designen måste tåla
- Slumpad inom segmentet, inte över hela basen. En kontrollgrupp dragen ur alla svarar på en fråga ingen ställde.
- Stor nog att se den effekt ni bryr er om. En holdout som är för liten för att upptäcka skillnaden är en kontrollgrupp bara till namnet, och den rapporterar ”ingen effekt” oavsett vilket av skälen som gäller.
- Ett fönster långt nog för händelsen. Churn är långsamt. En avläsning efter två veckor på ett beteende som tar ett halvår mäter kampanjen, inte retentionen.
- Samma definition av churn som modellen anpassats på. Att mäta en händelse och modellera en annan är det dyra misstaget, och det syns inte förrän någon stämmer av de två siffrorna mot varandra.
Det är den disciplinen som gör det möjligt att säga att något inte fungerade, också när det var mitt. Det är också skälet till att en effektsiffra lånad från ett annat bolag är värd så lite: ett tal framtaget under någon annans churn-definition, på deras marknader, mot deras utgångsläge, säger ingenting alls om ert. Det som går att flytta mellan bolag är designen, aldrig siffran.
06
Vad som förändrades
Retentionprogrammet slutade vara en månadslista och blev ett schema. Planeringsenheten gick från ”den översta tiondelen den här månaden” till ”kunderna vars fönster stänger inom tre veckor”, vilket är ett annat samtal med en annan budget – och ett som fyra marknader kan hålla var för sig i sin egen takt utan fyra separata strategier att underhålla.
Den andra förändringen var tystare och är förmodligen den mer varaktiga av de två: teamet kunde se kurvan. En rangordnad lista är ogenomskinlig, och en ogenomskinlig modell blir antingen åtlydd eller ignorerad, aldrig ifrågasatt. En överlevnadskurva per kohort går att vara oense med, så de som körde programmet började ifrågasätta den – och där slutar en modell vara en leverans och börjar vara infrastruktur.
Flyttade churn-insatserna från ett statiskt riskvärde till en schemalagd tid till händelse på fyra marknader.
Är churn den centrala risken även i er modell? Beskriv hur den ser ut.hello@andersson.consulting
07
Vad jag skulle göra annorlunda
Tre saker. Var och en är numera en stående regel snarare än en lärdom.
Bestäm definitionen av churn med ekonomi innan första variabeln skrivs
En churn-händelse och en rapporterad churn-siffra är inte automatiskt samma sak, och glappet mellan dem upptäcks sent och dyrt – oftast i mötet där modellens resultat jämförs med styrelsematerialet. Det är numera det första som skrivs ned i ett uppdrag, innan en enda tabell byggs.
Sätt den tråkiga utgångsmodellen i produktion först
Anciennitet plus dagar sedan senaste aktivitet, inkopplat i programmet och kört mot en holdout, innan survival-modellerna finns. Det kostar ungefär en vecka. Det ger den riktiga modellen något att slå, och det bygger mätrören vid en tidpunkt då ingen ännu är känslomässigt fäst vid resultatet.
Designa insatsen före prediktionen
En tid till händelse är bara värd att ha om något genuint annorlunda händer vecka två än vecka tio. Numera skriver jag insatskalendern först och låter den bestämma vad modellen måste leverera, i stället för att anpassa en modell och sedan fråga programmet vad det ska göra med den. Hälften av modellvalen svarar på sig själva när det dokumentet finns.
08
Tillgänglig för nya uppdrag
Hör av dig
Om timingen stämmer – mejla mig direkt. Det finns ingen funnel bakom, och svaret kommer från mig.