"The test of a first-rate intelligence is the ability to hold two opposed ideas in mind at the same time and still retain the ability to function." — F. Scott Fitzgerald
One meter read. Two positions: what the customer owes you, what you owe the grid.
The Visibility Gap
Metering in one system. Billing in another. Collections somewhere else. When something falls off the conveyor belt, you find out weeks later.
Read-Bill-Collect looks simple on a slide. In reality, exceptions cascade through siloed systems until someone notices a spreadsheet doesn't balance.
Read
Quality-aware measurement
In energy, truth comes in degrees. Forecasts, estimates, actuals, validated reads. You bill on the best available - but do you know how exposed that leaves you?
Meridian tracks confidence at the ledger level, not as a bolt-on. Every position carries its quality: Forecast, Estimate, Actual, Verified. When estimates become actuals, the ledger reloads automatically. You always know what you knew when.
Traditional Approach
- Meter read fails → Log entry
- Bill on estimate, hope for the best
- Actual arrives → Manual reconciliation
- Can't prove what you knew then
Meridian Approach
- Missing read → Open position
- Bill with visible certainty level
- Actual arrives → Automatic reload
- Full bi-temporal audit trail
What you could query: Meter Quality by Customer
| Customer | Meters | Actual | Estimate | Missing | Fit to Bill |
|---|---|---|---|---|---|
| Acme Ltd | 3 | 2 | 1 | 0 | Yes |
| Beta Corp | 12 | 8 | 3 | 1 | Partial |
| Gamma Industries | 47 | 41 | 6 | 0 | Yes |
"What percentage of my meters are fit to bill today?" - one query, not a BI project.
Bill
One reading, multiple valuations
A meter read isn't just consumption. It's revenue at the customer's tariff. It's cost at the GSP wholesale price. It's margin that changes with market conditions.
Meridian's architecture lets one input fan out to multiple financial positions. Double-entry bookkeeping, but for energy: every read creates receivables from customers and payables to the grid. The spread is your margin - visible now, not at month-end.
This customer is underwater. You know it at the moment of consumption.
What you could query: GSP Exposure
| GSP | Volume | Wholesale Cost | Billed Revenue | Margin | Certainty |
|---|---|---|---|---|---|
| _P (South Wales) | 890K kWh | £231,400 | £213,600 | -£17,800 | Actual |
| _N (South Western) | 1.2M kWh | £264,000 | £288,000 | £24,000 | Actual |
| _M (Midlands) | 2.1M kWh | £483,000 | £504,000 | £21,000 | Estimate |
| Total | 4.19M kWh | £978,400 | £1,005,600 | £27,200 | Estimate |
"Which GSP is hurting us?" - internal accounts for each DNO make this a table, not a project.
Collect
Receivables as positions
You've billed. But has the money arrived? Which invoices are outstanding? Which customers have meter issues AND payment issues?
The ledger tracks invoices raised vs invoices settled. Payments due vs payments received. Each customer can have multiple accounts - energy, standing charges, debt recovery. Cross-domain queries become simple: meter status, billing history, payment patterns in one view.
What you could query: Collection Position
| Customer | Invoiced | Received | Outstanding | Meter Status | Risk |
|---|---|---|---|---|---|
| Acme Ltd | £12,400 | £12,400 | £0 | All Actual | Low |
| Beta Corp | £34,200 | £28,500 | £5,700 | 1 Missing | High |
| Gamma Industries | £89,100 | £67,200 | £21,900 | All Actual | Medium |
Beta Corp: outstanding balance AND missing meter. Collections sees meter status. Metering sees payment history.
The Engine
MHHS means 48x the data with tighter deadlines. The architecture has to scale.
Meridian is a backend ledger engine - fast, auditable, quality-aware. The dashboards above are queries you build on top. The engine makes them possible.
sequenceDiagram
participant Meter as Meter Read
participant Meridian as Meridian
participant Customer as Customer Position
participant Wholesale as Wholesale Position
Meter->>Meridian: kWh + Quality
Meridian->>Customer: Revenue @ tariff
Meridian->>Wholesale: Cost @ GSP price
Note over Customer,Wholesale: Margin visible immediately
Event-Driven
Stream processing, not batch. Exceptions surface as they happen.
Bi-Temporal
What you knew when. Full audit trail for regulatory and dispute resolution.
Wash and Reload
Actuals arrive, positions reload. Full audit trail preserved.
Queries < 50ms • 1,000+ concurrent ops • 1,000+ TPS