Reading time:
Catch the wobble: 5 steps to segmenting residential energy customers
How to do segmentation in a way that doesn't produce underperforming campaigns and a very resentful Marketing director who has started referring to 'the data team' with finger quotes.

Article written by
Julie Radu
Last homework: accept that the average household is now a statistical fiction (part 1 here). Today's homework: how to do segmentation in a way that doesn't produce underperforming campaigns and a very resentful Marketing director who has started referring to 'the data team' with finger quotes.
Step 1: Build ground truth
The technical problem is class imbalance* and confounders*. EV charging looks, to a model, suspiciously like an immersion heater on a timer, or a pool pump, or a poorly insulated house with a resistive heater. A naïve classifier lands somewhere in the low 70s on precision. Getting into the 90s requires a labelled panel of confirmed EV households big enough to teach the model what an EV isn't (which is the part people don’t budget for, because 'we paid for a no-EV dataset' doesn't sound spectacular in budget discussions).
The tedious work here, checking a sample of 400 households and asking what's in their garage, then feeding it back into the model, shifts precision from the low 70s into the 90s.
The other part is charging session telemetry: actual consumption data from the charging endpoint, so the model learns what a real charging session looks like instead of inferring it from a meter reading. You can't buy this off a shelf. It comes from partnerships with whoever sits on the charge point, like flexibility providers, and there is never quite enough of it.
Step 2: Catch the wobble
Every detection model can spot an EV that's been charging for a year. The signal is loud and confident.
Yet the commercial window for an EV upsell is roughly the first 4-12 weeks of ownership. After that, the household has solved the problem (with a new tariff, or an app, or a charging routine, or a strong opinion about Type 2 connectors) and your email goes in the same mental folder as their dental reminder.
Most segmentation pipelines miss this window for infrastructure reasons. They run monthly batch jobs and require 60-90 days of stable signal before they'll commit to a label, because data teams are (correctly) more afraid of a false positive landing in Marketing's hands than of a false negative.
And latency isn't one number. A solar install shows up the day it's commissioned, because export is a clean, unambiguous signal. An EV takes weeks of charging sessions before a model will stake its reputation on the label, though you can trade confidence for speed and catch it in a fortnight if the campaign can tolerate the occasional false positive. For a heat pump you need a stretch of cold months with the thing working before there's anything to see.
The solution is to start asking 'did something change in this household's load shape in the last 14 days that's consistent with a new high-power flexible load?'
Asset events (something just changed) are worth roughly an order of magnitude more than asset states (this is probably an EV household).
Step 3: Quote the aspirational and the static price
'Switch to Plan X and save €120/year', based on what consumption profile?
The customer's current one, presumably. Which was generated while they were on a flat tariff and had precisely zero financial reason to shift load. You are using a profile shaped by Tariff A to predict their bill under Tariff B.
The economics literature calls this the elasticity-of-substitution problem and has been arguing about the right number for residential electricity since roughly 1978. The empirical estimate is that engaged households on a dynamic tariff shift somewhere between 5% and 25% of their flexible load to cheaper hours, depending on assets, automation, and whether they have a partner who is 'very into the app.' And that 5 to 25% is the top of the range. Unengaged households shift basically nothing and occasionally shift the wrong way because they misread the signal.
So an accurate tariff impact projection has three things in it: (1) the static counterfactual (what they'd pay on the new tariff with no behaviour change), (2) the engaged counterfactual (what they'd pay with realistic shifting given their asset mix), (3) a probability they're in the engaged group, based on observable signals like app usage and historical responsiveness.
The engaged counterfactual is the one people fudge, because a 5-25% range feels too wide to put a euro sign in front of. But you don't have to apply the range as a blanket. You can simulate the specific shift: this household has an EV, so what happens to the bill if two hours of charging move out of the 6pm peak and into the overnight window?

Step 4: Detect with a routing layer
You can detect the EV on Tuesday. Now: which team gets that signal, in what format, how fast, into which downstream system, triggering which next-best-action, in which channel, with what suppression logic so the household doesn't also get the generic April newsletter on the same morning?
If Detection lives in a data product and Marketing's campaign cadence is monthly, you have already burned three weeks of a twelve-week window before the signal becomes an email. If the signal arrives as a CSV that someone exports on Fridays, congratulations, you have built a very expensive lagging indicator.
To do this well treat detection events as a queue with an SLA. Signal → CRM event → suppression rules check → next-best-action selected → channel routed → measured.
Step 5: Score recommendations twice
A household that shifts EV charging from 6pm to 3am: awesome, everybody wins and everybody’s happy. A household with south-facing solar exporting into June negative-price hours on a generous flat feed-in: customer is indeed very happy while the retailer is haemorrhaging on every sunny Sunday. A recommendation engine has to know which one of these it produces.
Most segmentation optimises for customer savings, because that number is easy to produce and easy to show. Optimising for retailer cost-to-serve is harder as it needs your wholesale exposure, your hedging book, your balancing costs and your imbalance penalties, all at the quarter-hour level. Many retailers don't have a robust cost-to-serve figure at that resolution, so the first step is usually building one rather than plugging existing numbers into the engine.
—
*Class imbalance refers to a skewed distribution of the target variable in the training data. When one class (here, EV households) is heavily underrepresented, typically 3–5% of a retail portfolio, a classifier can minimise its overall error simply by predicting the majority class for every case. It reaches high accuracy while its recall on the minority class collapses, so headline accuracy becomes uninformative and precision/recall (or the F1 score) is the accurate metric.
*Confounders are variables that produce a load signature statistically similar to the one you're trying to detect, causing false positives. EV charging presents as a large, sustained, off-peak power draw with a characteristic ramp; so do a timed immersion heater, a pool pump, and resistive space heating in a poorly insulated dwelling. Because the model observes only aggregate consumption, it cannot separate these on the raw signal alone. The confound has to be broken by additional features (charging periodicity, ramp rate, session duration) or by a labelled control group of confirmed non-EV households.
Julie Radu

Article written by
Julie Radu



