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 = [
"unternehmen", "geschaeftskunden", "geschäftskunden", "gewerblich",
"auftrag", "auftraggeber", "auftragnehmer", "geschaeftspartner",
"geschäftspartner", "firmenkunde", "b2b",
"auftraggeber", "auftragnehmer", "geschaeftspartner",
"geschäftspartner", "firmenkunde", "b2b", "industriekunden",
"beratung", "consulting", "dienstleistung", "engineering",
]
_B2G_KEYWORDS = [
"behoerde", "behörde", "koerperschaft", "körperschaft", "oeffentlich",
"öffentlich", "gemeinde", "amt", "stadtverwaltung", "landesbehoerde",
"landesbehörde", "kommunal",
"koerperschaft des oeffentlichen rechts", "körperschaft des öffentlichen rechts",
"gemeinde", "stadtverwaltung", "landesbehoerde", "landesbehörde",
"kommunal", "buergerservice", "bürgerservice", "rathaus",
"landesamt", "bundesamt", "oeffentliche verwaltung", "öffentliche verwaltung",
"oeffentlicher dienst", "öffentlicher dienst",
]
_NONPROFIT_KEYWORDS = [
@@ -93,14 +96,17 @@ _EDITORIAL_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"],
"healthcare": ["arzt", "praxis", "patient", "gesundheit", "therapie", "klinik"],
"legal": ["kanzlei", "rechtsanwalt", "mandant", "anwalt"],
"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"],
"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 = {
@@ -197,8 +203,16 @@ async def detect_business_profile(documents: dict[str, str]) -> BusinessProfile:
total = sum(max(0, v) for v in scores.values())
profile.confidence = round(best_val / total, 2) if total > 0 else 0.5
else:
profile.business_type = "unknown"
profile.confidence = 0.2
# Fallback: GmbH/AG without B2C signals → assume B2B
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) ─────────────────────────────
# 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.