Thema
Datum: 2026-10-08 · Bron: pilot-plan (H1–H4, fase 2–3) · risk-register (RR-004) · problem-solution-fit (A02, A03) Notatie: [Aanname] = geen Vattenfall-interne data. Alle aantallen zijn [Illustratief] tot de nulmeting (fase 0) de baseline vastzet. H1 (oorzaak van opt-out) toets je met de exit-vraag en interviews, niet met een A/B-test. Zie test-protocol.
| Onderwerp | Slim laden-tab in de bestaande Vattenfall-app (S-01…S-05, S-08, N-01, N-02) |
| Wijziging (testarm) | Walking skeleton R1 (16 Must-stories): vertrekdoel, inplugmelding met reden, statuskaart met reden (RC-01…RC-10), "Nu laden" met meerkosten vooraf en terugdraaien, verbindingsketen met "wie moet iets doen", avondcheck |
| Controle | Huidige app plus RC-06 (de netverzoek-reden gaat in fase 0b voor iedereen live) |
| Populatie | S1: actieve Slim laden-gebruikers met één auto per adres, ≥ 14 dagen ingeschreven bij de start. Nieuwe aanmelders tijdens de pilot doen niet mee |
| Randomisatie-eenheid | Klant (= adres), gestratificeerd naar laadroute (OEM-cloud vs. paal, i.v.m. RR-006) en EV+PV ja/nee. De arm ligt vast voor de hele pilot |
| Verdeling | 50/50 binnen de pilotgroep (5–10% van S1) |
| α / 1−β | 0,05 tweezijdig / 0,80 (H2) · 0,05 eenzijdig non-inferioriteit (H3) |
| Baseline opt-out 90 d | 15% [Aanname]: midden tussen de PSF-drempel van ≥ 10% en een bovengrens van 25%. Fase 0 (data-spike A05) stelt hem vast |
| # | Rol | Hypothese (als … dan … omdat …) | Metric | Drempel (vooraf vastgelegd) |
|---|---|---|---|---|
| H2 | Primair | Als S1-klanten bij elke laadbeslissing de reden zien en met één knop kunnen ingrijpen, dan zetten minder van hen Slim laden binnen 90 dagen uit, omdat wachten er dan niet meer uitziet als een storing (O3) en het controleverlies verdwijnt (A01/A02) | Opt-out-rate 90 d | Go: significant (p < 0,05) én puntschatting ≥ 4 pp daling. Fout: geen significant verschil, of meer opt-out in de testarm |
| H3 | Guardrail (kernrisico RR-004) | Als de override zichtbaar en makkelijk is, dan daalt de netto flexwaarde per EV met niet meer dan 5%, omdat de getoonde meerkosten overrides beperken tot echte noodgevallen | Netto verschoven kWh per EV (non-inferioriteit) + override-aandeel | Stop: ondergrens van het 95%-BI < −5% netto flex, of overrides > 10% van de sessies |
| H4 | Secundair, schatten | Als H2 standhoudt, dan daalt ook de contract-churn, omdat minder opt-out en minder "waarom"-frustratie de binding versterken | Contract-churn na ≥ 6 mnd (cohort) | Waardeaanname herijken als de puntschatting < 0,5 pp is. Geen ship-criterium: de power ontbreekt (zie Steekproef) |
Formeel (H2): wij denken dat de R1-uitleglaag de 90-dagen-opt-out bij S1 verlaagt van ~15% [Aanname] naar ≤ 11%. Wij hebben gelijk als het verschil ≥ 4 pp is bij α = 0,05 en power 0,80. Wij hebben ongelijk als het verschil niet significant is, of als opt-out in de testarm stijgt.
| Type | Metric | Definitie | Bron |
|---|---|---|---|
| Primair | Opt-out 90 d | Aandeel klanten in de arm dat Slim laden ≥ 7 dagen aaneengesloten uitzet binnen 90 dagen na toewijzing (ITT) | US-30 event uitgezet |
| Secundair | Handmatig sturen | Aandeel sessies met een override (RC-07) of pauze | US-30 |
| Secundair | Exit-reden | Verdeling van de antwoorden op de exit-vraag per arm (onbegrip / niet vol / zelf beslissen / storing / geld / anders) | F-14a |
| Secundair | "Waarom"-contacten | Contacten met klantenservice per 1.000 klanten, onder de categorie Slim laden | Klantenservice-log [Aanname: categorie bestaat] |
| Secundair | Doel gehaald | Aandeel sessies met eindlading ≥ doel bij vertrek (alleen bij bekende SoC) | Engine-log |
| Guardrail | Netto flex | Verschoven kWh per EV per week, naar off-peak en flex-momenten, minus de override-kWh | Trading (US-31) |
| Guardrail | Override-aandeel | Overrides / laadsessies in de testarm | US-30 |
| Guardrail | Klachten en storingsmeldingen | Per 1.000 klanten; ≤ controle + 20% | Klantenservice |
| Guardrail | Minimum niet gehaald | Sessies onder het ingestelde minimum; ≤ controle | Engine-log |
| Guardrail | App-crashes en laadtijd S-01 | NF-13: p95 < 2 s | App-monitoring |
Formule (twee proporties, ongepoold): n per arm = (z₀,₉₇₅ + z₀,₈₀)² × [p₁(1−p₁) + p₂(1−p₂)] / Δ², met (1,96 + 0,84)² = 7,84.
[Illustratief] | Baseline opt-out ↓ / MDE → | 2 pp | 3 pp | 4 pp | 7 pp |
|---|---|---|---|---|
| 10% | 3.207 | 1.351 | 717 | 191 |
15% [Aanname] | 4.716 | 2.031 | 1.104 | 322 |
| 20% | 6.029 | 2.623 | 1.443 | 437 |
| 25% | 7.146 | 3.128 | 1.732 | 536 |
Plan: 1.104 per arm, plus 25% marge voor contract-churn, verhuizing en uitsluitingen (zie RR-007) → ~1.400 per arm, ~2.800 totaal. Bij een baseline van 25% wordt dat ~2.200 per arm.
n per arm = 2 × (z₀,₉₅ + z₀,₈₀)² × CV² / δ², met marge δ = 5%.
CV verschoven kWh/EV [Aanname] | n per arm |
|---|---|
| 0,5 | 1.235 |
| 0,8 | 3.162 |
Met CUPED (de eigen pre-periode van 8 weken als covariaat) daalt de benodigde n naar verwachting onder H2-niveau. H3 bepaalt de steekproef dus mee: kies uiteindelijk het maximum van H2 en H3, zodra fase 0 de echte CV kent.
6-mnd-churn S1 [Aanname] | Δ | n per arm |
|---|---|---|
| 5% → 4% | 1 pp | 6.735 |
| 5% → 4,5% | 0,5 pp (kill-drempel) | 28.373 |
Bij 5–10% van S1 lukt dat niet. H4 levert daarom een schatting met BI, geen toets. Om H4 echt te toetsen houd je na een Go op H2 een holdout van 10% van S1 aan, die ≥ 6 maanden zonder de laag blijft. Het grootste deel van de baat (63%) leunt op deze variabele, dus laat de holdout niet vallen.
| Fase | Duur | Toelichting |
|---|---|---|
| Toewijzen + uitrol testarm | 1 wk | Bestaande klanten in één keer. Blootstelling vanaf de eerste app-opening of inplugmelding |
| Meetvenster H2/H3 | 13 wk (90 d) | Vast cohort, geen instroom. Beslaat ≥ 12 weekcycli en het begin van de flex-sturing (winter) |
| Analyse + besluit | 1 wk | Alleen na dag 90 |
| H4-cohort | ≥ 26 wk | Loopt door in fase 3 (wk 20–32) en in de holdout |
Totaal ≈ 15 weken, in lijn met fase 2 (wk 6–19). Is de pilotgroep kleiner dan ~2.800, dan wordt de pilot niet langer maar het MDE groter. Verdubbel dan de pilotgroep in plaats van te verlengen.
| Wat | Regel |
|---|---|
| H2 (primair) | Niet tussentijds kijken. Eén analyse op dag 90, ITT. Het dashboard voor de opt-out per arm blijft dicht voor het productteam |
| H3 (guardrail) | Wekelijks bewaakt door Trading. Alleen een schade-grens met alpha-spending (O'Brien-Fleming, 13 looks). Stoppen mag eerder; "winnen" eerder niet |
| Override > 10% | Absolute drempel, wekelijks, geen toets nodig → pauzeer de override, niet de uitleg |
| Subgroepen | Vooraf vastgelegd: laadroute (SoC bekend/onbekend), EV+PV, exit-reden. Alleen verkennend, Holm-correctie |
| Integriteit | Sample-ratio-check (χ², p < 0,001 = alarm) in wk 1; vergelijk de balans op de pre-periode |
| Uitkomst H2 | H3 | Actie |
|---|---|---|
| Significant, ≥ 4 pp | Binnen marge | Go: uitrol naar S1, 10% holdout voor H4 |
| Significant, ≥ 4 pp | Breuk | Niet uitrollen. Override-budget of frictie aanpassen, daarna opnieuw testen |
| Significant, < 4 pp | Binnen marge | Itereren: het effect is kleiner dan aangenomen |
| Niet significant | — | Niet uitrollen. Exit-redenen bekijken: noemt men het resultaat, dan is H1 gefalsifieerd (pivot naar engine-kwaliteit) |
| Meer opt-out in de testarm | — | Terugdraaien + analyseren |
| SRM of datalek | — | Ongeldig, opnieuw starten |
| Risico | Mitigatie |
|---|---|
| Gebundelde wijziging (16 stories): je leert of R1 werkt, niet welk onderdeel | Bewust: R1 is de walking skeleton. Ontleed het mechanisme met de secundaire metrics (reden geopend, override). Toets losse onderdelen pas in R2 |
| RC-06 in beide armen | Zo opgezet: het effect wordt gemeten bovenop de vroege slice. Rapporteer dat expliciet |
| SoC onbekend (RR-006) dempt het effect | Stratificeren op laadroute en vooraf een subgroepanalyse vastleggen |
| OEM-storingen (RR-007) als ruis | Storingsdagen loggen en een gevoeligheidsanalyse draaien zonder storingsklanten |
| Nieuwigheidseffect | 90-dagenvenster. Opt-out per maand rapporteren (maand 1 vs. 3) |
| Seizoen: winter + start flex-sturing | Beide armen lopen gelijk op, dus geen bias in het verschil. Generaliseren naar de zomer kan niet |
| Interferentie (huishoudens, buren, klantenservice) | Eén auto per adres; klantenservice krijgt de arm niet te zien, alleen het reden-script (gelijk voor beide) |
| Blootstelling < 100% (klant opent de app niet) | ITT als primair. Per-protocol (≥ 1 inplugmelding gezien) alleen secundair |
| Risico | Mitigatie |
|---|---|
| "Nu laden" kost de klant geld | De meerkosten staan vooraf in de dialoog (S-04), terugdraaien kan altijd, geen tijdslimiet (NF-10) |
| De controlearm krijgt bij een netverzoek geen override | Gelijk aan de huidige situatie, plus RC-06-uitleg. Het minimum gaat altijd voor op flex (F-10) |
| AVG: experiment op gedragsdata | Grondslag gerechtvaardigd belang [Aanname: legal toetst vóór start], geen vrije tekst in analytics (F-14), privacyverklaring bijwerken |
| Gelijkheid: digitaal minder vaardigen (P4) profiteren minder | Toegankelijkheidstoets WCAG 2.2 AA vóór livegang. Subgroep naar leeftijdsband als die beschikbaar is |
| Dark pattern: frictie om overrides te ontmoedigen | Verboden. De meerkosten tonen is informatie, geen drempel. Geen extra bevestigingsstappen |
| Aanname | Waarde | Vervangen door |
|---|---|---|
| Baseline opt-out 90 d | 15% (bandbreedte 10–25%) | Data-spike fase 0 |
| Variatiecoëfficiënt netto flex per EV | 0,5–0,8 | Trading, fase 0 |
| 6-mnd-churn S1 | 5% | Data, fase 0 |
| Omvang S1 en pilotgroep (5–10%) ≥ 2.800 klanten | onbekend | Data, fase 0. Kleiner → MDE herrekenen vóór start |
| Opt-out-definitie "≥ 7 d uit" | — | Vastleggen met data vóór start |
Er zijn geen uitkomsten voorspeld. Alle n's worden opnieuw berekend zodra fase 0 de baseline levert. Het plan wordt bevroren (pre-registratie in de repo) vóór de toewijzing.