Navigation menu

Documentation

Methodology

How this site ingests the UK MPs’ Register of Interests, normalises records, and tracks changes over time.

What we show (and don’t)

This site is designed to present declarations clearly, with strong provenance, and without speculation.

What we do
Fact-only presentation
We display what is declared in the Register. We do not infer wrongdoing, motivation, or relationships beyond what is explicitly stated.
Provenance everywhere
Every record links to a specific register update (publication date).
Change over time is the core insight
We track additions, edits, and removals between register updates so you can see when changes occurred.
What we don’t do
No
We do not calculate MPs’ net worth or total wealth.
No
We do not attempt to infer conflicts of interest.
No
We do not enrich with private datasets.

Data flow

A simple overview of how raw register data becomes searchable records with provenance.

1
Ingest
Fetch the latest register source snapshot and store it as a versioned Register Update.
2
Preserve raw
Store raw records and original text so outputs can be audited later.
3
Parse
Extract structured fields (dates, values, contributors, locations) using deterministic parsers.
4
Normalise
Map records into consistent interest types and standard fields across register formats.
5
Resolve entities
Attempt to match contributor names to a canonical Contributor entity.
6
Diff
Compare parsed records between register updates to generate a change log (added/updated/removed).
7
Serve
Expose Members, Contributors, Interests, and Register Updates.

Change tracking

The register is published in discrete releases. We preserve each release as a version boundary and compute diffs.

Each register publication is stored as a Register Update. We compute diffs by comparing stable keys derived from the raw text, member, and category.
Added
Added
New disclosure appears in the latest update.
Updated
Updated
Same disclosure exists but fields or text changed.
Removed
Removed
Disclosure was present previously but no longer appears.

Limitations & caveats

Important context for interpreting what you see.

The Register is not perfectly structured
Many entries are free text. Some values are ranges or unknown; we preserve what’s written and only normalise where safe.
Entity resolution is best-effort
Different spellings or subsidiaries may appear as separate contributors until resolved. We avoid aggressive merging to prevent false matches.
‘Total declared value’ is not wealth
Summed values represent declared items in the Register, not net worth or comprehensive income.
Timing
Entries can be reported after an event. ‘Published’ date reflects the register update, not necessarily when the activity occurred.

FAQ

Common questions about data source, parsing, and interpretation.

Contact

Found an issue, have feedback, or want to suggest improvements?