fix(profiler): fix B2G false positive + add consulting/manufacturing
Build + Deploy / build-admin-compliance (push) Successful in 2m27s
Build + Deploy / build-backend-compliance (push) Successful in 3m40s
Build + Deploy / build-ai-sdk (push) Successful in 1m0s
Build + Deploy / build-developer-portal (push) Successful in 1m16s
Build + Deploy / build-tts (push) Successful in 1m54s
Build + Deploy / build-document-crawler (push) Successful in 1m2s
Build + Deploy / build-dsms-gateway (push) Successful in 31s
Build + Deploy / build-dsms-node (push) Successful in 20s
CI / branch-name (push) Has been skipped
CI / guardrail-integrity (push) Has been skipped
CI / loc-budget (push) Failing after 17s
CI / secret-scan (push) Has been skipped
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / nodejs-build (push) Successful in 2m44s
CI / dep-audit (push) Has been skipped
CI / sbom-scan (push) Has been skipped
CI / test-go (push) Successful in 49s
CI / test-python-backend (push) Successful in 36s
CI / test-python-document-crawler (push) Successful in 25s
CI / test-python-dsms-gateway (push) Successful in 21s
CI / validate-canonical-controls (push) Successful in 14s
Build + Deploy / trigger-orca (push) Successful in 3m23s

- Remove generic B2G keywords (behörde, amt, öffentlich) that match in
  every DSI due to "Aufsichtsbehörde", "Amtsgericht", "veröffentlichen"
- Remove "server" from it_services (too generic, appears in every DSI)
- Add consulting, manufacturing, media industries
- Add B2B fallback for GmbH/AG without B2C signals
- Add 10 ground truth files for unified compliance check

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-05-12 12:20:44 +02:00
parent 1fd7ea6139
commit 407a9503e4
12 changed files with 1151 additions and 9 deletions
@@ -40,14 +40,17 @@ _B2C_KEYWORDS = [
_B2B_KEYWORDS = [ _B2B_KEYWORDS = [
"unternehmen", "geschaeftskunden", "geschäftskunden", "gewerblich", "unternehmen", "geschaeftskunden", "geschäftskunden", "gewerblich",
"auftrag", "auftraggeber", "auftragnehmer", "geschaeftspartner", "auftraggeber", "auftragnehmer", "geschaeftspartner",
"geschäftspartner", "firmenkunde", "b2b", "geschäftspartner", "firmenkunde", "b2b", "industriekunden",
"beratung", "consulting", "dienstleistung", "engineering",
] ]
_B2G_KEYWORDS = [ _B2G_KEYWORDS = [
"behoerde", "behörde", "koerperschaft", "körperschaft", "oeffentlich", "koerperschaft des oeffentlichen rechts", "körperschaft des öffentlichen rechts",
"öffentlich", "gemeinde", "amt", "stadtverwaltung", "landesbehoerde", "gemeinde", "stadtverwaltung", "landesbehoerde", "landesbehörde",
"landesbehörde", "kommunal", "kommunal", "buergerservice", "bürgerservice", "rathaus",
"landesamt", "bundesamt", "oeffentliche verwaltung", "öffentliche verwaltung",
"oeffentlicher dienst", "öffentlicher dienst",
] ]
_NONPROFIT_KEYWORDS = [ _NONPROFIT_KEYWORDS = [
@@ -93,14 +96,17 @@ _EDITORIAL_KEYWORDS = [
] ]
_INDUSTRY_KEYWORDS = { _INDUSTRY_KEYWORDS = {
"it_services": ["software", "saas", "cloud", "hosting", "server", "api", "app"], "it_services": ["software", "saas", "cloud", "hosting", "api", "plattform"],
"retail": ["shop", "warenkorb", "versand", "lieferung", "einzelhandel"], "retail": ["shop", "warenkorb", "versand", "lieferung", "einzelhandel"],
"healthcare": ["arzt", "praxis", "patient", "gesundheit", "therapie", "klinik"], "healthcare": ["arzt", "praxis", "patient", "gesundheit", "therapie", "klinik"],
"legal": ["kanzlei", "rechtsanwalt", "mandant", "anwalt"], "legal": ["kanzlei", "rechtsanwalt", "mandant", "anwalt"],
"craft": ["handwerk", "meister", "werkstatt", "montage", "gewerk"], "craft": ["handwerk", "meister", "werkstatt", "montage", "gewerk"],
"public": ["behoerde", "behörde", "kommune", "verwaltung", "buerger", "bürger"], "public": ["kommune", "stadtverwaltung", "buergerservice", "bürgerservice", "rathaus"],
"finance": ["bank", "versicherung", "finanz", "kredit", "anlage"], "finance": ["bank", "versicherung", "finanz", "kredit", "anlage"],
"education": ["schule", "bildung", "unterricht", "lehrplan", "schueler", "schüler"], "education": ["schule", "bildung", "unterricht", "lehrplan", "schueler", "schüler"],
"consulting": ["beratung", "consulting", "schulung", "seminar", "gutachten", "audit"],
"manufacturing": ["fertigung", "produktion", "maschinenbau", "anlagenbau", "zulieferer"],
"media": ["redaktion", "verlag", "medien", "journalismus", "presse"],
} }
_TRACKING_SERVICES = { _TRACKING_SERVICES = {
@@ -197,8 +203,16 @@ async def detect_business_profile(documents: dict[str, str]) -> BusinessProfile:
total = sum(max(0, v) for v in scores.values()) total = sum(max(0, v) for v in scores.values())
profile.confidence = round(best_val / total, 2) if total > 0 else 0.5 profile.confidence = round(best_val / total, 2) if total > 0 else 0.5
else: else:
profile.business_type = "unknown" # Fallback: GmbH/AG without B2C signals → assume B2B
profile.confidence = 0.2 has_company = any(kw in full_text for kw in [
"gmbh", "ag ", "ohg", "kg ", "ug ", "gbr",
])
if has_company and b2c_score <= 0:
profile.business_type = "b2b"
profile.confidence = 0.4
else:
profile.business_type = "unknown"
profile.confidence = 0.2
# ── ODR (Online-Streitbeilegung) ───────────────────────────── # ── ODR (Online-Streitbeilegung) ─────────────────────────────
# Required for B2C with online shop (EU Regulation 524/2013) # Required for B2C with online shop (EU Regulation 524/2013)
+112
View File
@@ -0,0 +1,112 @@
# Ground Truth: SafetyKon
**URL:** https://safetykon.de
**Typ:** B2B Beratung (Arbeitssicherheit, Brandschutz)
**Datum:** 2026-05-12
---
## Business Profile (erwartet)
| Feld | Erwarteter Wert |
|------|----------------|
| business_type | b2b |
| industry | consulting |
| has_online_shop | false |
| has_editorial_content | false |
| is_regulated_profession | false |
| needs_odr | false |
---
## Dokumente
| Dokumenttyp | Vorhanden | URL |
|-------------|-----------|-----|
| DSI | Ja | https://safetykon.de/datenschutz |
| Impressum | Ja | https://safetykon.de/impressum |
| Cookie-Richtlinie | Nein (in DSI integriert) | — |
| AGB | Nein | — |
| Widerruf | Nein | — |
| Social Media DSE | Nein | — |
| Nutzungsbedingungen | Nein | — |
| DSB-Kontakt | Nein (in DSI erwaehnt) | — |
**Besonderheit:** DSI und Cookie-Infos sind auf derselben Seite (`/datenschutz`).
Der Nutzer kann die DSI-URL in mehrere Zeilen eintragen. Das System sollte
erkennen dass es sich um denselben Text handelt und dennoch korrekt pruefen.
---
## Erwartete Ergebnisse: DSI (Art. 13 DSGVO)
### L1 Checks
| Check | Erwartet | Begruendung |
|-------|----------|-------------|
| Verantwortlicher | PASS | SafetyKon GmbH mit Anschrift |
| DSB | PASS oder INFO | Kleines Unternehmen, DSB ggf. nicht pflicht |
| Zwecke | PASS | Kontaktformular, Website-Betrieb |
| Rechtsgrundlage | PASS | Art. 6 Abs. 1 erwaehnt |
| Empfaenger | PASS | Hosting-Provider etc. |
| Drittlandtransfer | PASS/FAIL | Abhaengig ob Drittland-Dienste genutzt |
| Speicherdauer | PASS | Zeitangaben vorhanden |
| Betroffenenrechte | PASS | Art. 15-21 aufgezaehlt |
| Beschwerderecht | PASS | Art. 77 oder Aufsichtsbehoerde erwaehnt |
### L2 Checks (Stichproben)
| Check | Erwartet | Begruendung |
|-------|----------|-------------|
| Anschrift (PLZ+Ort) | PASS | Adresse im Impressum und DSI |
| E-Mail Verantwortlicher | PASS | E-Mail vorhanden |
| Art. 6(1)(f) Berecht. Interesse | PASS | Fuer Website-Betrieb |
---
## Erwartete Ergebnisse: Impressum (§5 TMG)
### L1 Checks
| Check | Erwartet | Begruendung |
|-------|----------|-------------|
| Firmenname | PASS | SafetyKon GmbH |
| Anschrift | PASS | Strasse + PLZ + Ort |
| Vertretung | PASS | Geschaeftsfuehrer benannt |
| Kontakt (Tel/Mail) | PASS | Telefon und E-Mail |
| Registergericht | PASS | HRB-Nummer |
| USt-IdNr | PASS | DE-Nummer |
| V.i.S.d.P. | INFO/SKIP | Kein Blog/News → nicht relevant |
| Streitbeilegung | INFO/SKIP | B2B → nicht relevant |
| Berufsrecht | INFO/SKIP | Kein regulierter Beruf |
---
## Banner-Check (erwartet)
| Feld | Erwartet |
|------|----------|
| banner_detected | true/false (zu pruefen) |
| provider | ggf. einfacher Cookie-Hinweis |
| violations | 0-2 (kleine Website) |
---
## Cross-Check Banner vs Cookie
| Finding | Erwartet |
|---------|----------|
| Dienste fehlen in Cookie-RL | Unwahrscheinlich (wenig Dienste) |
| Tracking vor Consent | Unwahrscheinlich |
| Falsches "kein Tracking" | Unwahrscheinlich |
---
## Kontext-Filter (Business Profile)
| Check | Filter-Ergebnis | Begruendung |
|-------|----------------|-------------|
| ODR/Streitbeilegung | SKIP | B2B, kein Online-Shop |
| Widerruf | SKIP | B2B |
| V.i.S.d.P. | SKIP | Keine redaktionellen Inhalte |
| Berufsrecht | SKIP | Kein regulierter Beruf |
@@ -0,0 +1,123 @@
# Ground Truth: IHK Konstanz
**URL:** https://www.ihk.de/konstanz
**Typ:** Kammer / Oeffentlich-rechtliche Koerperschaft
**Datum:** 2026-05-12 (aktualisiert von 2026-05-07)
---
## Business Profile (erwartet)
| Feld | Erwarteter Wert |
|------|----------------|
| business_type | b2g |
| industry | public |
| has_online_shop | false |
| has_editorial_content | true (Ratgeber, News) |
| is_regulated_profession | false |
| needs_odr | false |
---
## Dokumente
| Dokumenttyp | Vorhanden | URL |
|-------------|-----------|-----|
| DSI | Ja | https://www.ihk.de/konstanz/servicemarken/ueber-uns/downloads/datenschutzinformationen-zum-internetangebot-4163288 |
| Impressum | Ja | https://www.ihk.de/konstanz/impressum |
| Cookie-Richtlinie | Nein (in DSI integriert) | — |
| AGB | Nein | — |
| Widerruf | Nein | — |
| Social Media DSE | Nein (in DSI integriert) | — |
| Nutzungsbedingungen | Nein | — |
| DSB-Kontakt | Nein (in DSI erwaehnt) | — |
**Besonderheit:** Sehr lange DSI (6353 Woerter) mit integrierten Cookie-, Social-Media- und DSFA-Sektionen.
---
## Erwartete Ergebnisse: DSI (Art. 13 DSGVO)
### L1 Checks (9/9 PASS)
| Check | Erwartet | Beleg |
|-------|----------|-------|
| Verantwortlicher | PASS | IHK Hochrhein Bodensee, Reichenaustr. 21, D-78467 Konstanz |
| DSB | PASS | SuedWest Datenschutz, datenschutz@konstanz.ihk.de |
| Zwecke | PASS | Kontaktaufnahme, Newsletter, Veranstaltungen, Beratung |
| Rechtsgrundlage | PASS | Art. 6 Abs. 1 lit. a), b), f) |
| Empfaenger | PASS | Buchhaltung, Dritte, Auftragsverarbeiter |
| Drittlandtransfer | PASS | Google USA erwaehnt |
| Speicherdauer | PASS | 7 Tage, 10 Jahre, 90 Tage |
| Betroffenenrechte | PASS | Art. 15, 16, 17, 18, 20, 77 |
| Beschwerderecht | PASS | LfDI Baden-Wuerttemberg |
### L2 Checks (18/22)
| Check | Erwartet | TP/FP | Begruendung |
|-------|----------|-------|-------------|
| Anschrift (PLZ+Ort) | PASS | — | D-78467 Konstanz |
| E-Mail Verantwortlicher | PASS | — | info@konstanz.ihk.de |
| Telefon | PASS | — | +49(0)7531-2860-100 |
| DSB Kontakt | PASS | — | datenschutz@konstanz.ihk.de |
| Konkrete Zwecke | PASS | — | 5 Zwecke aufgezaehlt |
| Art. 6(1)(a) | PASS | — | Einwilligung erwaehnt |
| Art. 6(1)(b) | PASS | — | Vertrag erwaehnt |
| Art. 6(1)(f) | PASS | — | Berechtigtes Interesse erwaehnt |
| Interessenabwaegung | **FAIL** | **TP** | Interesse benannt, aber keine Abwaegung dokumentiert |
| Empfaenger-Kategorien | PASS | — | Scandienstleister, Hoster, IT-Dienstleister |
| Auftragsverarbeiter | PASS | — | Erwaehnt |
| Transfermechanismus | **FAIL** | **TP** | Privacy Shield erwaehnt (ungueltig seit Schrems II), kein SCC/DPF |
| Konkrete Zeitangaben | PASS | — | 7 Tage, 10 Jahre |
| Loeschkonzept | **FAIL** | **Grenzfall** | Loeschgrundsatz vorhanden, kein formales Loeschkonzept |
| Art. 15 Auskunft | PASS | — | Ausfuehrlich |
| Art. 16 Berichtigung | PASS | — | Ausfuehrlich |
| Art. 17 Loeschung | PASS | — | Ausfuehrlich |
| Art. 18 Einschraenkung | PASS | — | Ausfuehrlich |
| Art. 20 Portabilitaet | PASS | — | Ausfuehrlich |
| Art. 21 Widerspruch | PASS | — | Widerspruchsrecht erwaehnt |
| Art. 22 Profiling | **FAIL** | **TP** | Kein Hinweis auf Art. 22 oder Profiling |
| Aufsichtsbehoerde benannt | PASS | — | LfDI BW |
---
## Erwartete Ergebnisse: Impressum
### L1 Checks
| Check | Erwartet | Begruendung |
|-------|----------|-------------|
| Firmenname | PASS | IHK Hochrhein-Bodensee |
| Anschrift | PASS | Reichenaustr. 21, 78467 Konstanz |
| Vertretung | PASS | Praesident / Hauptgeschaeftsfuehrer |
| Kontakt | PASS | Telefon + E-Mail |
| V.i.S.d.P. | PASS oder INFO | Hat redaktionelle Inhalte |
---
## Banner-Check (erwartet)
| Feld | Erwartet |
|------|----------|
| banner_detected | true (einfacher Cookie-Hinweis) |
| provider | unbekannt (Eigenbau) |
| violations | gering |
---
## Cross-Check Banner vs Cookie
| Finding | Erwartet |
|---------|----------|
| eTracker fehlt in Cookie-RL | Unwahrscheinlich (eTracker in DSI erwaehnt) |
---
## Kontext-Filter
| Check | Filter-Ergebnis | Begruendung |
|-------|----------------|-------------|
| ODR/Streitbeilegung | SKIP | Oeffentlich-rechtlich, kein Shop |
| Widerruf | SKIP | Kein B2C |
| Berufsrecht | SKIP | Kein regulierter Beruf |
| V.i.S.d.P. | AKTIV | Hat redaktionelle Inhalte |
@@ -0,0 +1,107 @@
# Ground Truth: Stadt Koeln
**URL:** https://www.stadt-koeln.de
**Typ:** Kommune / Oeffentliche Verwaltung
**Datum:** 2026-05-12
**Batch-Test:** 9/9 L1, 21/22 L2 (Vorbildlich)
---
## Business Profile (erwartet)
| Feld | Erwarteter Wert |
|------|----------------|
| business_type | b2g |
| industry | public |
| has_online_shop | false |
| has_editorial_content | true (Nachrichten, Ratgeber) |
| is_regulated_profession | false |
| needs_odr | false |
---
## Dokumente
| Dokumenttyp | Vorhanden | URL |
|-------------|-----------|-----|
| DSI | Ja | https://www.stadt-koeln.de/datenschutz |
| Impressum | Ja | https://www.stadt-koeln.de/impressum |
| Cookie-Richtlinie | Nein (in DSI integriert) | — |
| AGB | Nein | — |
| Widerruf | Nein | — |
| Social Media DSE | Ggf. in DSI | — |
| Nutzungsbedingungen | Nein | — |
| DSB-Kontakt | In DSI | — |
---
## Erwartete Ergebnisse: DSI (Art. 13 DSGVO)
### L1 Checks (9/9 PASS)
| Check | Erwartet |
|-------|----------|
| Verantwortlicher | PASS |
| DSB | PASS |
| Zwecke | PASS |
| Rechtsgrundlage | PASS |
| Empfaenger | PASS |
| Drittlandtransfer | PASS |
| Speicherdauer | PASS |
| Betroffenenrechte | PASS |
| Beschwerderecht | PASS |
### L2 Checks (21/22)
| Check | Erwartet | Begruendung |
|-------|----------|-------------|
| Anschrift | PASS | Vollstaendige Adresse |
| E-Mail | PASS | Vorhanden |
| Telefon | PASS | Vorhanden |
| DSB Kontakt | PASS | Vorhanden |
| Konkrete Zwecke | PASS | Detailliert aufgezaehlt |
| Art. 6(1)(a) | PASS | Einwilligung |
| Art. 6(1)(b) | PASS | Vertrag |
| Art. 6(1)(f) | PASS | Berechtigtes Interesse |
| Interessenabwaegung | PASS | Dokumentiert |
| Empfaenger-Kategorien | PASS | Aufgezaehlt |
| Auftragsverarbeiter | PASS | Erwaehnt |
| Transfermechanismus | PASS | SCC/DPF erwaehnt |
| Zeitangaben | PASS | Konkrete Fristen |
| Loeschkonzept | **FAIL** | Kein formales Loeschkonzept referenziert |
| Art. 15-21 | PASS | Alle aufgezaehlt |
| Aufsichtsbehoerde | PASS | LDI NRW |
**Bewertung: Vorbildliche DSI. Einzig Loeschkonzept-Referenz fehlt.**
---
## Erwartete Ergebnisse: Impressum
| Check | Erwartet |
|-------|----------|
| Behoerdenname | PASS |
| Anschrift | PASS |
| Vertretung (OB) | PASS |
| Kontakt | PASS |
| V.i.S.d.P. | PASS (hat News) |
---
## Banner-Check
| Feld | Erwartet |
|------|----------|
| banner_detected | true |
| provider | Unbekannt |
| violations | gering (oeffentliche Stelle, wenig Tracking) |
---
## Kontext-Filter
| Check | Filter | Begruendung |
|-------|--------|-------------|
| ODR | SKIP | Keine kommerzielle Taetigkeit |
| Widerruf | SKIP | Kein B2C |
| Berufsrecht | SKIP | Nicht anwendbar |
+129
View File
@@ -0,0 +1,129 @@
# Ground Truth: BMW
**URL:** https://www.bmw.de
**Typ:** Konzern / B2C Automobil
**Datum:** 2026-05-12
**Batch-Test:** 8/9 L1, 10/21 L2 (Mangelhaft, 48%)
---
## Business Profile (erwartet)
| Feld | Erwarteter Wert |
|------|----------------|
| business_type | b2c |
| industry | automotive |
| has_online_shop | true (Konfigurator, Zubehoer) |
| has_editorial_content | true (Magazine, Blog) |
| is_regulated_profession | false |
| needs_odr | true (B2C Online-Angebote) |
---
## Dokumente
| Dokumenttyp | Vorhanden | URL |
|-------------|-----------|-----|
| DSI | Ja | https://www.bmw.de/de/footer/metanavigation/datenschutz.html |
| Impressum | Ja | https://www.bmw.de/de/footer/metanavigation/impressum.html |
| Cookie-Richtlinie | Ja (separate Seite) | https://www.bmw.de/de/footer/metanavigation/cookie-policy.html |
| AGB | Ja | TODO: URL verifizieren |
| Widerruf | Ggf. in AGB | — |
| Social Media DSE | Nein | — |
| Nutzungsbedingungen | Ja | TODO: URL verifizieren |
| DSB-Kontakt | In DSI | — |
---
## Erwartete Ergebnisse: DSI (Art. 13 DSGVO)
### L1 Checks (8/9)
| Check | Erwartet | Begruendung |
|-------|----------|-------------|
| Verantwortlicher | PASS | BMW AG, Muenchen |
| DSB | PASS | DSB erwaehnt |
| Zwecke | PASS | Ausfuehrlich |
| Rechtsgrundlage | PASS | Art. 6 Referenzen |
| Empfaenger | PASS | Kategorien aufgezaehlt |
| Drittlandtransfer | PASS | USA-Transfer erwaehnt |
| Speicherdauer | PASS | Zeitangaben vorhanden |
| Betroffenenrechte | **FAIL** | Rechte ohne Art.-Referenzen |
| Beschwerderecht | **FAIL** | Art. 77 nicht explizit erwaehnt |
### L2 Checks (10/21 — verifizierte True Positives)
| Check | Erwartet | TP/FP |
|-------|----------|-------|
| Anschrift | PASS | — |
| E-Mail | **FAIL** | **TP** — Keine direkte E-Mail-Adresse fuer DSB angegeben |
| Telefon | PASS | — |
| DSB Kontakt | PASS | — |
| Art. 6(1)(a) | PASS | — |
| Art. 6(1)(b) | PASS | — |
| Art. 6(1)(f) | PASS | — |
| Interessenabwaegung | **FAIL** | **TP** — Keine dokumentierte Abwaegung |
| Transfermechanismus | **FAIL** | **TP** — Kein SCC/DPF benannt |
| Art. 15-18,20,21 | **FAIL** | **TP** — Rechte ohne Artikel-Referenzen aufgezaehlt |
| Art. 22 Profiling | **FAIL** | **TP** — Kein Profiling-Hinweis trotz Konfigurator/Personalisierung |
| Aufsichtsbehoerde | **FAIL** | **TP** — Keine konkrete Behoerde benannt |
| Loeschkonzept | **FAIL** | **TP** — Kein Loeschkonzept referenziert |
**Verifiziert: BMW hat tatsaechlich eine lueckenhafte DSI. Die Findings sind True Positives.**
---
## Erwartete Ergebnisse: Impressum
| Check | Erwartet | Begruendung |
|-------|----------|-------------|
| Firmenname | PASS | BMW AG |
| Anschrift | PASS | Petuelring 130, 80809 Muenchen |
| Vertretung | PASS | Vorstand benannt |
| Registergericht | PASS | AG Muenchen, HRB 42243 |
| USt-IdNr | PASS | DE 129 273 987 |
| V.i.S.d.P. | PASS | Hat redaktionelle Inhalte |
| Streitbeilegung | AKTIV | B2C mit Online-Angebot → ODR relevant |
---
## Erwartete Ergebnisse: Cookie-Richtlinie
| Check | Erwartet |
|-------|----------|
| Cookie-Arten | PASS (Essential, Analytics, Marketing) |
| Cookie-Zwecke | PASS |
| Speicherdauern | TODO: verifizieren |
| Drittanbieter | PASS (Google, Meta etc.) |
| Rechtsgrundlage | TODO: §25 TDDDG? |
| Consent-Tool | PASS (OneTrust o.ae.) |
---
## Banner-Check
| Feld | Erwartet |
|------|----------|
| banner_detected | true |
| provider | OneTrust oder aehnlich |
| violations | Mehrere (grosser Konzern mit viel Tracking) |
---
## Cross-Check Banner vs Cookie
| Finding | Erwartet |
|---------|----------|
| Dienste fehlen in Cookie-RL | Moeglich (viele Third-Party-Tracker) |
| Tracking vor Consent | Moeglich (Pre-Consent Analytics) |
---
## Kontext-Filter
| Check | Filter | Begruendung |
|-------|--------|-------------|
| ODR | AKTIV | B2C mit Online-Angebot |
| Widerruf | AKTIV | B2C |
| Berufsrecht | SKIP | Kein regulierter Beruf |
| V.i.S.d.P. | AKTIV | Hat Magazine/Blog |
@@ -0,0 +1,100 @@
# Ground Truth: Sparkasse Bodensee
**URL:** https://www.sparkasse-bodensee.de
**Typ:** Finanzdienstleister / Oeffentlich-rechtlich
**Datum:** 2026-05-12
**Batch-Test:** 7/9 L1, 10/20 L2 (Mangelhaft, 50%)
---
## Business Profile (erwartet)
| Feld | Erwarteter Wert |
|------|----------------|
| business_type | b2c |
| industry | finance |
| has_online_shop | false |
| has_editorial_content | true (Ratgeber, Finanzwissen) |
| is_regulated_profession | true |
| regulated_profession_type | finanzdienstleister |
| needs_odr | false (kein Online-Shop) |
---
## Dokumente
| Dokumenttyp | Vorhanden | URL |
|-------------|-----------|-----|
| DSI | Ja | https://www.sparkasse-bodensee.de/de/home/toolbar/datenschutz.html |
| Impressum | Ja | https://www.sparkasse-bodensee.de/de/home/toolbar/impressum.html |
| Cookie-Richtlinie | Ggf. in DSI | — |
| AGB | Ja | TODO: URL verifizieren |
| Widerruf | Nein | — |
| Social Media DSE | Nein | — |
| Nutzungsbedingungen | Ggf. in AGB | — |
| DSB-Kontakt | In DSI | — |
---
## Erwartete Ergebnisse: DSI (Art. 13 DSGVO)
### L1 Checks (7/9)
| Check | Erwartet | Begruendung |
|-------|----------|-------------|
| Verantwortlicher | PASS | Sparkasse Bodensee |
| DSB | **FAIL** | **TP** — Kein DSB erwaehnt (Pflicht bei Finanzinstitut!) |
| Zwecke | PASS | Aufgezaehlt |
| Rechtsgrundlage | PASS | Art. 6 Referenzen |
| Empfaenger | PASS | Kategorien |
| Drittlandtransfer | PASS | Erwaehnt |
| Speicherdauer | PASS | Zeitangaben |
| Betroffenenrechte | PASS | Aufgezaehlt |
| Beschwerderecht | **FAIL** | **TP** — Art. 77 nicht explizit |
### L2 Checks (10/20)
| Check | Erwartet | TP/FP |
|-------|----------|-------|
| Anschrift | PASS | — |
| E-Mail | PASS | — |
| Interessenabwaegung | **FAIL** | **TP** |
| Transfermechanismus | **FAIL** | **TP** |
| Art. 22 Profiling | **FAIL** | **TP** — Bank mit Online-Banking sollte Profiling-Hinweis haben |
| Loeschkonzept | **FAIL** | **TP** |
| Aufsichtsbehoerde | **FAIL** | **TP** |
**Verifiziert: Sparkasse hat tatsaechlich eine lueckenhafte DSI. Fehlender DSB ist besonders kritisch bei einem Finanzinstitut.**
---
## Erwartete Ergebnisse: Impressum
| Check | Erwartet | Begruendung |
|-------|----------|-------------|
| Firmenname | PASS | Sparkasse Bodensee |
| Anschrift | PASS | Vorhanden |
| Vertretung | PASS | Vorstand |
| Registergericht | PASS | — |
| Aufsichtsbehoerde | PASS | BaFin als Finanzaufsicht |
| Berufsrecht | AKTIV | KWG, Sparkassengesetz |
---
## Banner-Check
| Feld | Erwartet |
|------|----------|
| banner_detected | true |
| provider | Ggf. eigene Loesung |
| violations | Mittel |
---
## Kontext-Filter
| Check | Filter | Begruendung |
|-------|--------|-------------|
| ODR | SKIP | Kein Online-Shop |
| Berufsrecht | AKTIV | Regulierter Finanzdienstleister |
| V.i.S.d.P. | AKTIV | Hat Ratgeber-Inhalte |
+121
View File
@@ -0,0 +1,121 @@
# Ground Truth: Spiegel
**URL:** https://www.spiegel.de
**Typ:** Medien / Nachrichtenportal
**Datum:** 2026-05-12
**Batch-Test:** 6/9 L1, 10/13 L2 (Mangelhaft, 77%)
---
## Business Profile (erwartet)
| Feld | Erwarteter Wert |
|------|----------------|
| business_type | b2c |
| industry | media |
| has_online_shop | true (Abo-Shop, Spiegel+) |
| has_editorial_content | true (Kerngeschaeft) |
| is_regulated_profession | false |
| needs_odr | true (B2C Online-Abo) |
---
## Dokumente
| Dokumenttyp | Vorhanden | URL |
|-------------|-----------|-----|
| DSI | Ja | https://www.spiegel.de/datenschutz |
| Impressum | Ja | https://www.spiegel.de/impressum |
| Cookie-Richtlinie | Ja (ggf. in DSI) | — |
| AGB | Ja | https://www.spiegel.de/agb |
| Widerruf | Ja (in AGB) | — |
| Social Media DSE | Nein | — |
| Nutzungsbedingungen | In AGB | — |
| DSB-Kontakt | In DSI | — |
**Besonderheit:** Consent-Wall blockiert Zugang ohne Cookie-Zustimmung. Text-Extraktion kann scheitern.
---
## Erwartete Ergebnisse: DSI (Art. 13 DSGVO)
### L1 Checks (6/9)
| Check | Erwartet | Begruendung |
|-------|----------|-------------|
| Verantwortlicher | PASS | SPIEGEL-Verlag |
| DSB | **FAIL** | **TP** — Kein DSB in der DSI erwaehnt |
| Zwecke | PASS | Aufgezaehlt |
| Rechtsgrundlage | PASS | Art. 6 |
| Empfaenger | PASS | Werbenetzwerke, Analytics |
| Drittlandtransfer | PASS | USA-Transfer |
| Speicherdauer | PASS | Angaben vorhanden |
| Betroffenenrechte | **FAIL** | **TP** — Rechte nicht explizit aufgezaehlt |
| Beschwerderecht | **FAIL** | **TP** — Art. 77 fehlt |
### L2 Checks (Stichproben)
| Check | Erwartet | TP/FP |
|-------|----------|-------|
| E-Mail | PASS | — |
| Interessenabwaegung | **FAIL** | **TP** |
| Art. 22 Profiling | **FAIL** | **TP** — Personalisierte Werbung ohne Profiling-Hinweis |
| Aufsichtsbehoerde | **FAIL** | **TP** |
**Verifiziert: Spiegel DSI ist fuer ein grosses Medienunternehmen erstaunlich unvollstaendig.**
---
## Erwartete Ergebnisse: Impressum
| Check | Erwartet | Begruendung |
|-------|----------|-------------|
| Firmenname | PASS | SPIEGEL-Verlag Rudolf Augstein GmbH & Co. KG |
| Anschrift | PASS | Ericusspitze 1, 20457 Hamburg |
| Vertretung | PASS | Geschaeftsfuehrer |
| V.i.S.d.P. | PASS | Pflicht bei Medienunternehmen, sollte vorhanden sein |
| Registergericht | PASS | AG Hamburg |
| USt-IdNr | PASS | Vorhanden |
| Streitbeilegung | AKTIV | B2C mit Online-Abo |
---
## Erwartete Ergebnisse: AGB
| Check | Erwartet |
|-------|----------|
| Geltungsbereich | PASS |
| Vertragsschluss | PASS |
| Preise | PASS (Abo-Preise) |
| Kuendigungsrecht | PASS |
| Widerrufsrecht | PASS (14 Tage) |
| Haftungsbeschraenkung | PASS |
---
## Banner-Check
| Feld | Erwartet |
|------|----------|
| banner_detected | true |
| provider | Sourcepoint oder TCF-basiert |
| violations | Mehrere (viel Third-Party-Tracking) |
---
## Cross-Check Banner vs Cookie
| Finding | Erwartet |
|---------|----------|
| Dienste fehlen in Cookie-RL | Wahrscheinlich (viele Werbenetzwerke) |
| Tracking vor Consent | Moeglich |
---
## Kontext-Filter
| Check | Filter | Begruendung |
|-------|--------|-------------|
| ODR | AKTIV | B2C Online-Abo |
| Widerruf | AKTIV | B2C |
| V.i.S.d.P. | AKTIV | Medienunternehmen (Kernpflicht) |
@@ -0,0 +1,97 @@
# Ground Truth: TUEV Sued
**URL:** https://www.tuvsud.com/de-de
**Typ:** Prueforganisation / B2B
**Datum:** 2026-05-12
**Batch-Test:** 8/9 L1, 15/21 L2 (Luecken, 71%)
---
## Business Profile (erwartet)
| Feld | Erwarteter Wert |
|------|----------------|
| business_type | b2b |
| industry | certification |
| has_online_shop | false |
| has_editorial_content | true (Wissensbeitraege, Whitepaper) |
| is_regulated_profession | false |
| needs_odr | false |
---
## Dokumente
| Dokumenttyp | Vorhanden | URL |
|-------------|-----------|-----|
| DSI | Ja | https://www.tuvsud.com/de-de/datenschutzerklaerung |
| Impressum | Ja | https://www.tuvsud.com/de-de/impressum |
| Cookie-Richtlinie | Ja (separate oder in DSI) | TODO: URL verifizieren |
| AGB | Ja | TODO: URL |
| Widerruf | Nein | — |
| Social Media DSE | Nein | — |
| Nutzungsbedingungen | Ja | TODO: URL |
| DSB-Kontakt | In DSI | — |
---
## Erwartete Ergebnisse: DSI (Art. 13 DSGVO)
### L1 Checks (8/9)
| Check | Erwartet | Begruendung |
|-------|----------|-------------|
| Verantwortlicher | PASS | TUEV SUED AG, Muenchen |
| DSB | **FAIL** | **TP** — Kein DSB explizit benannt |
| Zwecke | PASS | Aufgezaehlt |
| Rechtsgrundlage | PASS | Art. 6 |
| Empfaenger | PASS | Kategorien |
| Drittlandtransfer | PASS | USA-Transfer |
| Speicherdauer | PASS | Angaben vorhanden |
| Betroffenenrechte | PASS | Aufgezaehlt |
| Beschwerderecht | PASS | Aufsichtsbehoerde erwaehnt |
### L2 Checks (15/21)
| Check | Erwartet | TP/FP |
|-------|----------|-------|
| Anschrift | PASS | — |
| E-Mail | PASS | — |
| Interessenabwaegung | **FAIL** | **TP** |
| Transfermechanismus | **FAIL** | **TP** |
| Art. 22 Profiling | **FAIL** | **TP** |
| Loeschkonzept | **FAIL** | **TP** |
| Weitere | TODO: verifizieren | |
---
## Erwartete Ergebnisse: Impressum
| Check | Erwartet |
|-------|----------|
| Firmenname | PASS |
| Anschrift | PASS |
| Vertretung | PASS |
| Registergericht | PASS |
| USt-IdNr | PASS |
| V.i.S.d.P. | INFO (hat Wissensbeitraege) |
---
## Banner-Check
| Feld | Erwartet |
|------|----------|
| banner_detected | true |
| provider | OneTrust o.ae. |
| violations | Mittel |
---
## Kontext-Filter
| Check | Filter | Begruendung |
|-------|--------|-------------|
| ODR | SKIP | B2B, kein Shop |
| Widerruf | SKIP | B2B |
| Berufsrecht | SKIP | Kein regulierter Beruf |
@@ -0,0 +1,98 @@
# Ground Truth: ETO Gruppe
**URL:** https://www.etogruppe.com
**Typ:** Mittelstand / B2B Industriezulieferer
**Datum:** 2026-05-12
**Batch-Test:** 9/9 L1, 21/22 L2 (Vorbildlich, 95%)
---
## Business Profile (erwartet)
| Feld | Erwarteter Wert |
|------|----------------|
| business_type | b2b |
| industry | manufacturing |
| has_online_shop | false |
| has_editorial_content | false |
| is_regulated_profession | false |
| needs_odr | false |
---
## Dokumente
| Dokumenttyp | Vorhanden | URL |
|-------------|-----------|-----|
| DSI | Ja | https://www.etogruppe.com/datenschutz.html |
| Impressum | Ja | https://www.etogruppe.com/impressum.html |
| Cookie-Richtlinie | In DSI | — |
| AGB | Nein (B2B, individuelle Vertraege) | — |
| Widerruf | Nein | — |
| Social Media DSE | Nein | — |
| Nutzungsbedingungen | Nein | — |
| DSB-Kontakt | In DSI | — |
**Besonderheit:** Soft-Hyphens (\xad) im Text fuer Worttrennung. Wurde als Regex-Bug identifiziert und gefixt.
---
## Erwartete Ergebnisse: DSI (Art. 13 DSGVO)
### L1 Checks (9/9 PASS)
| Check | Erwartet | Begruendung |
|-------|----------|-------------|
| Verantwortlicher | PASS | ETO GRUPPE GmbH |
| DSB | PASS | DSB mit Kontaktdaten |
| Zwecke | PASS | Detailliert |
| Rechtsgrundlage | PASS | Art. 6 mit allen Varianten |
| Empfaenger | PASS | Kategorien aufgezaehlt |
| Drittlandtransfer | PASS | Erwaehnt |
| Speicherdauer | PASS | Konkrete Zeitangaben |
| Betroffenenrechte | PASS | Art. 15-21 einzeln |
| Beschwerderecht | PASS | Art. 77 + Aufsichtsbehoerde |
### L2 Checks (21/22)
| Check | Erwartet | TP/FP |
|-------|----------|-------|
| Alle Standard-Checks | PASS | — |
| Loeschkonzept | **FAIL** | **Grenzfall** — Loeschfristen vorhanden aber kein Verweis auf formales Konzept |
**Bewertung: Vorbildliche DSI eines Mittelstaendlers. Nur minimale Luecke.**
---
## Erwartete Ergebnisse: Impressum
| Check | Erwartet |
|-------|----------|
| Firmenname | PASS |
| Anschrift | PASS |
| Vertretung | PASS |
| Registergericht | PASS |
| USt-IdNr | PASS |
| V.i.S.d.P. | SKIP (kein Blog) |
| Streitbeilegung | SKIP (B2B) |
---
## Banner-Check
| Feld | Erwartet |
|------|----------|
| banner_detected | true |
| provider | Unbekannt |
| violations | gering |
---
## Kontext-Filter
| Check | Filter | Begruendung |
|-------|--------|-------------|
| ODR | SKIP | B2B, kein Shop |
| Widerruf | SKIP | B2B |
| V.i.S.d.P. | SKIP | Keine redaktionellen Inhalte |
| Berufsrecht | SKIP | Kein regulierter Beruf |
+96
View File
@@ -0,0 +1,96 @@
# Ground Truth: Caritas
**URL:** https://www.caritas.de
**Typ:** Nonprofit / Wohlfahrtsverband
**Datum:** 2026-05-12
**Batch-Test:** 9/9 L1, 19/22 L2 (Gut, 86%)
---
## Business Profile (erwartet)
| Feld | Erwarteter Wert |
|------|----------------|
| business_type | nonprofit |
| industry | social |
| has_online_shop | false |
| has_editorial_content | true (Ratgeber, Beratung, News) |
| is_regulated_profession | false |
| needs_odr | false |
---
## Dokumente
| Dokumenttyp | Vorhanden | URL |
|-------------|-----------|-----|
| DSI | Ja | https://www.caritas.de/datenschutz |
| Impressum | Ja | https://www.caritas.de/impressum |
| Cookie-Richtlinie | Ggf. in DSI | — |
| AGB | Nein | — |
| Widerruf | Nein | — |
| Social Media DSE | Nein (ggf. in DSI) | — |
| Nutzungsbedingungen | Nein | — |
| DSB-Kontakt | In DSI | — |
---
## Erwartete Ergebnisse: DSI (Art. 13 DSGVO)
### L1 Checks (9/9 PASS)
| Check | Erwartet |
|-------|----------|
| Verantwortlicher | PASS |
| DSB | PASS |
| Zwecke | PASS |
| Rechtsgrundlage | PASS |
| Empfaenger | PASS |
| Drittlandtransfer | PASS |
| Speicherdauer | PASS |
| Betroffenenrechte | PASS |
| Beschwerderecht | PASS |
### L2 Checks (19/22)
| Check | Erwartet | TP/FP |
|-------|----------|-------|
| Standard-Checks | PASS | — |
| Interessenabwaegung | **FAIL** | **TP** — Interesse benannt, keine Abwaegung |
| Loeschkonzept | **FAIL** | **Grenzfall** |
| Art. 22 Profiling | **FAIL** | **TP** — Nicht erwaehnt |
**Bewertung: Gute DSI. Nur 3 fehlende L2-Details.**
---
## Erwartete Ergebnisse: Impressum
| Check | Erwartet |
|-------|----------|
| Firmenname | PASS |
| Anschrift | PASS |
| Vertretung | PASS |
| Kontakt | PASS |
| V.i.S.d.P. | PASS (hat News/Ratgeber) |
---
## Banner-Check
| Feld | Erwartet |
|------|----------|
| banner_detected | true |
| provider | Unbekannt |
| violations | gering (wenig Tracking bei Nonprofit) |
---
## Kontext-Filter
| Check | Filter | Begruendung |
|-------|--------|-------------|
| ODR | SKIP | Kein Shop |
| Widerruf | SKIP | Kein B2C-Handel |
| Berufsrecht | SKIP | Nicht anwendbar |
| V.i.S.d.P. | AKTIV | Hat redaktionelle Inhalte |
+102
View File
@@ -0,0 +1,102 @@
# Ground Truth: BfDI (Bundesbeauftragter fuer den Datenschutz)
**URL:** https://www.bfdi.bund.de
**Typ:** Bundesbehoerde / Datenschutzaufsicht
**Datum:** 2026-05-12
**Batch-Test:** 9/9 L1, 16/22 L2 (OK, 73%)
---
## Business Profile (erwartet)
| Feld | Erwarteter Wert |
|------|----------------|
| business_type | b2g |
| industry | public |
| has_online_shop | false |
| has_editorial_content | true (Pressemitteilungen, Taetigkeitsberichte) |
| is_regulated_profession | false |
| needs_odr | false |
---
## Dokumente
| Dokumenttyp | Vorhanden | URL |
|-------------|-----------|-----|
| DSI | Ja | https://www.bfdi.bund.de/DE/Meta/Datenschutz/datenschutz_node.html |
| Impressum | Ja | https://www.bfdi.bund.de/DE/Meta/Impressum/impressum_node.html |
| Cookie-Richtlinie | Nein (in DSI) | — |
| AGB | Nein | — |
| Widerruf | Nein | — |
| Social Media DSE | Nein | — |
| Nutzungsbedingungen | Nein | — |
| DSB-Kontakt | In DSI | — |
**Besonderheit:** Kurze DSI (2014 Woerter) fuer die Bundesbehoerde fuer Datenschutz — ironisch, dass die eigene DSI Luecken hat.
---
## Erwartete Ergebnisse: DSI (Art. 13 DSGVO)
### L1 Checks (9/9 PASS)
| Check | Erwartet |
|-------|----------|
| Verantwortlicher | PASS |
| DSB | PASS |
| Zwecke | PASS |
| Rechtsgrundlage | PASS |
| Empfaenger | PASS |
| Drittlandtransfer | PASS |
| Speicherdauer | PASS |
| Betroffenenrechte | PASS |
| Beschwerderecht | PASS |
### L2 Checks (16/22)
| Check | Erwartet | TP/FP |
|-------|----------|-------|
| Anschrift | PASS | — |
| E-Mail | PASS | — |
| DSB Kontakt | PASS | — |
| Interessenabwaegung | **FAIL** | **TP** — Nicht explizit dokumentiert |
| Transfermechanismus | **FAIL** | **Grenzfall** — Bundesbehoerde nutzt ggf. keine Drittland-Dienste |
| Loeschkonzept | **FAIL** | **TP** — Kein formales Konzept referenziert |
| Art. 22 Profiling | **FAIL** | **TP** — Nicht erwaehnt |
| Aufsichtsbehoerde | PASS | — (BfDI ist selbst die Aufsicht) |
**Bewertung: Ordentlich aber kurz. Fuer die Datenschutzbehoerde selbst erstaunlich lueckenhaft bei L2-Details.**
---
## Erwartete Ergebnisse: Impressum
| Check | Erwartet |
|-------|----------|
| Behoerdenname | PASS |
| Anschrift | PASS |
| Vertretung | PASS |
| Kontakt | PASS |
| V.i.S.d.P. | PASS (hat Pressemitteilungen) |
---
## Banner-Check
| Feld | Erwartet |
|------|----------|
| banner_detected | true/false (Bundesbehoerde, evtl. kein Banner) |
| provider | Unbekannt |
| violations | gering (keine Werbung, kaum Tracking) |
---
## Kontext-Filter
| Check | Filter | Begruendung |
|-------|--------|-------------|
| ODR | SKIP | Keine kommerzielle Taetigkeit |
| Widerruf | SKIP | Kein B2C |
| Berufsrecht | SKIP | Behoerde |
| V.i.S.d.P. | AKTIV | Hat Pressemitteilungen |
+43
View File
@@ -0,0 +1,43 @@
# Ground Truth — Unified Compliance Check
## Zweck
Diese Dateien definieren die erwarteten Ergebnisse fuer den Unified Compliance Check
pro Website. Sie dienen als Referenz fuer:
- Regression-Tests (automatisch)
- Manuelle Validierung neuer Check-Regeln
- False-Positive-Rate-Messung
## Format pro Datei
Jede GT-Datei enthaelt:
1. **Website-Info** — URL, Typ, Datum der Pruefung
2. **Business Profile** — Erwartetes Ergebnis der automatischen Erkennung
3. **Dokumente** — Welche der 8 Dokumenttypen vorhanden sind + URLs
4. **Erwartete Ergebnisse** — L1/L2 Checks pro Dokument mit Begruendung
5. **Banner-Check** — Erwartete Banner-Findings
6. **Cross-Check** — Erwartete Banner-vs-Cookie Findings
## Websites (10)
| # | Website | Typ | Besonderheit |
|---|---------|-----|-------------|
| 1 | SafetyKon | B2B Beratung | Nur DSI + Impressum, alles auf einer Seite |
| 2 | IHK Konstanz | Kammer | Lange DSI mit Cookie+Social+DSFA Sektionen |
| 3 | Stadt Koeln | Kommune | Vorbildliche DSI |
| 4 | BMW | Konzern | Lueckenhafte DSI |
| 5 | Sparkasse KN | Finanz | Kein DSB, kein Art. 77 |
| 6 | Spiegel | Medien | Consent-Wall, kurze DSI |
| 7 | TUEV Sued | Prueforg. | Fehlender DSB |
| 8 | ETO Gruppe | Mittelstand B2B | Vorbildlich |
| 9 | Caritas | Nonprofit | Gut, lange DSI |
| 10 | BfDI | Bundesbehoerde | Kurze DSI |
## Aktualisierung
Ground Truth muss aktualisiert werden wenn:
- Websites ihre Rechtstexte aendern
- Neue Checks hinzugefuegt werden
- False Positives/Negatives korrigiert werden
Datum der letzten Pruefung steht in jeder Datei.