Skip to content

Before you ask for budget

Your data is messier than the demo.

Every estate’s is. Wrong MPANs, missing agreed capacity, a half-hourly feed that stopped in March and told nobody. The question was never whether your data is clean. It is what the software does on the days it isn’t.

Missing field → the charge it blocks → what still validates

The rule the rest of this page rests on

Absent is not zero.

A meter with no readings for a period has no metered volume. That is a different statement from “used nothing”, and the difference is the whole product. Where the reading is missing, the figure is withheld rather than computed against nothing, and anything derived from it, the unit rate, the intensity, the carbon, is withheld with it.

Simplest Energy is built for estates whose reference data has gaps, because every estate’s does. Nothing is guessed to fill one. Before a bill arrives, the Data Quality report assesses every meter against the supply-point attributes the pricing engine needs, and where one is missing it names the field and names the charge area that field blocks, rather than reporting a percentage or the word “incomplete”. An invalid MPAN core blocks distribution and transmission zone derivation; a missing agreed kVA blocks transmission fixed-residual banding and capacity charges. Everything not blocked is still validated, so partial reference data buys partial coverage instead of nothing. Consumption behaves the same way: the engine prices from half-hourly readings where they cover the period, from a register read where they do not, and from the bill’s own stated total where neither exists, and it records which of the three it used on every single bill.

What the report actually says

It names the field, and what that field blocks.

These are the reference-data groups the validation engine checks, read from the same module the product reads. A water meter requires none of them; a gas meter is never marked down for lacking a Profile Class.

GroupFields assessedBlocked while any is missing
Supply identityelectricityValid MPAN coreDUoS / TNUoS zone & DNO derivation (MPAN missing or not a valid core)
Settlement identityelectricityProfile Class, LLFC, MTC, SSC, Measurement Classnetwork & settlement charges
Network locationelectricityGSP Group, DNODUoS / TNUoS charges
Metering agentselectricityMOP, DC, DAmetering-charge & data-provenance checks
Capacity & bandingelectricityAgreed kVATNUoS fixed-residual banding & capacity charges
Gas supply pointgasAQ, SOQ, LDZ, Exit zonegas transportation & commodity charges
Energisationelectricity, gasEnergisationlive-supply status

A meter can be registered before its paperwork exists. It is then labelled as limited rather than left looking finished, naming which charge areas cannot yet be computed and why, so a thin result never reads like a complete one.

Our half-hourly feeds have holes in them.

A gap is work to close, not a quiet zero.

Coverage is shown down to the individual day, per meter, so a missing week is visible as a missing week rather than as a dip in an average. You set the grace period for each feed, and a feed that stops raises an alert instead of waiting to be noticed at year end.

Where a period is not fully metered, the engine says so and declines to price the charges that depend on it. It does not pro-rate quietly to produce a number that looks complete.

Which volume priced this bill

Half-hourly
The meter's own readings, where they cover the period. Forty-eight numbers a day, priced per settlement period.
Register read
Derived from opening and closing reads, where half-hourly data does not cover the period.
Stated total
The bill's own figure, used only where neither of the above exists, and labelled as such on the invoice.
Not priced
Where the period is not metered at all, the charges that depend on it are declined and the gap is raised as its own finding.

Our supplier sends a spreadsheet nobody else can read.

Teach it the format once, in the interface.

A layout normaliser handles the sheet’s shape, wide 48-column or tall row-per-reading, start-time or end-time convention, and a column mapper names its fields. Both are saved against that supplier, so every later file from them just works. There is no ticket and no configuration release.

Large uploads continue on the server under a lease, so closing the browser stops nothing and a failed run resumes from where it stopped rather than starting again.

Four routes in

Spreadsheets
Any shape. Wide 48-column or tall row-per-reading, start-time or end-time, mapped once and saved as that supplier's template.
Industry flow files
D0036 and D0275, the pipe-delimited stream your half-hourly data collector already sends, parsed properly.
Register reads
Opening reads per register, with meter rollover handled.
Typed by hand
For the month that still has to close while a feed is broken.

We cannot let everyone see everything.

Access is by site, not only by feature.

Most tools scope a person to features and then show them the whole estate. Here the estate itself is scoped, which is the half that actually matters when a site manager should see one building and a regional lead should see eleven.

Every change is audited: what changed, who changed it, when, and what the value was before.

How access is scoped

Nine permissions
Granted feature by feature over four base roles, read only through to admin, with custom roles and per-organisation overrides.
Hierarchical groups
A person is scoped to their part of the estate, assigned in the invitation so they land correctly scoped rather than being fixed up afterwards.
The group list too
A regional manager sees their region and cannot enumerate the rest of the organisation. Ancestor groups are hidden with it.
Enforced in the database
Row-level security on every table, keyed on membership, so a forgotten filter returns nothing rather than everything.

Starting mid-year

History does not have to be rebuilt to be useful.

Contracts, charges and meter details are effective-dated, so a bill from eighteen months ago is re-priced against the agreement that was in force on its own dates rather than against today’s. You can load history when you have it and start validating before you do, and the two do not contradict each other later.

Nothing is overwritten either. A re-run adds a new record and the previous one survives, which is what makes a figure quoted last quarter still answerable this one.

Bring your worst site.

Not the tidy one. Pick the site with the missing reads and the MPAN nobody trusts, and we will run it and show you exactly what validates, what does not, and which field is the reason.