Skip to main content
Methodology / Document 07

Data handling

People who report a gambling dispute are often already exposed: mid-way through a verification process, holding a balance they cannot reach, or still logged in to the operator they are complaining about. What we collect, and who can see it, is designed around that.

Private by defaultContact details encrypted at restExcluded from searchNo IP addresses stored

01Collection

What a report collects

The complete list. Three fields and one confirmation are required — the operator, the category, your account of what happened, and the tick; everything else is genuinely optional, and a report with only those is a valid report we will act on.

Operator or siteRequired
The brand the report concerns, and optionally the domain — stored as a hostname only, because a pasted link can carry a session token in its query string.
Issue categoryRequired
One of a fixed set of categories, so reports can be counted and routed without reading them.
What happenedRequired
Your account in your own words. This is the part a reviewer reads, and the part a redacted case file would be written from — if, and only if, you approve that exact rewritten version when you are shown it.
JurisdictionOptional
Where you were when it happened. Used to identify the authority that could actually help you.
Incident dateOptional
Used to establish sequence against register entries and enforcement notices.
Disputed amount and currencyOptional
Held as an exact figure internally. Any public case file shows a band, never the precise sum, because a precise sum identifies a person.
Payment methodOptional
The route the money took — card, bank transfer, wallet, crypto rail. Not the account, card or wallet identifier.
Existing complaint referenceOptional
Where you have already complained to the operator, a regulator or a dispute-resolution scheme.
Contact emailOptional
Encrypted at rest. You can submit a complete report without it and still track the case using your reference.
ConsentsOptional
Three separate switches — may we contact you, may we publish a redacted case file, may we share with a regulator. Each is off unless you turn it on, and a report with all three off is still acted on.
AttachmentsOptional
Documents you choose to upload. Checked against their declared file type, stored outside the web root under opaque names, never republished as supplied.
ConfirmationRequired
A single tick recording that you have read how GambleLABS handles reports — that a report is an allegation until verified, that we are not a regulator, and that the reference is shown once. It is the only basis we have to process anything you send.

What we do not ask for

No account name, no player ID, no date of birth, no address, no card or bank details, no copy of your identity document. If a document you upload happens to contain them, it is flagged as containing identity material and handled under the narrower access rules below — but we never ask you to send one.

What you get back

A reference, shown once. The database holds a one-way hash of it and not the reference itself, so it is a key you hold and we cannot reconstruct — you can check the status of your case with it, and nobody needs an account. Our own reviewers see a case number instead, because there is no reference for them to see.

Check a reference

02At rest

Encryption, hashing and storage

Three different techniques, used for three different reasons. None of them is a substitute for access control, which is enforced separately.

Encrypted

Reporter contact details

The email address you choose to give is encrypted with authenticated symmetric encryption before it is written to the database, and decrypted only when a permitted role opens the record. A leaked copy of the database file does not yield a list of reporters. Reviewers who need context without needing the address see a masked hint instead.

Hashed

Your case reference and your IP address

The reference column was removed from the reports table: what is stored is a one-way hash of the reference, and the reference is not stored anywhere. So the lookup runs one way. Quote your reference to us and it can be confirmed against the hash; nobody on our side can go the other way and derive it from a record, which is why our reviewers work from a case number instead. Submission IP addresses are hashed the moment they arrive and the address itself is discarded — enough to stop automated abuse, not enough to locate anybody.

Isolated

Uploaded files

Attachments are written outside the web root under opaque names, so there is no guessable URL to any of them. Each file is checked against its declared type by inspecting its actual leading bytes, and anything containing identity material is marked as such so it can be handled more narrowly.

Private reports live in a different table from public case files, and nothing in the report table is served on a public route. A case file is a separate record written deliberately by a reviewer, holding only the fields that reviewer copied across after redaction.

03Access

Who inside GambleLABS can see what

Access is granted by role, and each role is a fixed set of named permissions rather than a level of seniority. The matrix below is generated from the permission set the platform actually enforces — it is not a description of it.

Administrator
Full platform access, including user management, ingestion configuration and the audit log.
Editor
Publishes and archives editorial records, approves case files, curates the homepage and signs off AI-supported findings.
Investigator
Builds investigations, entity dossiers and the relationship graph. Reads report bodies but not reporter identity.
Researcher
Writes research and explainers, manages sources. Sees only aggregate report metadata.
Case reviewer
The only role, besides administrator, permitted to see reporter contact details and open uploaded evidence.
Which internal roles may see aggregate report metadata, the report body, reporter contact details and uploaded evidence.
RoleAggregate metadataReport bodyReporter contact detailsUploaded evidence
AdministratorPermittedPermittedPermittedPermitted
EditorPermittedPermittedNo accessNo access
InvestigatorPermittedPermittedNo accessNo access
ResearcherPermittedNo accessNo accessNo access
Case reviewerPermittedPermittedPermittedPermitted
Aggregate metadata
Category, jurisdiction, status and counts. No description, no identity.
Report body
The account as written, the operator named, dates and amounts. No reporter identity.
Reporter contact details
The decrypted email address a reporter chose to give. Deliberately the narrowest grant on the platform.
Uploaded evidence
Statements, screenshots and correspondence as supplied, including anything containing identity documents.

The consequence worth spelling out: investigators and researchers — the people who write most of what you read — cannot see who sent a report or open what they uploaded. Reporter identity is reachable by two roles only, and every access to a report is written to an audit trail that the person taking the action cannot edit.

04Retention

How long we keep it

Retention is tied to the purpose the data was given for. When the purpose ends, so does the retention.

  • While a case is open, the report is held in full — that is what lets a reviewer come back to you, check a detail or connect your account to another one.
  • Once a case is closed with no public outcome, the substantive report may be retained in anonymised form to support pattern work, and the identifying parts are the first thing to go.
  • Where a public case file resulted, the redacted case file persists as a published record. It contains no identifying data, so deleting the underlying report does not remove it — and does not need to.
  • Contact details are deleted on request at any time, including while a case is open. You lose the ability to be contacted; you do not lose the case, and you keep your reference.
  • Attachments are deleted with the report they belong to, and can be deleted separately on request while the rest of the report is retained.
  • Audit records of who inside GambleLABS opened what are retained deliberately, because an access log that can be pruned by the person who was accessing things is not an access log. They record actions and roles, not the contents of reports.

Consent works on the exact version, not on the idea of publication. Before a case file drawn from your report can be published, you are shown that precise text and exhibit list through your reference and asked to approve it; you can withdraw that approval at any time before it goes out. Your approval stays attached to the version you were shown. If that text or its exhibits are edited afterwards, what you approved is no longer what the record says, so your approval does not carry across — the edited version cannot be published until a fresh request has been put to you and you have approved that one too. There is no second basis: without your approval of the exact version, nothing drawn from your report is published at all.

Your controls

  • Submit without giving contact details at all.
  • Track the case with a reference instead of an account.
  • Refuse publication and still have the report acted on.
  • Read the exact redacted version before deciding, and approve nothing else.
  • Withdraw that approval at any time before it is published.
  • Ask for your contact details, your attachments or the whole report to be deleted.

Sharing outside GambleLABS

A report is shared with a regulator or dispute-resolution scheme only where you have specifically consented to that. We do not sell, rent, licence or trade report data, and we do not pass it to operators — including the operator your report concerns.

05Publication

What is never published automatically

Nothing you send becomes public by default. These categories are not publishable at all — not with consent, not in redacted form, not as an illustrative detail.

  • Identity documents — passports, driving licences, national identity cards, selfies held against a document
  • Home addresses, postcodes and geolocation
  • Bank account numbers, card numbers, IBANs and payment-processor identifiers
  • Crypto wallet addresses and transaction hashes
  • Private correspondence between you and an operator, in the form you sent it
  • Your name, username, account number or player ID
  • Your email address, telephone number or social handles
  • The exact disputed amount, where publishing it would identify you

A report becomes public only as a case file: a separate record, written by a reviewer, containing a redacted narrative and a redaction note that tells readers what was removed. The reviewer copies across what is necessary to make the case intelligible — the category, the jurisdiction, an amount band, the outcome — and nothing else.

Your approval is asked for at that point — after the redacted version exists and against that version — never assumed from the fact that you contacted us or from a box ticked when you filed. A case file records the basis it was published on, and one published on your approval is unpublished if you withdraw it.

We also watch for identification by elimination. A category, a country, a date and an amount can identify one person as effectively as a name, so the redaction test is whether the operator could work out who you are — not whether your name appears.

06Discoverability

Private reports are not in the search index

The platform runs one unified search index across every public record type. Reports have no route into it, and this is enforced in the code that writes the index rather than by filtering results afterwards.

The invariant

A record may enter the search index only if it is already public on its own route. Player reports, uploaded attachments, evidence records, internal analyses and audit events have no indexer at all — not a disabled one, not a filtered one.

Published records indexedEverything else absent

Drafts, in-review records and approved-but-unpublished work are likewise absent. Approved means cleared to publish, not published, and a search box that returns a record nobody has published is a disclosure with extra steps.

The only public expression of a report is a redacted case file, and it is the case file — not the report — that is indexed. Searching this platform for your own name, your account or your operator correspondence will not find your report, because it is not there to find.

07Everything else

Operational and campaign events we do record

Stated because the sections above are about reports, and this document is the whole account. There is no third-party analytics beacon anywhere on this platform and no advertising or profiling tracker of any kind; what exists is a small number of first-party rows this platform writes for itself.

What is refused

  • No third-party advertising tracking, and no advertising of any kind.
  • No analytics beacon, tag manager, pixel or session recorder.
  • No cross-site identifier, and no data shared with, sold to or rented by anyone.
  • No profiling for advertisers, and no inference about you from what you read.

The homepage challenge. The Network Resolver issues a fresh board on every page load, and the board has a promotional reward attached to it — so it has to be able to tell one visitor’s challenge from another’s without knowing who anybody is. A signed anonymous cookie carries a random token; the database stores a keyed hash of it beside the board that was issued, the moves that were played, how long it took, and a counted event for each of viewed, started and claim pressed. No address, no fingerprint and nothing about you: the hash is useless outside this deployment’s key, and it exists so that one solved board yields one reward code.

Rate limiting. The challenge endpoint and the event endpoint each count requests per time window against a hash of the requesting address. The address itself is discarded on arrival, as it is on the report form. This is what stops a script minting reward codes; it is not enough to locate anybody.

Your own account, if you create one. A signed-in member’s searches, follows, bookmarks and notification settings are stored against their member id — so that a reading list is a reading list. Every one of them is visible to you in your workspace and can be cleared by you; your searches and your reading history are two separate lists on your reading history page, each with its own delete. An anonymous search writes no row at all: there is nobody to attribute it to, and attributing it to an address would create exactly the record this design exists to avoid.

Access and export logs. Every staff access to a report, and every member export, writes an audit row carrying the action, the outcome, the actor and a hash of the requesting address. That trail is the mechanism behind the access guarantees in section 03: it cannot be edited by the person who triggered it, and it is what makes those guarantees auditable rather than merely stated.

Reading your own export log. There is no screen in your workspace that shows it — we are saying so rather than implying one. The rows exist and are retained; if you want the list of exports recorded against your account, ask through the submission form and we will produce it. The searches, follows, bookmarks, reading history and notification settings described above are a different matter: those you can see and delete yourself, today, from your workspace.