A worked Preflight investigation · HMRC spending data
Seven HMRC spending releases. Three things worth investigating.
We ran Preflight on seven unmodified, publicly released HMRC spending files: 9,309 records in a full examination. Here are three things that stood out in the findings and supporting evidence—each raising a different question before we rely on these records.
-
Transaction identifier
One transaction number, 18 records.
Transaction number 5100012634 recurs in 18 records in the six-file, 8,209-record compatible group.
Can Transaction number be used as a unique row identifier?
The recurrence is exact; its business explanation is not established.
Explore this finding -
Recorded amount
Recorded amounts below £25,000.
The amount £24,104.13 occurs in 27 records in that six-file group. All 27 are associated with HR / employee education.
What does a row represent in a release described as spending over £25,000?
This question follows retained value evidence; it is not a proven publication-threshold breach.
Explore this observation -
Source structure
13 columns in one release; 10 in the others.
May contains three additional columns—Contract Number, Project Code and Supplier Type—and all three are unpopulated across May’s 1,100 records.
Why does this delivery differ, and does that matter if we combine the files?
This is a structural observation, not a finding of bad data.
Explore this finding
One transaction number. Eighteen records. What does that mean?
The full examination covered seven files and 9,309 records. Six compatible files supplied 8,209 records to the selected finding; the 1,100-record May source sits in a separate structural group.
Within that six-file population, Transaction number 5100012634 occurs in 18 records. Every instance is in the June-named file. This is an exact count over the full eligible scope, not a sample.
What it changes: in the observed six-file population, Transaction number cannot be treated as a unique row key. That could change how we compare, reconcile or integrate the records.
The 18 records are not thereby duplicate payments, payment errors or invalid source-system data. The report found no single explanatory pattern strongly standing out for this recurrence. Does the identifier cover several detail lines, or reflect a source-system convention? Those remain questions for business context, not conclusions supplied by the report.
The result stays connected to source coordinates.
The report retains five representative source-and-record references for this 18-record population. They are examples, not all 18 complete rows and not a full raw-data extract. The exact count, definition, scope and evidence links remain alongside them.
That connection lets the finding be checked, questioned or carried into a further investigation rather than accepted as an unsupported assertion.
Different observations leave different questions open.
What does the release label describe?
The £24,104.13 recurrence was automatically promoted as a finding because of its repeated value and shared HR / employee-education context. Our further question is about what one row represents relative to an “over 25000” release label.
The title or filename does not prove that every individual row must exceed £25,000. Aggregation and inclusion rules remain open, so this is not presented as a threshold violation.
How should a combined dataset treat May?
The empty May-only fields make the structural difference concrete, but they do not necessarily constitute a defect. They may reflect an export change, a schema prepared for later use or another source convention.
The practical question is whether an integration should preserve, map or deliberately exclude those fields while keeping May’s separate structural scope visible.
The result is useful because it remains open to inspection.
What does a transaction number identify in these releases—and what should we establish before depending on it as a unique key?
The read-only HTML report contains the findings, examination context, population scope and supporting evidence retained by Preflight. It is the complete exported output, not an interactive demo.