Platform
A clean dashboard over unverified data is worse than no dashboard.
The platform reports which integrity checks ran, which did not, and why. When a number is questioned, it can answer where the number came from and what was validated about it.
| Stream | Measured | Booked | Variance | State |
|---|---|---|---|---|
| OILBBL | 1,284.6 | 1,290.0 | −5.4−0.42% | in tolerance |
| GASMCF | 14,203 | 14,203 | 0.00.00% | match |
| WATERBBL | 3,910.2 | 3,884.0 | +26.2+0.67% | review |
| CONDBBL | no data | 61.4 | — | no gauge |
Provenance on every value
Nothing in the system is a bare number. Each value carries the four facts that let it be defended later.
- The source device, lab result, pumper entry or configured default that produced it.
- Its units, retained and never silently converted.
- Its observation time, kept separate from the time it reached the server.
- Its quality state, so a failed or interpolated reading is never mistaken for a clean one.
Checks that report themselves
The Data Quality surface lists the integrity checks the platform runs, their outcome, and — critically — the ones that did not run.
- A check that could not run is reported as not run, with the reason.
- Coverage is stated, so you can see what portion of a period was actually verified.
- Duplicate periods, gaps and out-of-range values are surfaced rather than absorbed.
It fails closed
If a source connection, schema, permission or query fails, the platform returns an error and says so.
- No sample data is substituted when a real source is unavailable.
- No stale value is relabelled as current.
- No estimated or interpolated figure is inserted to fill a gap in a chart.
- An empty chart with a stated reason beats a full one built from a guess.
Restatements are visible
When a correction upstream changes a figure that was already published, the change is flagged as a restatement rather than quietly applied.
- History stays reconstructible as of any point in time.
- A number someone already acted on does not change behind their back.
The opposite of how most monitoring software behaves
Most systems in this space are built to look complete. A gap gets interpolated, a stale reading keeps its position, a failed source falls back to the last value it had, and the screen stays full. It feels better and it is much worse, because the screen no longer distinguishes between the well is fine and we have not heard from the well.
The platform is built the other way around. When it does not know, it says it does not know, and it says why. That is a deliberate trade: some screens will have holes in them. Those holes are information.
What this buys you
The practical benefit shows up the first time a number gets challenged. Someone asks why a figure looks wrong, and instead of a debate, there is a record: this volume came from this gauge at this time, converted through this version of this strapping table, using a BS&W from a shakeout and a gravity from a lab result dated three weeks ago, and here is which of those was a default rather than a measurement.
That is not a reporting feature. It is the reason the rest of the platform can be trusted enough to act on.
Common questions
Why show checks that did not run?
Because the alternative is a page that looks the same whether or not verification happened. If a check could not run — a source was unreachable, a permission was missing — that is exactly the moment you need to know, and it is exactly the moment most software goes quiet.
What does the platform do with an out-of-range value?
It retains it and flags it. Clamping a value into a plausible range destroys the evidence that something is wrong with the instrument or the entry, which is usually the more useful finding.
See it against your own wells.
A demo runs against synthetic data first, then against a read-only connection to your system of record if you want to see real numbers.