Files
breakpilot-compliance/zeroclaw/docs/ground-truth/elli_eco_2026-06-06.json
T
Benjamin Admin d0e3621192 feat(audit): V2 mail render + 5 new findings (B4/B5/B6/B7/B8) + LLM-Plausibility-Phase
Mail Render V2 (compliance/services/mail_render_v2/) — 11-Modul-Subpackage
das einen einheitlichen Audit-Mail-Output erzeugt mit:
  - Header + KPI-Kacheln (Score / Findings / Docs / Vendors)
  - TOC + Sprung-Links
  - 3-Bucket-Trennung: Kritische Befunde / Manuelle Prüfung / Interne Reminder
  - Cookie-Inventar (Name·Vendor·Kategorie·Speicherdauer·Löschfrist·Sitzland·Quelle·Status)
  - Sofortmaßnahmen-Aggregator ("Sitzland ergänzen für 11 Cookies")
  - 24 Legacy-Wrappers — alle alten build_*_html in V2-Sections
  - Scope-Filter: FIN/GOV/MED/INS/EDU/LEG aus Berichten wenn nicht relevant
  - Hint/Action-Dedup: keine doppelten Sätze pro Card mehr
Aktiviert via env MAIL_RENDER_V2=true (Default: legacy renderer).

5 neue deterministische Findings als Phase D-2b/B4/B5/B6/B7/B8:

  B4 vendor_consistency_check — Cross-Doc-Provider-Widerspruch
     (Elli: DSE nennt Vertex AI für Chatbot, /de/cookies nennt Iadvize → HIGH).
     6 Service-Types: chatbot/analytics/tag_manager/pixel/cdn/cmp.

  B5 ai_act_transparency_check — AI Act Art. 50 Transparenzpflicht
     (Elli: Vertex AI vorhanden ohne Pre-Chat-Disclosure → HIGH).
     Plus B5-Erweiterung: Rechtsgrundlage Art-6-Abs-1-lit-f bei AI → MED
     (Einwilligung empfehlen).

  B6 cross_doc_dpo_check — DPO in DSE genannt, nicht im Impressum (LOW).

  B7 doc_staleness_check — Datum-Extraktion aus DSE/AGB/Nutzungsbedingungen.
     Cap: AGB/NB 3y, DSE 2y. Älter → MEDIUM (Elli NB Stand 2018 → HIGH).

  B8 cmp_fingerprint_check — Banner detected, aber CMP-Provider generic
     (kein Usercentrics/OneTrust/Cookiebot/etc → MED).

  B3-Erweiterung detect_intra_doc_contradictions — Widersprüchliche
     Speicherdauer im SELBEN Doc (Elli: Logfile 7d vs 30d → HIGH).

LLM-Plausibility-Phase (Phase D-2b, finding_plausibility_check.py):
  - Läuft AFTER MC pipeline, BEFORE D3 render
  - Prompt mit Beispiel-IDs + 3-Phase-Mapping: exact-ID / position-fallback /
    fuzzy-tail-match
  - Stempelt llm_title / llm_severity / llm_recommendation / llm_drop auf
    jeden FAIL CheckItem
  - V2-Render zeigt "🤖 LLM-Plausibility:" Box pro Finding wenn gestempelt
  - KNOWN ISSUE: qwen3:30b-a3b liefert oft empty content auf format='json' +
    8000-char-excerpt prompts. Pipeline läuft mit stamped=0 weiter. Task #16.

Coverage gegen Elli Ground Truth (zeroclaw/docs/ground-truth/elli_eco_2026-06-06.json,
13 expected findings via WebFetch-Agent-Crawl):
  - 4/4 HIGH-Findings ✓ (COOKIE-CONSENT-UX-001 + WIDERRUFSBELEHRUNG-001 +
    VENDOR-CONSISTENCY-001 + AI-ACT-TRANSPARENCY-001)
  - 4/6 MEDIUM ✓
  - 2/3 LOW ✓
  - Total: 10/13 = 77% (Sprung von 4/13 = 31%)

Restliche 3 Gaps als Task #17: IMPRESSUM-001 (multi-entity USt-IdNr),
TRANSFER-001 (Vendor-Mechanismus DPF/SCC), TH-RETENTION-002 (AI-Retention
pro Datenkategorie).

V2-Mail-Preview in Mailpit: 'v2all@local.test' Subject '[V2 ALL] ELLI'.
Backend healthy, B1+B3+B4+B5+B6+B7+B8 alle live im Orchestrator.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-06 21:19:49 +02:00

426 lines
24 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"site": "elli.eco",
"crawled_at": "2026-06-06",
"crawler": "BreakPilot-Compliance Ground-Truth crawl via WebFetch",
"notes_on_url_structure": [
"Canonical privacy policy lives at /de/datenschutz (NOT /de/datenschutzerklaerung — that path 404s).",
"Canonical cookie page lives at /de/cookies (NOT /de/cookie-richtlinie — that path 404s).",
"Canonical terms page lives at /de/nutzungsbedingungen (NOT /de/agb — that path 404s).",
"Withdrawal page: /de/widerruf and /de/widerrufsbelehrung BOTH 404. No standalone Widerrufsbelehrung discovered on the public-facing footer.",
"Footer has a 'Datenschutz-Einstellungen' label, but /de/datenschutz-einstellungen 404s as a URL — the link is a JS-triggered CMP-reopen, not a page. This is relevant for the reachability finding.",
"/de/ (with trailing slash) returns HTTP 303 redirect; homepage canonical is /de/startseite."
],
"docs": {
"home": {
"url": "https://www.elli.eco/de/startseite",
"exists": true,
"status": 200,
"word_count_approx": 1300,
"key_data": {
"cookie_banner_on_entry": true,
"cmp_provider_visible": "not explicitly identifiable from rendered markup (no Usercentrics/OneTrust/Cookiebot/TrustArc fingerprint exposed to crawler)",
"consent_banner_button_labels": ["ablehnen", "akzeptieren"],
"ai_chatbot_widget_visible": false,
"ai_chatbot_disclosure_near_widget": null,
"footer_links": [
"Impressum",
"Datenschutz",
"EU Data Act",
"Datenschutz-Einstellungen",
"Nutzungsbedingungen",
"Cookies",
"Barrierefreiheit",
"Karriere",
"Newsroom",
"Mission Statement",
"Hinweisgebersystem",
"Kontakt",
"Ladetarife",
"Volkswagen Naturstrom",
"FAQ für Privatkunden",
"Fleet Charging",
"Wallbox",
"Flexpole - Schnellladesäule",
"Charging Site Management",
"Downloads",
"Partner FAQs"
]
}
},
"impressum": {
"url": "https://www.elli.eco/de/impressum",
"exists": true,
"status": 200,
"word_count_approx": 160,
"key_data": {
"entities_listed": [
{
"legal_name": "Volkswagen Group Charging GmbH",
"address": "Karl-Liebknecht-Str. 32, 10178 Berlin",
"register_court": "Amtsgericht Charlottenburg",
"hrb": "HRB 208967 B",
"vat_id": null,
"managing_directors": ["Giovanni Palazzo (CEO)", "Mark Möller (CTO)", "Dr. Tobias Canz (CFO)", "Anja Christmann (CHRO)"],
"phone": "00800 3554 1111",
"email": "info@elli.eco",
"content_responsible_mstv_section_18": "Giovanni Palazzo, Karl-Liebknecht-Str. 32, 10178 Berlin"
},
{
"legal_name": "Elli Mobility GmbH",
"address": "Karl-Liebknecht-Str. 32, 10178 Berlin",
"register_court": "Amtsgericht Charlottenburg",
"hrb": "HRB 274616 B",
"vat_id": "DE814424009",
"managing_directors": ["Joschi Jennermann", "Sebastian Steffen"],
"phone": "00800 00002030",
"email": "ellimobility@elli.eco",
"content_responsible_mstv_section_18": "Joschi Jennermann und Sebastian Steffen, Karl-Liebknecht-Str. 32, 10178 Berlin"
}
],
"dpo_named_in_impressum": false,
"dpo_contact_in_impressum": null,
"vat_id_for_vw_group_charging": null,
"completeness_section_5_tmg": "PARTIAL — VW Group Charging GmbH entry lacks a USt-IdNr."
}
},
"dse": {
"url": "https://www.elli.eco/de/datenschutz",
"exists": true,
"status": 200,
"word_count_approx": 18500,
"alt_paths_tried": {
"/de/datenschutzerklaerung": "404",
"/de/datenschutzerklaerung#cookies": "404"
},
"key_data": {
"controller": [
{"name": "Volkswagen Group Charging GmbH", "address": "Karl-Liebknecht-Str. 32, 10178 Berlin", "hrb": "HRB 208967 B"},
{"name": "Elli Mobility GmbH", "address": "Karl-Liebknecht-Str. 32, 10178 Berlin", "hrb": "HRB 274616 B"}
],
"dsb_named": true,
"dsb_contact": {
"address": "Mollstraße 1, 10178 Berlin",
"email": "privacy@elli.eco",
"note": "DPO disclosed inside the DSE, NOT in the Impressum (separate finding)."
},
"retention_claims": [
{"sentence": "Log files: nach 7 Tagen gelöscht", "days": 7, "subject": "log_files_v1"},
{"sentence": "Log files: IP addresses and access data retained for 30 days", "days": 30, "subject": "log_files_v2", "note": "Inconsistent with the 7-day claim — TWO different retention values appear in the policy."},
{"sentence": "Kontaktanfragen: 6 Monate nach der Beantwortung Ihrer Anfrage", "months": 6, "subject": "contact_inquiries"},
{"sentence": "Google Analytics: 14 Monate nach der Bereitstellung der Daten", "months": 14, "subject": "google_analytics_user_id"},
{"sentence": "Chatbot: Die Speicherdauer der Daten beträgt grundsätzlich 6 Monate", "months": 6, "subject": "chatbot_vertex_ai"},
{"sentence": "B2B-Registrierung (unvollständig): sechs Monate lang", "months": 6, "subject": "b2b_registration_incomplete"},
{"sentence": "Kundenzufriedenheitsumfragen: nach fünf Jahren gelöscht", "years": 5, "subject": "customer_satisfaction_surveys"},
{"sentence": "Pseudonymisierte Produktdaten: nach 5 Jahren", "years": 5, "subject": "pseudonymised_product_data"},
{"sentence": "Bewerbungen (abgelehnt): 6 Monate nach Bekanntgabe der Entscheidung", "months": 6, "subject": "job_applications_rejected"},
{"sentence": "Facebook IP-Adressen: nach 90 Tagen gelöscht", "days": 90, "subject": "facebook_ip"},
{"sentence": "Telefonaufzeichnungen (QS): 30 Tage", "days": 30, "subject": "call_recordings_qa"},
{"sentence": "Pseudonymisierte Aufzeichnungen: 3 Jahre oder gemäß gesetzlicher Aufbewahrungspflicht", "years": 3, "subject": "call_recordings_pseudonymised"},
{"sentence": "Newsletter: bis zum Widerruf der Einwilligung", "days": null, "subject": "newsletter"},
{"sentence": "Produktregistrierung: bis zum Widerruf der Einwilligung", "days": null, "subject": "product_registration"}
],
"vendors_mentioned": [
"Google Analytics",
"Google Tag Manager",
"Google Ads / DoubleClick Floodlight",
"YouTube Analytics",
"Google Vertex AI",
"Google Forms",
"Meta (Facebook Pixel / Ads Manager)",
"Instagram Insights",
"LinkedIn Campaign Manager",
"LinkedIn Insight Tag",
"Hotjar",
"Leadinfo",
"Salesforce",
"Webflow",
"Adyen",
"CRIF GmbH",
"Arvato Distribution GmbH",
"HERE Global B.V.",
"Stadia Maps",
"Iadvize"
],
"third_country_transfers": [
{"vendor": "Google Analytics", "country": "US", "mechanism": "Data Privacy Framework (DPF)"},
{"vendor": "Google Ads / Conversion Tracking", "country": "US", "mechanism": "DPF"},
{"vendor": "YouTube", "country": "US", "mechanism": "DPF"},
{"vendor": "Meta (Facebook/Instagram)", "country": "US", "mechanism": "DPF"},
{"vendor": "Salesforce", "country": "US", "mechanism": "Standard Contractual Clauses (SCCs)"},
{"vendor": "Webflow", "country": "US", "mechanism": "SCCs (implied — vendor seated in San Francisco)"}
],
"ai_chatbot": {
"present": true,
"provider": "Google Vertex AI",
"processor": "Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Irland",
"retention_claim": "6 Monate",
"literal_quote": "Im Rahmen der Nutzung des Chatbots werden lediglich IT- und pseudonymisierte Nutzungsdaten verarbeitet... Die Speicherdauer der Daten beträgt grundsätzlich 6 Monate.",
"legal_basis": "Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse)",
"consent_collected_pre_interaction": false,
"ai_act_disclosure_in_chat_ui": "unknown — not observable on /de/startseite because the chatbot widget was NOT rendered to the crawler. Live UI may differ."
},
"legal_basis_per_tool": {
"log_files": "Art. 6 Abs. 1 lit. f DSGVO",
"contact_form": "Art. 6 Abs. 1 lit. b + lit. f DSGVO",
"test_project_enrollment": "Art. 6 Abs. 1 lit. a DSGVO",
"webshop_orders": "Art. 6 Abs. 1 lit. b DSGVO",
"payment_adyen": "Art. 6 Abs. 1 lit. b DSGVO",
"chatbot_vertex_ai": "Art. 6 Abs. 1 lit. f DSGVO",
"newsletter": "Art. 6 Abs. 1 lit. a DSGVO",
"satisfaction_surveys": "Art. 6 Abs. 1 lit. f DSGVO",
"technical_cookies": "Art. 6 Abs. 1 lit. f DSGVO",
"non_technical_cookies": "Art. 6 Abs. 1 lit. a DSGVO",
"google_analytics": "Art. 6 Abs. 1 lit. a DSGVO",
"social_media_tracking": "Art. 6 Abs. 1 lit. f DSGVO",
"job_applications": "Art. 6 Abs. 1 lit. b DSGVO"
},
"cookie_categories_in_dse": [
"Technisch notwendige Cookies",
"Technisch nicht erforderliche Cookies (Komfort: Consent, Sprache, Warenkorb, LocalStorage)",
"Analyse-Cookies (Google Analytics)",
"Tracking / Remarketing (Google Ads, LinkedIn, Facebook, Instagram, YouTube)"
]
}
},
"agb": {
"url": "https://www.elli.eco/de/nutzungsbedingungen",
"exists": true,
"status": 200,
"word_count_approx": 520,
"alt_paths_tried": {
"/de/agb": "404",
"/de/agb/": "404",
"/de/agb-privatkunden": "404"
},
"key_data": {
"title": "Allgemeine Nutzungsbedingungen",
"stand": "Dezember 2018",
"contracting_party": "Volkswagen Group Charging GmbH",
"key_sections": ["Haftungsausschlüsse", "Drittinhalte / Verlinkung", "Urheber- und Markenrecht", "Untersagte Nutzung", "Streitbeilegung (Ablehnung Verbraucherschlichtung mit Ausnahme Energieliefervertrag)"],
"references_to_data_protection": false,
"references_to_ai_or_automated_decisions": false,
"withdrawal_rights_mentioned": false,
"staleness_finding": "Stand 'Dezember 2018' — 7,5 Jahre alt; mehrere DSGVO-Praxisrunden + AI Act + DSA seither erlassen."
}
},
"widerruf": {
"url_canonical_attempted": "https://www.elli.eco/de/widerrufsbelehrung",
"exists": false,
"status": 404,
"alt_paths_tried": {
"/de/widerruf": "404",
"/de/widerrufsbelehrung-privatkunden": "404"
},
"reason": "Keine eigenständige Widerrufsbelehrung als Public Page auf der DE-Domain auffindbar. Footer enthält KEINEN Widerruf-Link. Möglich, dass die Widerrufsbelehrung ausschließlich im Shop-Checkout-Flow / PDF erscheint — aus reiner Site-Crawler-Sicht jedoch NICHT verlinkt.",
"compliance_implication": "Bei B2C-Webshop (Ladetarife, Wallbox, Volkswagen Naturstrom) gem. § 312d BGB + Art. 246a EGBGB MUSS die Widerrufsbelehrung dauerhaft + leicht zugänglich sein. Fehlende Footer-Verlinkung = Verstoßindiz."
},
"cookie_richtlinie": {
"url_canonical_attempted": "https://www.elli.eco/de/cookie-richtlinie",
"exists": false,
"status": 404,
"alt_path_found": "https://www.elli.eco/de/cookies",
"reason": "Pfad /de/cookie-richtlinie 404. Stattdessen existiert /de/cookies (Status 200) — Footer-Label lautet 'Cookies', nicht 'Cookie-Richtlinie'."
},
"cookies_page": {
"url": "https://www.elli.eco/de/cookies",
"exists": true,
"status": 200,
"key_data": {
"categories": ["Session-Cookies", "Permanente / Protokoll-Cookies", "Drittanbieter-Cookies"],
"cookie_table_excerpt": [
{"name": "cookie_consent", "type": "Protokoll", "duration": "3 Monate"},
{"name": "_ga", "vendor": "Google Analytics", "duration": "24 Monate"},
{"name": "_gid", "vendor": "Google Analytics", "duration": "24 Stunden"},
{"name": "_gat", "vendor": "Google Analytics", "duration": "10 Minuten"},
{"name": "_hjid / _hjClosedSurveyInvites / _hjDonePolls", "vendor": "Hotjar", "duration": "365 Tage"},
{"name": "fr / fp / _fbp / _fbc", "vendor": "Facebook", "duration": "90 Tage bis 2 Jahre"},
{"name": "sessionStorage chatbot items", "vendor": "Iadvize?", "duration": "Sitzung"}
],
"vendors_on_cookies_page": ["Google Analytics", "Hotjar", "Facebook", "Iadvize"],
"vertex_ai_disclosed_here": false,
"consistency_with_dse": "INCONSISTENT — Cookies-Seite nennt Iadvize als Chat-Provider; DSE nennt Google Vertex AI als Chatbot-Provider. Doppelte / widersprüchliche Chat-Stack-Aussage."
}
}
},
"expected_findings": [
{
"id": "COOKIE-CONSENT-UX-001",
"severity": "HIGH",
"title": "Mobile-Footer-Reachability für Consent-Reopen unzureichend",
"art_dsgvo": "Art. 7 Abs. 3 DSGVO (Widerruf der Einwilligung so einfach wie Erteilung)",
"art_ttdsg": "§ 25 TTDSG / TDDDG",
"evidence": "Footer enthält 'Datenschutz-Einstellungen' als Label, aber /de/datenschutz-einstellungen 404 → Link ist JS-getriggertes CMP-Reopen. Auf mobiler Ansicht / bei JS-Blockern oder Crawl-Sicht nicht funktional. Zusätzlich öffnet 'Cookies'-Link eine statische Seite, KEIN Consent-Reopen.",
"expected_pass": false
},
{
"id": "COOKIE-CONSENT-UX-002",
"severity": "MEDIUM",
"title": "Consent-Banner-Button-Symmetrie zwar ok ('ablehnen' vs 'akzeptieren'), aber CMP-Provider nicht offen erkennbar",
"evidence": "Beide Buttons sichtbar gleichrangig in Markup. CMP-Fingerprint (Usercentrics/OneTrust/Cookiebot) nicht extrahierbar → Transparenz über eingesetzten CMP fehlt in DSE-Cookies-Sektion.",
"expected_pass": "PARTIAL"
},
{
"id": "TH-RETENTION-001",
"severity": "MEDIUM",
"title": "Widersprüchliche Speicherdauer für Log-Files in DSE",
"evidence": "Privacy Policy nennt einmal '7 Tage' und einmal '30 Tage' Logfile-Retention. Eine der beiden ist falsch oder veraltet.",
"expected_pass": false
},
{
"id": "TH-RETENTION-002",
"severity": "LOW",
"title": "Chatbot-Retention '6 Monate grundsätzlich' ohne Differenzierung nach Kategorie",
"evidence": "Vertex-AI-Chatbot speichert 'IT- und pseudonymisierte Nutzungsdaten' pauschal 6 Monate. Keine Abstufung nach Datenkategorie (Prompt/Output/Metadaten).",
"expected_pass": "PARTIAL"
},
{
"id": "VENDOR-CONSISTENCY-001",
"severity": "HIGH",
"title": "Chatbot-Provider widersprüchlich zwischen Cookies-Seite und DSE",
"evidence": "/de/cookies nennt Iadvize als Chat-Provider; /de/datenschutz nennt Google Vertex AI. Entweder doppelter Stack ohne Offenlegung beider Verarbeiter, oder veraltete Cookies-Seite. Verstoß gegen Transparenzgebot Art. 13 DSGVO.",
"expected_pass": false
},
{
"id": "AI-ACT-TRANSPARENCY-001",
"severity": "HIGH",
"title": "AI-Act Art. 50 Transparenzpflicht für Chatbot nicht erkennbar erfüllt",
"evidence": "Chatbot nutzt Google Vertex AI (LLM). Art. 50 Abs. 1 AI Act verlangt, dass Endnutzer informiert werden, dass sie mit einem KI-System interagieren. In DSE erwähnt, aber im Chat-UI Pre-Interaction-Hinweis NICHT verifizierbar (Widget nicht aktiv im Crawl).",
"expected_pass": "UNKNOWN-LIKELY-FAIL"
},
{
"id": "AI-ACT-RISK-001",
"severity": "MEDIUM",
"title": "Rechtsgrundlage Vertex-AI-Chatbot = berechtigtes Interesse statt Einwilligung",
"evidence": "Art. 6 Abs. 1 lit. f angegeben. Bei Vertex-AI-Verarbeitung mit potenzieller US-Transfer-Komponente + Profiling-Ähnlichkeit der LLM-Logging-Daten ist berechtigtes Interesse fragwürdig. Einwilligung (lit. a) wäre sauberer.",
"expected_pass": false
},
{
"id": "IMPRESSUM-001",
"severity": "MEDIUM",
"title": "USt-IdNr. fehlt bei VW Group Charging GmbH im Impressum",
"evidence": "Nur Elli Mobility GmbH listet 'DE814424009'. VW Group Charging GmbH ohne USt-IdNr. — § 5 Abs. 1 Nr. 6 TMG fordert Angabe, sofern vorhanden.",
"expected_pass": false
},
{
"id": "IMPRESSUM-002",
"severity": "LOW",
"title": "DPO nicht im Impressum genannt",
"evidence": "DPO Mollstr. 1 / privacy@elli.eco erscheint nur in DSE. Best Practice (nicht zwingend Pflicht): DPO-Verlinkung auch im Impressum.",
"expected_pass": "BEST-PRACTICE"
},
{
"id": "WIDERRUFSBELEHRUNG-001",
"severity": "HIGH",
"title": "Keine Widerrufsbelehrung im Footer / Public-Pfad auffindbar",
"evidence": "Pfade /de/widerruf, /de/widerrufsbelehrung, /de/widerrufsbelehrung-privatkunden alle 404. Footer enthält keinen Widerrufslink. Bei B2C-Shop-Komponenten (Wallbox, Naturstrom) verstößt das gegen § 312d BGB i.V.m. Art. 246a EGBGB (dauerhaft + leicht zugänglich).",
"expected_pass": false
},
{
"id": "TERMS-STALENESS-001",
"severity": "MEDIUM",
"title": "Allgemeine Nutzungsbedingungen Stand Dezember 2018",
"evidence": "Über 7 Jahre alt; weder DSA noch AI Act referenziert; KI-Chatbot existiert ohne Erwähnung in den Nutzungsbedingungen.",
"expected_pass": false
},
{
"id": "TRANSFER-001",
"severity": "MEDIUM",
"title": "DPF + SCCs gemischt — Mechanismus pro Vendor nicht durchgängig benannt",
"evidence": "Google/Meta auf DPF; Salesforce auf SCCs; Webflow als US-Sitz erwähnt aber Mechanismus implizit. Detailgrad pro Vendor uneinheitlich.",
"expected_pass": "PARTIAL"
},
{
"id": "URL-STRUCTURE-001",
"severity": "LOW",
"title": "Pfad-Inkonsistenz Footer-Label ↔ URL-Slug",
"evidence": "'Cookie-Richtlinie' (404) erwartet, real existiert /de/cookies. 'AGB' (404) erwartet, real existiert /de/nutzungsbedingungen. Externe Verlinkungen / Bookmarks brechen.",
"expected_pass": "PARTIAL"
}
],
"expected_vendors_in_dse": [
{"name": "Google Analytics", "country": "US", "ai_act_relevance": "none direct; profiling via _ga/_gid"},
{"name": "Google Tag Manager", "country": "US", "ai_act_relevance": "none"},
{"name": "Google Ads / DoubleClick Floodlight", "country": "US", "ai_act_relevance": "none"},
{"name": "Google Vertex AI", "country": "EU-frontend / US-fallback nicht ausgeschlossen", "ai_act_relevance": "HIGH — GPAI / LLM-System gem. AI Act Art. 50 + 51, Transparenzpflicht"},
{"name": "YouTube Analytics", "country": "US", "ai_act_relevance": "none"},
{"name": "Google Forms", "country": "US", "ai_act_relevance": "none"},
{"name": "Meta (Facebook Pixel)", "country": "US", "ai_act_relevance": "Profiling-relevant"},
{"name": "Instagram Insights", "country": "US", "ai_act_relevance": "none"},
{"name": "LinkedIn Insight Tag", "country": "US/IE", "ai_act_relevance": "none"},
{"name": "Hotjar", "country": "MT/EU", "ai_act_relevance": "Session-Replay → potenzielle Profiling-Komponente"},
{"name": "Leadinfo", "country": "DE/NL", "ai_act_relevance": "B2B-Identifikation, nicht AI"},
{"name": "Salesforce", "country": "US", "ai_act_relevance": "Einstein-Features wenn aktiv → AI-Bewertung nötig"},
{"name": "Webflow", "country": "US", "ai_act_relevance": "CMS, keine AI"},
{"name": "Adyen", "country": "NL", "ai_act_relevance": "Fraud-Scoring potenziell relevant"},
{"name": "CRIF GmbH", "country": "DE", "ai_act_relevance": "Bonitäts-Scoring → automatisierte Entscheidung Art. 22 DSGVO!"},
{"name": "Arvato Distribution GmbH", "country": "DE", "ai_act_relevance": "none"},
{"name": "HERE Global B.V.", "country": "NL", "ai_act_relevance": "none"},
{"name": "Stadia Maps", "country": "US", "ai_act_relevance": "none"},
{"name": "Iadvize", "country": "FR", "ai_act_relevance": "Live-Chat — wenn AI-Routing aktiv: AI-Act relevant; Konflikt mit Vertex AI Angabe"}
],
"expected_cookie_categories": [
"Technisch notwendige Cookies",
"Komfort-Cookies (Sprache, Warenkorb, Consent)",
"Statistik / Analyse (Google Analytics, Hotjar)",
"Marketing / Tracking (Google Ads, Meta, LinkedIn, YouTube, Instagram, Facebook Pixel)"
],
"expected_critical_issues": [
"Mobile Reachability: Footer hat KEINEN harten 'Cookie-Einstellungen öffnen' Pfad — 'Datenschutz-Einstellungen' ist nur JS-Trigger ohne URL-Fallback; 'Cookies' verlinkt nur statische Seite.",
"AI Assistant: DSE nennt Google Vertex AI mit 6 Monaten Retention + Rechtsgrundlage Art. 6 Abs. 1 lit. f — KEINE Einwilligung pre-interaction, AI-Act Art. 50 Disclosure im Chat-UI nicht verifiziert.",
"Vendor-Stack-Widerspruch: Cookies-Seite sagt Iadvize, DSE sagt Vertex AI — entweder doppelter Stack ohne saubere Trennung oder veraltete Cookies-Seite.",
"Widerrufsbelehrung als eigenständige Seite nicht im Footer — bei B2C-Komponenten regelwidrig.",
"Nutzungsbedingungen Stand Dezember 2018 — fast 8 Jahre alt; weder AI Act noch DSA reflektiert.",
"Logfile-Retention widersprüchlich (7 vs 30 Tage) in derselben DSE.",
"VW Group Charging GmbH ohne USt-IdNr. im Impressum (TMG § 5 Abs. 1 Nr. 6).",
"DPO nur in DSE, nicht im Impressum (best practice gap).",
"Footer-Label 'Cookie-Richtlinie' / 'AGB' erwartet → reale Slugs sind /de/cookies + /de/nutzungsbedingungen; externe Bookmarks brechen, SEO-Verlust für Standardsuchen."
],
"ai_chatbot_analysis": {
"name_in_ui": "AI Assistant (vermutet; Widget im Crawl nicht aktiv gerendert)",
"provider_disclosed_in_dse": "Google Vertex AI (Google Ireland Limited als Auftragsverarbeiter)",
"alt_provider_disclosed_in_cookies_page": "Iadvize (widersprüchlich)",
"retention_claim_in_dse": "6 Monate (grundsätzlich)",
"legal_basis_in_dse": "Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse) — nicht Einwilligung",
"user_warning_before_input": "Nicht im Crawl beobachtbar — Pre-Interaction-Disclosure-Status: UNKNOWN. Im Web-Frontend bei Live-Test zu prüfen.",
"ai_act_article_50_compliance": "WAHRSCHEINLICH UNZUREICHEND — Hinweis nur in DSE statt am Interaction-Point.",
"transparency_score": "5/10 — Provider + Retention transparent, aber Rechtsgrundlage schwach, Pre-Chat-Disclosure fehlt, Vendor-Widerspruch zur Cookies-Seite."
},
"footer_reachability_analysis": {
"has_consent_reopen_link": false,
"has_consent_reopen_label": true,
"label_text": "Datenschutz-Einstellungen",
"label_behaviour": "JS-Trigger ohne eigene URL — /de/datenschutz-einstellungen 404",
"footer_links_relevant": [
"Datenschutz (→ /de/datenschutz, statisch)",
"Datenschutz-Einstellungen (→ JS-CMP-Reopen, kein URL-Fallback)",
"Cookies (→ /de/cookies, statisch, KEIN Reopen)",
"Impressum (→ /de/impressum)",
"Nutzungsbedingungen (→ /de/nutzungsbedingungen)"
],
"footer_widerruf_link_present": false,
"browser_deflection_text": "Keine Hinweistexte beobachtet — Banner-Buttons rein 'ablehnen' / 'akzeptieren' ohne Hinweis, dass Widerruf später möglich ist.",
"art_7_abs_3_compliance": "FAIL — Widerruf nicht 'so einfach wie Erteilung'; abhängig von JavaScript + Auffinden eines Footer-Labels in deutschsprachigem Fachjargon. Mobile Reachability schwach.",
"ttdsg_section_25_compliance": "PARTIAL FAIL — Consent-Erteilung über Banner, Widerruf-Mechanismus fragil."
},
"summary_for_breakpilot_audit_comparison": {
"total_pages_crawled_200": 5,
"total_pages_404": 4,
"key_url_corrections_needed_by_audit_tool": {
"datenschutzerklaerung_should_resolve_to": "/de/datenschutz",
"agb_should_resolve_to": "/de/nutzungsbedingungen",
"cookie-richtlinie_should_resolve_to": "/de/cookies",
"widerrufsbelehrung": "not found anywhere on public footer — flag as finding"
},
"high_severity_findings_count": 4,
"medium_severity_findings_count": 6,
"low_severity_findings_count": 3,
"must_detect_to_pass_benchmark": [
"COOKIE-CONSENT-UX-001",
"VENDOR-CONSISTENCY-001",
"AI-ACT-TRANSPARENCY-001",
"WIDERRUFSBELEHRUNG-001",
"TH-RETENTION-001"
]
}
}