Sari la conținut
megapromotingHai să discutăm
Produse onGDPR.md

Scanare tehnică & confidențialitate Platformă publică

What a site actually does with data, beyond the text on the banner.

onGDPR.md inspects the public surface of a website: cookies, trackers, forms and the notices it publishes. The report ties every finding to the evidence observed, and states what could not be checked.

onGDPR.md: câmpul de scanare a unei adrese și, alături, exemplul de verdict cu cele șapte capitole verificate
ongdpr.md · the seven chapters checked and the verdict, on an illustrative example

onGDPR.md

From information to work done.

01

Observă

Examines how the page behaves before any consent choice is made.

02

Compară

Tests the refusal, and checks which requests and mechanisms stay active.

03

Explică

Organises the findings, the evidence and the limits into a report for the team.

Where it earns its place.

Technical audit

Cookies, trackers, and how the consent mechanisms behave.

Preparing the fix

Prioritised issues, and information the people who maintain the website can act on.

Aggregate research

Analyses of how sites behave, with the methodology and the limits published.

A technical scan supports preparation for compliance. It is not a legal certification and it does not replace a full analysis of an organisation's processes.

onGDPR.md in detail

What you can do with this project.

A site's privacy policy says what ought to happen. onGDPR.md measures what actually happens: what loads before the visitor has had the chance to choose anything, what stays active after they press "Reject all", what the notice does and does not say, and where the data goes. You enter an address and get a score from 0 to 100, a verdict, and findings with their evidence.

The engine is deterministic. There is no language model anywhere in the path of the score: the same inputs give the same result, and every finding points to an article of Law no. 195/2024 that has been checked against a registry of the law's 90 articles. An article we cannot confirm in the text of the law is never printed.

Law no. 195/2024 has been in force since 23 August 2026 and repeals Law no. 133/2011. Penalties run up to 2,000,000 Moldovan lei (MDL) or 2% of turnover, and the supervisory authority is the National Centre for Personal Data Protection (CNPDCP). Which regime applies is not assumed in the code, it is computed from the date of the scan.

01

The "Reject all" behavioural test — what makes a report different from a tick-list

The scanner finds the banner, actually presses the reject control, and then listens to the network traffic for three seconds. A tracker counts as a violation only if it was already firing before any consent and keeps firing after the refusal, with no signal that consent was denied. A site correctly running Google Consent Mode v2, with denial as the default, is not punished for its cookieless pings — that rule was added deliberately, so as not to contradict the check that rewards exactly that behaviour.

02

Seven modules and 48 checks

Transport — forced HTTPS, HSTS, CSP, mixed content, cookie attributes, security headers. Cookies — trackers and non-essential cookies before consent, tracking storage. Consent management (CMP) — whether the banner is there, whether a reject control exists, equal weight between accept and reject, pre-ticked options, withdrawal of consent, and the behavioural test. Notice — twelve content elements, from purposes and legal basis through to the CNPDCP and the date it was last updated. Forms, jurisdiction and controller identity complete the list.

03

Banner detection that does not pretend to see everything

Eighteen selectors for known consent management platforms, each with its source cited, plus a generic heuristic for hand-written banners — very common among small companies in Moldova — which reads the computed styles from the live page, not the static HTML. The walk descends into open shadow DOM and into iframes, because some banners live entirely in there. Closed shadow roots stay invisible by construction: we say so openly, and we have a test that holds us to it.

04

A score you can reconstruct yourself

Cookies 0.25, the consent mechanism 0.20, the notice 0.20, transport 0.15, forms 0.08, jurisdiction 0.07, controller identity 0.05 — summing to exactly 1.0. A failing finding subtracts from its own category in proportion to severity: critical 1.0, high 0.6, medium 0.3, low 0.15; a warning costs half. Above 80 is compliant, above 50 is at risk, below that is non-compliant.

05

The hard rule for live violations

A single failing critical finding forces a verdict of "non-compliant" and caps the score at 49, whatever the weighted formula would otherwise say. The reason is simple: trackers firing before consent, or a reject button that stops nothing, are happening right now to every visitor. A flawless notice must not be able to pull the average up over that.

06

The manners of a polite crawler

A budget of 45 seconds per scan. A user agent of our own, which identifies itself and points to the page explaining the scan and how to opt out. The target site's robots.txt is honoured by default, through a separate fetch capped at 8 seconds, so that a slow robots.txt cannot eat into the audit's budget. Before any request, a guard blocks internal addresses, the local network, and the cloud metadata endpoint.

Data and operation

What goes into the system. What has to be checked.

Only the public surface, under the conditions of the test
The scan sees what a visitor sees: the public page, its network requests, the cookies, the banner and the documents linked from it. It does not see internal processes, supplier contracts, the record of processing activities, staff training, or what happens behind a form once it has been submitted.
The technical/legal boundary sits in the report's data, not only in the footer
Every finding carries a classification: observed, inferred, needs context, not testable, or error. Plus applicability, evidence strength, and a confidence between 0 and 1. So a report says not only what it found, but how firmly each statement stands — and a finding marked "needs context" is a question for the lawyer, not an accusation.
Statutory citations go through a registry
The 90 articles of Law no. 195/2024 sit in a registry carrying the MD5 fingerprint of the source document. An article number that is not in the registry is not published. At the same time, a reference the text attributes to another instrument — Regulation (EU) 2016/679, for instance — is recognised as such and left outside the check, because rejecting a true statement is the worse mistake: after that, nothing looks broken any more.
Datasets with provenance
38 hand-curated tracker hosts, each with an owner, a country and a category — the primary source. 46,863 domains extracted from EasyPrivacy, used only to answer the question "is this host a tracker?", with no metadata. 2,264 rows from the Open Cookie Database, for cookie names and purposes. All of them vendored, with the refresh script in the repository.
The assistant that explains the report cannot contradict it
On the report page there is a conversational assistant — that one is a language model, unlike the engine. It explains what a finding means, but it does not recompute the score and cannot change it. Every answer is checked automatically before it is shown: if it cites an article that cannot be confirmed in the text of the law, the answer is not displayed at all.

From exploration to deployment

How we prepare a project with onGDPR.md.

01

We choose the addresses

The home page shows the default behaviour, but forms, campaign pages and areas with embedded content often carry different trackers. We agree which addresses matter, and under what conditions they are tested.

02

We read the report with the technical team

The findings are written to be actionable by whoever maintains the site: which host, which cookie, which header, which element of the notice is missing. We separate what was observed from what needs context held inside the organisation.

03

We mark off what goes to the lawyer

The score is not a legal opinion and it does not calculate any fine. The basis for processing, the contracts with processors, the record of processing activities and the impact assessment are legal and organisational decisions. The report prepares the ground with evidence; the conclusion is the lawyer's to draw.

04

We re-test the fix under the same conditions

After changes, exactly the same scenario is run again. A comparison only means something between two scans made the same way — otherwise you are comparing a site with a day, not with itself.

Questions worth settling.

Does the report certify compliance with Law no. 195/2024?

No. It is a technical measurement of the site's public surface, with evidence and with the limits of each finding stated. Many of the law's obligations — the basis for processing, contracts with processors, the record of processing activities, the impact assessment, informing employees — cannot be observed from outside and do not appear in the report. The score is not a legal opinion and it does not calculate any fine.

What does the "Reject all" test actually do?

The scanner finds the banner, presses the reject button, and listens to network requests for three more seconds. A tracker is flagged only if it was already firing before consent and carries on after the refusal, with no denial signal in the request. It is the only check in the engine that needs a live, interactive browser rather than a static snapshot of the page — and it is the reason a scan takes seconds rather than milliseconds.

Do you use artificial intelligence to produce the score?

No. The engine is deterministic: the same inputs give the same score, and every weight and every threshold sits in a single constants file, not scattered through the code. There is an assistant that explains the report to you, and that one is a language model — but it recomputes nothing, and if it cites an article we cannot confirm in the text of the law, its answer is not shown.

Does a good score mean the organisation is in the clear?

No. It means the public surface that was tested behaves well in the scenarios that were tested. An organisation can have a flawless site and no record of processing activities at all. It works better the other way round: a poor score almost certainly points to a real problem, because the checks that cut deepest — trackers before consent, a refusal that stops nothing — describe something happening right now to every visitor.

Does the scan affect my site?

It is a single visit, like an ordinary visitor's, with a maximum budget of 45 seconds. The user agent identifies itself and points to the page explaining the scan and how to opt out, and the site's robots.txt is honoured by default. No forms are submitted, no accounts are created, and no sign-in is attempted.

What can the scanner not see?

A banner hidden inside a closed shadow root stays invisible by construction — we declare it, and we have a test that holds us to our word. Nor do we see what happens after sign-in, what the server does with the data from a submitted form, where that data goes next, or what the contracts provide for. The report states what it was able to observe and what it was not, and when the page did not render properly it withholds the verdict rather than inventing one.

How do you know the article you cite exists?

There is a registry of the 90 articles of Law no. 195/2024, carrying the MD5 fingerprint of the source document. An article that is not in the registry is not printed. And if a text attributes a reference to another instrument — Regulation (EU) 2016/679, say — it is recognised as such, not declared invented. The two errors are not symmetrical: a true citation wrongly rejected simply disappears, with nothing left looking broken.

Does Law no. 195/2024 apply, or is it still Law no. 133/2011?

195/2024, since 23 August 2026. The code does not assume this, it computes it from the date of the scan: before that date, 133/2011 was the one in force and 195/2024 was reported as something to prepare for; afterwards, the other way round. An older report therefore stays readable under its own regime, without pretending it once said something else.

Illustrative example

A site with a cookie banner and a reject button

A usage scenario, with no client data and no commercial results attributed.

The starting situation

The site's public address. Nothing else — no access, no account, no code to put in the page.

How it works

The address goes through the anti-SSRF guard, then robots.txt. A real Chromium loads the page and everything requested before any interaction is recorded. The banner is looked for — among 18 selectors for known CMPs, then heuristically, including inside open shadow DOM and iframes. The refusal is pressed and the network is listened to for three more seconds. In parallel, the other six modules run: headers, cookies, notice, forms, jurisdiction, controller.

Rezultatul

A score from 0 to 100, a verdict, and the findings with the evidence behind each one, the article of the law checked against the registry, and the classification — observed, inferred, needs context, not testable. If a tracker was firing before consent and carried on after the refusal, the verdict is non-compliant and the score is capped at 49, however good the notice may be.

Ce este necesar:O adresă publică accesibilă, care nu blochează robotul din robots.txt. Raportul acoperă suprafața și scenariile testate; procesele interne, contractele și temeiurile prelucrării rămân o evaluare juridică separată.

Ways of working together

onGDPR.md, in the context of your organisation.

Assessing a web presence

An inventory of how sites, cookies and external requests behave, as technical support for IT teams and data protection officers.

Private companies

We define a pilot around one real process: users, data, integrations, costs and acceptance criteria. Expansion follows once the result has been assessed.

Public institutions and state-owned companies

We establish the requirements for accessibility, hosting, data protection and interoperability. Any connection to services run by Moldova's e-Governance Agency (AGE) or its state information-technology service (STISC) requires eligibility, access and approvals to be validated.

These are adaptation scenarios, not statements about existing contracts or partnerships. The proposed capabilities are confirmed within the project's scope of work.

Discută un pilot

Part of an ecosystem.

What would you want to work better?

Tell us about your process. Together we decide what is worth building, what we can connect, and how we check the result.

Hai să discutăm