---
title: "Datenpipeline-Checkliste: Berichte belastbar abnehmen"
canonical: https://wavect.io/de/software-development-guide/data-pipeline-acceptance-checklist/
language: de
description: "Nehmen Sie den Weg vom Quelldatensatz zur Geschäftsentscheidung ab, nicht nur einen Dashboard-Screenshot. Ein Beispiel mit Bestellungen und Rückerstattung, …"
image: "https://wavect.io/img/general/bak/open_graph_preview.jpg"
---

Leitfaden zur Datenabnahme

# Wann ist eine Datenpipeline bereit für verlässliche Berichte?

Nehmen Sie den Weg vom Quelldatensatz zur Geschäftsentscheidung ab, nicht nur einen Dashboard-Screenshot. Ein Beispiel mit Bestellungen und Rückerstattung, Aktualitäts- und Wiederholungstests sowie Rechteprüfungen machen die Abnahme überprüfbar.

Veröffentlicht: 2026-11-03 von Wavect

Kurze Antwort

Eine Datenpipeline ist bereit, wenn Quelldaten zu vereinbarten Kennzahlen passen, verspätete und wiederholte Daten vorhersehbar verarbeitet werden, veraltete Ergebnisse sichtbar sind, Zugriffsrechte greifen und ein Verantwortlicher fehlgeschlagene Läufe wiederherstellen kann. Gleiche Zeilenzahlen allein belegen keine richtige Kennzahl.

Geeignet für

- Teams vor dem ersten Warehouse oder dem Ersatz manueller Berichte
- Fachverantwortliche, die eine analytische Lieferung abnehmen

Außerhalb dieses Leitfadens

- Operative Datensynchronisierung zwischen Produktivsystemen
- Prüfvermerke, Rechtsberatung zur Aufbewahrung oder ML-Modellevaluation

// 01

## Die Optionen im Vergleich

Grenzwerte folgen der Geschäftsentscheidung. Die Beispiele schreiben kein allgemeines Servicelevel vor.

| Prüfung | Schwache Abnahme | Nützlicher Nachweis |
| --- | --- | --- |
| Vollständigkeit | Der Lauf war erfolgreich | Erwartete Quelldatei und Datensatzschlüssel sind erfasst |
| Richtigkeit | Das Diagramm wirkt plausibel | Die definierte Kennzahl stimmt mit Quellbelegen überein |
| Aktualität | Das Dashboard lädt | Quellzeitstand und Aktualitätsstatus sind sichtbar |
| Wiederholung | Ein Retry-Knopf existiert | Identische Eingaben verändern die abgenommene Summe nicht |
| Zugriff | Der Administrator sieht den Bericht | Erlaubte und verweigerte Rollen samt Export sind getestet |
| Wiederherstellung | Ein Backup-Job existiert | Eine fehlgeschlagene Partition wird nach Anleitung wiederhergestellt |

// 02

## Wo Wavect hier steht

### Mit Entscheidung und führender Quelle beginnen

Eine Pipeline überträgt und transformiert Daten in eine analytische Kopie. Ein Warehouse speichert modellierte Daten, ein BI-Bericht stellt sie dar. Ein richtig gezeichnetes Diagramm korrigiert keine fehlende Rückerstattung aus dem Quellsystem. Benennen Sie vor der Werkzeugwahl die Entscheidung, den Kennzahlenverantwortlichen und das führende System je Eingabe. Operative Synchronisierung gehört zu [API-Integration](/de/services/api-integration/); analytische Modelle und Berichte zu [Data Engineering](/de/services/data-engineering/).

Halten Sie Granularität, Einschlussregeln, Ereigniszeit, Berichtszeitzone, Währung, Rückerstattungen und Periodenabschluss fest. Täglich netto vereinnahmte Zahlungen können von gebuchtem Auftragswert, bilanziertem Umsatz und Zahlungsdienstleister-Abrechnung abweichen. Verwenden Sie dafür nicht dieselbe Bezeichnung. Bestimmen Sie, wer Differenzen klärt, statt eine Buchhaltungsregel vom Entwickler erraten zu lassen.

### Ein Abnahmebeispiel mit Rückerstattung

Eine synthetische Testdatei enthält drei bezahlte Aufträge: A mit EUR 120, B mit EUR 80 und C mit EUR 50. B wird vollständig mit EUR 80 erstattet. Nach der ausdrücklichen Definition „vereinnahmte Zahlungen abzüglich abgeschlossener Rückerstattungen, eine Währung, ohne Gebühren- und Steuerbehandlung“ beträgt der erwartete Nettobetrag EUR 170: 120 + 80 + 50 - 80. Das ist ein Testfall, keine Kundenzahl oder Bilanzierungsregel.

Aufträge und Erstattungen erhalten stabile Quellkennungen. Liefern Sie A doppelt und wiederholen Sie die ganze Charge: Das Ergebnis muss EUR 170 bleiben, nicht EUR 290. Trifft die Erstattung später ein, kann zunächst EUR 250 als ausdrücklich vorläufiger Wert erscheinen, danach EUR 170 innerhalb des vereinbarten Korrekturfensters. Die Fachseite muss entscheiden, ob vergangene Tage korrigiert werden oder die Anpassung in einer späteren Periode erscheint. Beides beantwortet unterschiedliche Fragen.

Lassen Sie anschließend C weg, ändern Sie ein Pflichtfeld und liefern Sie eine unbekannte Währung. Halten Sie fest, ob der Bericht gesperrt, einzelne Zeilen isoliert oder Ergebnisse mit Einschränkung veröffentlicht werden. Eine allgemeingültige Regel gibt es nicht, stille Änderungen sind jedoch ein Abnahmefehler. Dokumentieren Sie Eingabekennungen, Lauf-ID, Transformationsversion, Soll, Ist und abnehmende Rolle. [Testdaten und Abnahmefälle herunterladen](/downloads/data-pipeline-acceptance-example.json) und anpassen.

### Die tatsächlichen Fehler prüfen

Prüfen Sie Eindeutigkeit, Pflichtwerte, Beziehungen und zulässige Status möglichst nahe am Eingang. Vergleichen Sie Summen und Anzahlen je Quelle, Tag und Geschäftseinheit. In einer Gesamtsumme können sich Fehler ausgleichen. [dbt dokumentiert Datentests](https://docs.getdbt.com/reference/resource-properties/data-tests) als ausführbare Bedingungen; die [Dokumentation zu Quellen](https://docs.getdbt.com/docs/build/sources) zeigt den vorgelagerten Kontext. Das sind technische Beispiele, keine Pflicht zur Nutzung von dbt.

Ein aktueller Ladezeitpunkt beweist keine aktuellen Geschäftsdaten. Zeigen Sie Laufzeitpunkt und jüngstes enthaltenes Quellereignis getrennt an. Ein Lieferant kann heute erfolgreich die gestrige Datei liefern. Vereinbaren Sie Aktualität nach Entscheidungsbedarf: Ein Managementbericht für den Folgetag braucht andere Fristen als untertägige Nachbestellung. Zeitzone, Uhr und Alarmempfänger gehören dazu.

### Fehler und Wiederherstellung proben

Unterbrechen Sie einen Lauf zwischen Zwischenspeicherung und Veröffentlichung. Der Bericht muss seiner vereinbarten Regel folgen, etwa den letzten abgenommenen Stand mit sichtbarer Veraltungswarnung behalten. Wiederholen Sie exakt denselben begrenzten Datenbestand und prüfen Sie die Beiträge auf Duplikate. [Apache Airflow erläutert wiederholbare Aufgaben](https://airflow.apache.org/docs/apache-airflow/stable/best-practices.html) und stabile Eingabepartitionen. Das Prinzip gilt auch für einen einfachen zeitgesteuerten Prozess.

Wiederherstellung und fachliche Korrektur sind verschieden: Das gestrige Warehouse-Backup enthält keine heute eingetroffene Rückerstattung. Klären Sie Rohdatenaufbewahrung, Wiederholungsgrenzen, Quellverfügbarkeit und Aktualisierung nachgelagerter Berichte. Testen Sie mit repräsentativen Daten. Ein Screenshot der Backup-Konfiguration ist kein Wiederherstellungsnachweis. Zusagen zu Wiederherstellungszeiten brauchen einen gemessenen Probelauf.

### Die tatsächlichen Zugriffsrollen testen

Nutzen Sie reale Rollen, auch eine Person, die eine andere Geschäftseinheit nicht sehen darf. Prüfen Sie Filter, Downloads, Caches und geplante E-Mails neben der Berichtsseite. Ein Oberflächenfilter ist keine Berechtigungsgrenze. [PostgreSQL beschreibt zeilenbasierte Sicherheitsregeln](https://www.postgresql.org/docs/current/ddl-rowsecurity.html), einschließlich der besonderen Behandlung von Tabellenbesitzern. Testen Sie die Identität des Berichtswerkzeugs, nicht nur einen Administrator.

Beschränken Sie personenbezogene Felder auf den vereinbarten Berichtszweck. Datenverantwortliche und zuständige Datenschutz- oder Rechtsfachleute entscheiden über Aufbewahrung und Löschung. Produktive Kundendaten gehören nicht in ein unbeschränktes Demokonto. Redigierte oder synthetische Dateien reichen für viele Abnahmen.

### Eine Entscheidungsakte übergeben

Das Abnahmepaket enthält Kennzahlendefinition, Quellinventar, Herkunft, versionierte Transformationen, positive und negative Testfälle, Rechtebelege, Aktualitätsstatus, Wiederherstellungsanleitung und Betriebsverantwortung. Ausnahmen brauchen Auswirkungen, Zuständigkeit und Prüftermin. Eine nicht verfügbare Quelle darf nicht stillschweigend als vollständige Kennzahl gelten.

Die [Checkliste zur Softwareübergabe](/de/software-development-guide/software-handover-checklist/) klärt Konten und Repository. Ziel ist, dass die Fachseite eine Zahl erklären und der Betrieb ihren Entstehungsweg sicher wiederherstellen kann. Größere Warehouses, Streaming-Infrastruktur oder eine KI-Oberfläche sind eigene Entscheidungen, sobald der Bedarf sie rechtfertigt.

// 03

## Wo das meistens schiefgeht

- Plausible Diagramme ohne Quellenabgleich abnehmen
- Erfolgreiche Verarbeitung mit frischen Quelldaten verwechseln
- Bei Wiederholungen Zahlungen doppelt zählen
- Berechtigungen nur mit einem Administratorkonto prüfen

// 04

## Die Checkliste

Vereinbaren Sie die Nachweise vor der Implementierung.

1. Entscheidung, Kennzahl und verantwortliche Person benennen
2. Granularität, Zeitzone, Währung und Korrekturregeln definieren
3. Führende Quellen, erwartete Schlüssel und Quellzeitstände auflisten
4. Testdateien mit Duplikaten, verspäteten und ungültigen Datensätzen freigeben
5. Veröffentlichung, Isolation und Aktualitätsregeln ausdrücklich festlegen
6. Wiederholung und Wiederherstellung nach Teilausführung demonstrieren
7. Erlaubte und verweigerte Rollen samt Export und Cache prüfen
8. Code, Definitionen, Überwachung und Wiederherstellungsverantwortung übergeben

// 05

## Wie das in unserer Arbeit aussieht

Die Bond Analytics Platform dokumentiert Excel-Import, zeilenweise Validierung und wiederholbare Snapshot-Analysen. Der Fall belegt diese technischen Fähigkeiten, nicht die synthetischen Bestell- und Erstattungsdaten oder den hier vorgeschlagenen Abnahmeprozess.

### [Anleihen-Analytics-Plattform](/de/case-studies/bond-analytics/)
- **Status:** Live
- **Ergebnis:** 2 Monate - Von 0 zu Enterprise
- **Zusammenfassung:** Institutionelle Anleihen-Analyseplattform, Null zu enterprise-tauglich in 2 Monaten; mehrere Runden eingeworben.
- **Stack:** NestJS, React, Typescript

Das sind ausgewählte Projekte, nicht unser gesamtes Portfolio. Seit 2018 haben wir 100+ Produkte ausgeliefert.

// 06

## Passende Leistungen & Lektüre

- [LEISTUNG Data Engineering](/de/services/data-engineering/)
- [LEITFADEN Checkliste zur Softwareübergabe](/de/software-development-guide/software-handover-checklist/)
- [LEITFADEN QA-Checkliste vor dem Start](/de/software-development-guide/software-qa-checklist-before-launch/)
- [FALLSTUDIE Bond Analytics Platform](/de/case-studies/bond-analytics/)

// 07

## Häufige Fragen

### Was unterscheidet Datenqualität von Pipeline-Abnahme?

Datenqualität prüft beispielsweise Pflichtwerte, Eindeutigkeit und gültige Beziehungen. Eine Pipeline-Abnahme umfasst zusätzlich Kennzahlendefinition, Vollständigkeit, Aktualität, Rechte, Wiederholungen, Wiederherstellung und Betrieb. Auch eine fehlerfreie Tabelle kann die falsche Frage beantworten.

### Braucht ein nützliches Dashboard Echtzeitdaten?

Nur wenn die Geschäftsentscheidung es erfordert und die Quellen es ermöglichen. Vereinbaren Sie zuerst Aktualitätsziel, Quellzeitstand und Verhalten bei veralteten Ergebnissen. Häufigere Läufe beschleunigen keine verspätete Quelle und korrigieren keine unklare Definition.

### Wie prüft man doppelte Zählung bei Wiederholungen?

Verarbeiten Sie dieselbe begrenzte Testdatei mit stabilen Kennungen zweimal und vergleichen Sie Einzelbeiträge und Summen. Im Beispiel darf ein wiederholter Auftrag den Nettowert EUR 170 nicht verändern. Prüfen Sie außerdem verspätete Erstattungen und Wiederherstellung nach Teilausführung.

### Wer nimmt eine Berichtspipeline ab?

Die Fachseite verantwortet Bedeutung und Aktualität. Engineering weist Transformationen und Fehlerverhalten nach. Die berechtigte Stelle bestätigt Zugriffe, der Betrieb Wiederherstellung und Betreuung. Wenige Personen können mehrere Rollen übernehmen, die Entscheidungen bleiben dennoch getrennt festzuhalten.

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/de/software-development-guide/data-pipeline-acceptance-checklist/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-11-04",
      "inLanguage": "de",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-11-04",
      "url": "https://wavect.io/de/software-development-guide/data-pipeline-acceptance-checklist/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/de/software-development-guide/data-pipeline-acceptance-checklist/#article",
      "@type": "Article",
      "about": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "author": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "dateModified": "2026-11-04",
      "datePublished": "2026-11-03",
      "description": "Nehmen Sie den Weg vom Quelldatensatz zur Geschäftsentscheidung ab, nicht nur einen Dashboard-Screenshot. Ein Beispiel mit Bestellungen und Rückerstattung, Aktualitäts- und Wiederholungstests sowie Rechteprüfungen machen die Abnahme überprüfbar.",
      "headline": "Wann ist eine Datenpipeline bereit für verlässliche Berichte?",
      "inLanguage": "de",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "mainEntityOfPage": "https://wavect.io/de/software-development-guide/data-pipeline-acceptance-checklist/#webpage",
      "mentions": [
        {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        {
          "@type": "Service",
          "name": "Data Engineering",
          "url": "https://wavect.io/de/services/data-engineering/"
        }
      ],
      "name": "Wann ist eine Datenpipeline bereit für verlässliche Berichte?",
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "speakable": {
        "@type": "SpeakableSpecification",
        "cssSelector": [
          ".cmp-hero__headline",
          ".cmp-hero__lead"
        ]
      },
      "url": "https://wavect.io/de/software-development-guide/data-pipeline-acceptance-checklist/"
    },
    {
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "item": "https://wavect.io/de/",
          "name": "Startseite",
          "position": 1
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/de/software-development-guide/",
          "name": "Leitfaden zur Softwareentwicklung",
          "position": 2
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/de/software-development-guide/data-pipeline-acceptance-checklist/",
          "name": "Wann ist eine Datenpipeline bereit für verlässliche Berichte?",
          "position": 3
        }
      ]
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Datenqualität prüft beispielsweise Pflichtwerte, Eindeutigkeit und gültige Beziehungen. Eine Pipeline-Abnahme umfasst zusätzlich Kennzahlendefinition, Vollständigkeit, Aktualität, Rechte, Wiederholungen, Wiederherstellung und Betrieb. Auch eine fehlerfreie Tabelle kann die falsche Frage beantworten."
      },
      "name": "Was unterscheidet Datenqualität von Pipeline-Abnahme?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Nur wenn die Geschäftsentscheidung es erfordert und die Quellen es ermöglichen. Vereinbaren Sie zuerst Aktualitätsziel, Quellzeitstand und Verhalten bei veralteten Ergebnissen. Häufigere Läufe beschleunigen keine verspätete Quelle und korrigieren keine unklare Definition."
      },
      "name": "Braucht ein nützliches Dashboard Echtzeitdaten?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Verarbeiten Sie dieselbe begrenzte Testdatei mit stabilen Kennungen zweimal und vergleichen Sie Einzelbeiträge und Summen. Im Beispiel darf ein wiederholter Auftrag den Nettowert EUR 170 nicht verändern. Prüfen Sie außerdem verspätete Erstattungen und Wiederherstellung nach Teilausführung."
      },
      "name": "Wie prüft man doppelte Zählung bei Wiederholungen?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Die Fachseite verantwortet Bedeutung und Aktualität. Engineering weist Transformationen und Fehlerverhalten nach. Die berechtigte Stelle bestätigt Zugriffe, der Betrieb Wiederherstellung und Betreuung. Wenige Personen können mehrere Rollen übernehmen, die Entscheidungen bleiben dennoch getrennt festzuhalten."
      },
      "name": "Wer nimmt eine Berichtspipeline ab?"
    }
  ],
  "speakable": {
    "@type": "SpeakableSpecification",
    "cssSelector": [
      ".faq-question",
      ".faq-answer"
    ]
  }
}
```
