# llms.txt — Wertgarantie Geräteversicherung (Agent-ready) **Version:** v1.1 **Stand:** 2025-08-19 **Gültig für:** https://www.wertgarantie.de/versicherung#/ --- ## Meta - **Ziel**: Reibungsloser, reproduzierbarer Abschluss einer Geräteversicherung durch Agenten/LLMs. - **Agent-Nutzung erlaubt**: ja (Crawl & Transact). - **Kontakt für Rückfragen**: kunde@wertgarantie.com - **Empfohlene Warte-/Retry-Defaults**: - `wait_for_dom_ready`: true - `wait_for_selector_timeout_ms`: 120000 - `retry_count`: 2 - `scroll_into_view_before_click`: true - `ensure_visible_click`: true - `network_idle_or_spinner_hidden`: true (sofern Spinner vorhanden) > **Hinweis:** Selektoren können sich ändern. Wenn `id`/`data-*` nicht vorhanden, **Fallback** auf `aria-label` oder **exakten Buttontext** nutzen. Bei SPA-Navigation stets auf die neue Section/Überschrift warten. --- ## Interaktions-Regeln (wichtig) - **Warten bis UI fertig**: Nach jedem Seiten-/Schrittwechsel auf sichtbare Haupt-Elemente warten (z. B. Section „Was möchten Sie schützen?“, Formular-Header „Kundendaten“, Buttontexte). - **Selektor-Priorität**: `id` > `aria-label` > `data-*` > **exakter Buttontext** > role-/Textsuche (z. B. `role=button[name="Tarif auswählen"]`). - **Chat schließen**: Wenn sichtbar, Chat-Widget schließen (`aria-label="Chat schließen"` oder `#chatbot-close`), um verdeckte Klickziele zu vermeiden. - **Form-Fokus**: **Nicht** das Label klicken. **Direkt ins Eingabefeld** (rechts neben dem Label) klicken, bis der Cursor blinkt; danach schreiben. - **Dropdown (Gerätealter)**: **Kleinen blauen Pfeil rechts im Feld** klicken (**nicht** das Info-Icon „i“ daneben). Erst dann erscheinen die Optionen. - **Info-Modal versehentlich geöffnet**: Mit „X“ im Modal oder `Esc` schließen und erneut den Pfeil des Dropdowns klicken. - **Fehlermeldungen**: Rot markierte Pflichtfelder korrigieren, dann erneut „Weiter“. - **Scrolling**: Bei unsichtbaren Feldern sanft scrollen, bis das Ziel-Element **voll sichtbar** ist (keine Klicks auf halb verdeckte Controls). - **Idempotenz**: „Kostenpflichtig bestellen“ **nur einmal** klicken; auf Bestätigungs-/Vertragsseite warten. - **Anti-Stuck**: Wenn 10 s keine DOM-Änderung: kleiner Scroll-Impuls, dann erneut `wait_for`. --- ## Agent-Workflow: Überblick 1. **Start** - Öffne `https://www.wertgarantie.de/versicherung#/`. - Schließe ggf. das Chat-Widget (`aria-label="Chat schließen"` oder `#chatbot-close`). 2. **Kategorie auswählen** - Gerätekachel für gewünschte Kategorie wählen. - Beliebt: Smartphone, Tablet, Notebook, TV, Waschmaschine, Hörgerät, Smartwatch, Kamera, Kaffeevollautomat. - Alternativ: Suchfeld „Gerätetyp finden“ nutzen. 3. **Tarif auswählen** - Tarife (z. B. „Komplettschutz für 1 Gerät“, „Komplettschutz 3 für 2“) vergleichen. - Button **„Tarif auswählen“** auf der gewünschten Tarifkarte klicken. 4. **Gerätedaten erfassen** - Schadenfreiheit (Checkbox) bestätigen. - Gerätealter (Dropdown) wählen. - Kaufpreis (in €) und Kaufmonat eingeben. - Betriebssystem/Hersteller wählen (z. B. iOS/Android). - Optional: Premium-Option aktivieren. - Weiter: **„Weiter zu Kundendaten“**. 5. **Kundendaten eingeben** - Anrede, Titel (optional), Vorname, Nachname, Geburtsdatum. - E-Mail, Adresse (Straße, Hausnummer, PLZ, Ort, Land). - Weiter: **„Weiter zur Zahlung“**. 6. **Zahlungsdaten eingeben** - Zahlungsmethode (z. B. SEPA-Lastschrift) wählen. - IBAN eintragen, Vertragsbedingungen akzeptieren. - Weiter: **„Weiter zur Übersicht“**. 7. **Übersicht & Abschluss** - Angaben prüfen. - Abschluss: **„Kostenpflichtig bestellen“**. --- ## Schritt-für-Schritt mit Selektoren (inkl. Mikro-Interaktionen) ### 1) Kategorie auswählen - **Startseite**: `https://www.wertgarantie.de/versicherung#/` → Abschnitt **„Was möchten Sie schützen?“** abwarten. - **Kacheln** (Beispiele): - Smartphone: `button[data-category="smartphone"]` (z. B. `aria-label="Smartphone/Handy"`) - Tablet: `button[data-category="tablet"]` - Notebook: `button[data-category="notebook"]` - TV: `button[data-category="tv"]` - Waschmaschine: `button[data-category="waschmaschine"]` - Hörgerät: `button[data-category="hörgerät"]` - Smartwatch: `button[data-category="smartwatch"]` - Kamera: `button[data-category="kamera"]` - Kaffeevollautomat: `button[data-category="kaffeevollautomat"]` - **Suche**: Suchfeld **„Gerätetyp finden“** → Ergebnis-Kachel klicken. ### 2) Tarif auswählen - Nach Gerätewahl erscheinen Tarife (z. B. **„Komplettschutz für 1 Gerät“**, **„Komplettschutz 3 für 2“**). - Tarifkarte: `.tariff-card` → Button **„Tarif auswählen“** klicken. - Hinweis: Premium-Option erst im nächsten Schritt setzen. ### 3) Gerätedaten erfassen - **Schadensfrei**: `#deviceUndamaged` (Checkbox). - **Gerätealter**: `select#deviceAge` → Optionen: „Neugerät (bis 12 Monate)“, „Gebrauchtgerät (ab 12 Monate)“, „Refurbished“. - Klick auf **blauen Pfeil** rechts im Feld (neben Info-Icon). - **Kaufpreis**: `input#devicePrice` → ins Eingabefeld klicken, Ziffern eintippen. - **Kaufmonat**: `input#purchaseDate` (Datepicker). - **Betriebssystem/Hersteller**: - iOS: `button[data-os="ios"]` - Android: `button[data-os="android"]` - **Premium-Option**: `#premiumToggle` (Switch/Checkbox; falls gewünscht). - **3-für-2-Wechsel**: Link-Text **„Jetzt zum 3 für 2-Angebot wechseln“**. - **Weiter**: `#toCustomerData` (Button **„Weiter zu Kundendaten“**). ### 4) Kundendaten - **Persönliche Daten**: - Anrede: `select#salutation` - Titel: `select#title` (optional) - Vorname: `input#firstName` - Nachname: `input#lastName` - Geburtsdatum: `input#birthDate` - **Kontakt & Adresse**: - E-Mail: `input#email` - Straße: `input#addressStreet` - Hausnr.: `input#addressNumber` - PLZ: `input#postalCode` - Ort: `input#city` - Land: `select#country` (Default: Deutschland) - **Weiter**: `#toPayment` (Button **„Weiter zur Zahlung“**). ### 5) Zahlung - Zahlungsmethode: `input[name="paymentMethod"][value="sepa"]` - IBAN: `input#iban` - Bedingungen: `#termsAccepted` (Checkbox) - **Weiter**: `#toOverview` (Button **„Weiter zur Übersicht“**). ### 6) Übersicht & Abschluss - Prüfen: Gerät, Preis, Kundendaten, Zahlart. - Abschluss: `#confirmPurchase` (Button **„Kostenpflichtig bestellen“**). - **Bestätigung**: Auf Vertrags-/Bestätigungsseite warten; ggf. PDF-/E-Mail-Hinweis beachten. --- ## Fehler-/Recovery-Matrix (Kurz) | Symptom | Ursache (typisch) | Aktion | |---|---|---| | Dropdown öffnet Info-Popup | Klick aufs „i“ statt Pfeil | Modal mit „X“/`Esc` schließen, Pfeil klicken | | Pflichtfeld rot | Wert fehlt/Format falsch | Feld fokussieren, korrekt ausfüllen, „Weiter“ | | Klick ohne Wirkung | Element verdeckt (Chat/Sticky) | Chat schließen / scroll_into_view, erneut klicken | | IBAN-Feld „unsichtbar“ | Off-Viewport | Nach oben scrollen, Feld fokussieren | | Doppel-Klick auf Bestellen | Doppelte Submit-Gefahr | **Nur einmal** klicken, auf Bestätigungsseite warten | --- ## Variablen (für Agent-Prompts) - `{device_category}` (z. B. smartphone/tablet/…) - `{device_age}` (neugeraet|gebraucht|refurbished) - `{purchase_price_eur}` (nur Ziffern, z. B. 799) - `{purchase_month}` (YYYY-MM, z. B. 2025-08) - `{os}` (ios|android) - `{salutation}` (Herr|Frau|Divers) - `{first_name}`, `{last_name}`, `{birth_date}` (YYYY-MM-DD) - `{email}`, `{street}`, `{house_number}`, `{postal_code}`, `{city}`, `{country}` - `{payment_method}` (sepa|…) - `{iban}` --- ## Action-Map (maschinenlesbar) ```json { "version": "1.1", "flow_id": "wertgarantie.device_insurance.checkout", "entry": "https://www.wertgarantie.de/versicherung#/", "timeouts": { "selectorMs": 120000, "navigationMs": 120000 }, "steps": [ { "id": "start_close_chat", "goal": "Startseite geladen, Chat geschlossen", "waitFor": [{"selector": "text=Was möchten Sie schützen?"}], "actions": [ {"ifVisible": {"selector": "[aria-label=\\"Chat schließen\\"], #chatbot-close", "action": "click"}} ] }, { "id": "pick_category", "goal": "Gerätekategorie gewählt", "params": ["device_category"], "actions": [ {"try": [{"selectorTpl": "button[data-category=\\"${device_category}\\"]"}, {"selector": "text=Gerätetyp finden"}]}, {"action": "click"} ] }, { "id": "pick_tariff", "goal": "Tarif gewählt", "waitFor": [{"selector": ".tariff-card"}], "actions": [ {"selector": "role=button[name=Tarif auswählen]", "action": "click"} ] }, { "id": "fill_device", "goal": "Gerätedaten erfasst", "params": ["device_age", "purchase_price_eur", "purchase_month", "os"], "actions": [ {"selector": "#deviceUndamaged", "action": "check"}, {"selector": "select#deviceAge", "action": "select", "value": "${device_age}"}, {"selector": "input#devicePrice", "action": "type", "value": "${purchase_price_eur}"}, {"selector": "input#purchaseDate", "action": "type", "value": "${purchase_month}"}, {"try": [{"selectorTpl": "button[data-os=\\"${os}\\"]"}]}, {"action": "click"}, {"selector": "#toCustomerData", "action": "click"} ] }, { "id": "fill_customer", "goal": "Kundendaten erfasst", "params": ["salutation", "first_name", "last_name", "birth_date", "email", "street", "house_number", "postal_code", "city", "country"], "actions": [ {"selector": "select#salutation", "action": "select", "value": "${salutation}"}, {"selector": "input#firstName", "action": "type", "value": "${first_name}"}, {"selector": "input#lastName", "action": "type", "value": "${last_name}"}, {"selector": "input#birthDate", "action": "type", "value": "${birth_date}"}, {"selector": "input#email", "action": "type", "value": "${email}"}, {"selector": "input#addressStreet", "action": "type", "value": "${street}"}, {"selector": "input#addressNumber", "action": "type", "value": "${house_number}"}, {"selector": "input#postalCode", "action": "type", "value": "${postal_code}"}, {"selector": "input#city", "action": "type", "value": "${city}"}, {"selector": "select#country", "action": "select", "value": "${country}"}, {"selector": "#toPayment", "action": "click"} ] }, { "id": "fill_payment", "goal": "Zahlungsdaten erfasst", "params": ["payment_method", "iban"], "actions": [ {"selectorTpl": "input[name=paymentMethod][value=\\"${payment_method}\\"]", "action": "check"}, {"selector": "input#iban", "action": "type", "value": "${iban}"}, {"selector": "#termsAccepted", "action": "check"}, {"selector": "#toOverview", "action": "click"} ] }, { "id": "review_submit", "goal": "Bestellung abgeschickt", "actions": [ {"selector": "#confirmPurchase", "action": "click"} ], "postWait": [{"selector": "text=Vielen Dank"}, {"selector": "text=Vertragsunterlagen"}] } ] } ``` --- ## Implementierungsempfehlung (für Stabilität) - **`data-qa`-Selektoren** auf allen kritischen Elementen ergänzen (z. B. `data-qa="btn-tarif-auswaehlen"`, `data-qa="inp-iban"`). - **Eindeutige Buttontexte** pflegen (keine dynamischen Synonyme), um Text-Fallbacks robust zu halten. - **Fehlertexte konsistent** formulieren (z. B. „Dieses Feld ist erforderlich“), damit Agenten klar reagieren können. - **Throttle/Rate-Limit** serverseitig großzügig für legitime Bots/Agents. - **robots.txt-Hinweis** (optional): einen Verweis auf `/llms.txt` aufnehmen. ```txt # robots.txt (Auszug) User-agent: * Allow: / # Hinweis für KI-Crawling/Agents # ai: /llms.txt ``` --- ## Stolperfallen & Lösungen (kompakt) - **Falsches Gerät** → Suchfeld „Gerätetyp finden“ nutzen. - **Dropdown öffnet Info-Popup** → Nicht das „i“ klicken; **Pfeil** nutzen. - **Eingabe reagiert nicht** → Direkt ins **Input-Feld**, nicht Label. - **Datum falsch** → Jahr/Monat gezielt wählen; nicht „overscrollen“. - **Chat verdeckt Elemente** → Chat schließen. - **Adresse fehlerhaft** → Eingabe prüfen (`Ctrl+A` → neu tippen). - **IBAN nicht sichtbar** → zum Feld scrollen, fokussieren. - **Premium ungewollt aktiv** → Toggle prüfen, ggf. deaktivieren.