Verifizierbarer Bericht
POST /v1/summarize?mode=intelligence&report=pdf · Mindestplan: Professional (Developer während der Aktion).Eine KI-generierte Zusammenfassung verlangt etwas Unangenehmes von Ihnen: ihr zu vertrauen. Sie wissen nicht, ob dieser Satz in der Besprechung wirklich gefallen ist, wer ihn gesagt hat oder wann. Der verifizierbare Bericht von Uttera ändert das: statt eines Textes, den man glauben muss, erzeugt sie einen Bericht, der sich Satz für Satz prüfen lässt. Es ist unser charakteristischster Dienst.
Die Idee ist einfach und bewusst: wir entscheiden nicht, was wahr ist —das beurteilt, wer zuhört—. Was wir tun, ist, jede Aussage an die Aufnahme zu verankern: wir holen sie mit ihrem wörtlichen Zitat, dem Sprecher, dem Segment und der genauen Minute heraus und markieren, ob dieses Zitat Wort für Wort im Audio steht. Das Urteil bringen Sie; wir bringen, woher jeder Satz stammt, auf eine Weise, die sich nicht bestreiten lässt.
Wofür es gut ist
Jede Situation, in der zählt, was gesagt wurde und später jemand es in Zweifel ziehen kann:
- Vorstands- und Hauptversammlungsprotokolle — das Vereinbarte, verankert an wer es sagte und wann.
- Gutachten und Rechtsstreit — eine Aufnahme als Beweis, den die Gegenseite selbst prüfen kann.
- Compliance und Audit — Aussagen und Kontrollen mit ihrer wörtlichen Grundlage.
- Due Diligence — was in den Besprechungen behauptet wurde, Satz für Satz nachvollziehbar.
- HR-Verfahren — Gespräche und Anhörungen mit überprüfbarem Nachweis.
- Journalismus — Zitate, verankert an der genauen Minute der Quelle.
- Streitigkeiten mit Kunden oder Lieferanten — «das wurde gesagt» ist nicht mehr Ihr Wort gegen ihres.
Von Anfang an sollte klar sein, was Uttera beweist an Ihrem Bericht —und was nicht—:
Der Beweisgraph
Die Analyse wird als Beweisgraph (evidence_graph) geliefert: eine Liste von
claims, den relevanten Aussagen der Aufnahme. Jede trägt text,
state (seinen Zustand: geäußert, bedingt, strittig… — die vollständige Liste unten),
speakers, entities, ein mögliches depends_on (von welcher
anderen Aussage sie abhängt) und ein evidence-Array mit den Stellen, die sie belegen
(segment_id, t_start/t_end, quote und
grounding).
Jede Aussage wird auf zwei Achsen eingeordnet, damit Sie auf einen Blick wissen, was es ist und wie viel es wiegt.
Was es ist — der Typ:
- Entscheidung — etwas, das entschieden wurde.
- Zusage — etwas, zu dem sich jemand verpflichtet hat, mit Verantwortlichem und, falls vorhanden, Frist.
- Zahl — eine Zahl: ein Betrag, eine Frist, eine Menge, ein Prozentsatz.
- Risiko — ein genanntes Risiko.
- Frage — eine offen gebliebene Frage.
- Widerspruch — zwei Gesagtes, das nicht zusammenpasst.
- Aussage — jede andere relevante Aussage.
Wie viel es wiegt — der Zustand:
- Geäußert — ausdrücklich gesagt.
- Bedingt — hängt von einer Bedingung ab, die der Graph gesondert angibt.
- Abgeleitet — aus dem Gespräch erschlossen; nicht als verifiziert verankert.
- Strittig — die Anwesenden sind nicht einig.
- Ungeklärt — offen geblieben, nicht abgeschlossen.
Dieses grounding ist die Verankerung jedes Zitats, und wir sagen es
ungeschönt:
verified | Das Zitat erscheint wortgleich im Transkript, in diesem Zeitabschnitt. |
approx | Es passt fast (gleiche Idee, nahe Formulierung) innerhalb desselben Segments. |
unverified | Es ließ sich keinem konkreten Abschnitt zuordnen. Es wird nicht als verifiziert signiert (verifiable:false) und im Bericht markiert oder ausgeschlossen. |
🔴 Verankern heißt nicht, über die Wahrheit zu urteilen. Der Graph sagt wer was wo gesagt hat, und dass das Zitat wirklich im Audio steht. Er sagt nicht, dass das Gesagte wahr ist: das —und die Genauigkeit des Transkripts— entscheidet, wer zuhört. Es ist dieselbe Unterscheidung wie bei Verifizieren: Echtheit und Verankerung sind nicht Wahrheitsgehalt.
Die Zahlen im Bericht stimmen mit dem Gesagten überein
Ein Protokoll lebt von seinen Zahlen: ein Betrag, eine Frist, eine Menge, ein Prozentsatz. Deshalb gleicht der Bericht eine Zahl in einer Aussage mit dem wörtlichen Zitat ab, aus dem sie stammt. Taucht die Zahl aus dem Bericht nicht im Gesagten auf, wird sie markiert —sie wird nicht durchgelassen, als wäre sie belegt—.
Zwei Prüfstufen
Nicht jeder Bericht braucht dieselbe Strenge. Darum gibt es zwei Stufen:
✓ Zahlen gegen das Gesagte abgeglichen
✓ signiert (Ed25519 + Zeitstempel)
✓ eine zusätzliche unabhängige Prüfung, dass jede Aussage wirklich durch ihren Beweis gedeckt ist
Forensisch: demnächst verfügbar für die höheren Pläne.
So fordern Sie sie an
Über die API ist es der Zusammenfassungs-Dienst
mit ?mode=intelligence (und, um den Berichtstyp festzulegen,
report_schema/report_prompt). Fügen Sie ?report=pdf für das
signierte PDF hinzu: der bereits validierte Graph liegt im Dokument, abgedeckt von
seiner Signatur, sodass das PDF allein zum Prüfen genügt. Das PDF kommt in
report.pdf_base64 mit seinen Signaturen (content_signature,
container_signature, pdf_sha256, key_fingerprint).
Abgerechnet wird pro Token, wie die Zusammenfassung; eine unverified-Aussage wird
nicht separat berechnet noch als verifiziert verkauft.
curl -X POST "https://api.uttera.ai/v1/summarize?mode=intelligence&report=pdf" \
-H "Authorization: Bearer $UTTERA_API_KEY" \
-F "file=@besprechung.mp3" \
| jq -r '.report.pdf_base64' | base64 -d > bericht.pdf
Ohne Programmieren, im Studio: haken Sie das Kästchen „Verifizierbarer Bericht" an, wählen Sie die Ausgabesprache und führen Sie aus; der Graph wird auf dem Bildschirm gezeichnet und Sie können ihn (JSON) neben dem PDF herunterladen.
&async=1 hinzu und holen Sie das Ergebnis
später ab (Asynchroner Modus). Sobald das PDF ausgestellt
ist, kann es jeder unter Einen Bericht verifizieren
ohne Konto prüfen.Einen Bericht verifizieren
Jeder PDF-Bericht, den wir ausstellen, ist kryptografisch signiert. Jeder —Sie, Ihr Kunde, die andere Seite einer Verhandlung— kann prüfen, dass ein Bericht von uns stammt und dass niemand ihn unterwegs angefasst hat, ohne uns um Erlaubnis zu fragen und ohne Konto.
Der schnellste Weg ist die Seite. Auf uttera.ai/de/verify laden
Sie das PDF hoch, und das war's: Es gibt nichts zu kopieren oder einzufügen, weil die Signatur in
der Datei selbst mitreist. Sie ist für jeden gedacht, der einen Bericht erhält und keinen Code
schreiben wird — einen Anwalt, einen Sachverständigen, die Gegenpartei. Der Rest dieses Kapitels
ist dafür, es selbst zu tun, mit curl oder ohne den Umweg über uns.
🔴 Authentizität ist nicht Wahrheit. Einen Bericht zu verifizieren sagt Ihnen, woher das Dokument stammt und dass niemand es verändert hat. Es sagt nicht, dass das, was darin steht, wahr ist. Der Bericht wird aus einer vom Kunden bereitgestellten Aufnahme erzeugt, und sowohl die Richtigkeit der Transkription als auch die Wahrheit dessen, was darin gesagt wird, liegen in seiner Verantwortung. Uttera war nicht Zeuge dessen, was aufgenommen wurde, prüft es nicht und zertifiziert es nicht.
Was es ist und was es nicht ist. Es ist eine kryptografische Authentizitätssignatur mit Ed25519. Es ist keine qualifizierte elektronische Signatur im Sinne der eIDAS-Verordnung: Sie beweist, dass das Dokument aus unserem System stammt und sich nicht verändert hat, sie ist nicht das Äquivalent eines Zertifikats eines qualifizierten Anbieters. Wir sagen das hier, und der Bericht sagt es auch.
Warum es zwei Signaturen gibt
Jeder Bericht trägt zwei, und jede beantwortet eine andere Frage:
| Signatur | Worüber | Was sie beantwortet |
|---|---|---|
| Inhalt | was der Bericht sagt: Zusammenfassung, Transkript, Kundenname, Datum und Nutzung | “stammt dieser Text von Uttera?” — sie gilt weiterhin, wenn das PDF neu gedruckt, beschnitten oder erneut gespeichert wurde |
| Container | die Bytes der PDF-Datei | “ist diese Datei genau die, die ausgestellt wurde?” — sie erkennt ein einziges geändertes Byte |
Die des Inhalts ist im Inneren des Berichts abgedruckt, in der Fußzeile jeder Seite, als
kurzer Fingerabdruck. Die des Containers kann nicht hinein —etwas zu signieren, das danach
verändert wird, ist unmöglich— daher wird sie nach dem fertigen Dokument angehängt, auf
einer Zeile am Ende der Datei, die mit %%UTTERA-FIRMA-V1: beginnt. Ein PDF-Reader
sieht sie nie: Das Format schreibt vor, ab dem letzten startxref zu lesen, sodass
alles nach dem %%EOF ignoriert wird.
Das ist es, was das PDF allein genügen lässt, um beide Signaturen zu prüfen. Früher
wurde sie von der API separat zurückgegeben, und Sie mussten sie neben der Datei aufbewahren: In
dem Moment, in dem jemand den Bericht per E-Mail weiterleitete, blieb die Signatur zurück, und das
Dokument ließ sich überhaupt nicht mehr verifizieren. Die API gibt sie weiterhin in
report.container_signature zurück, für jeden, der sie lieber separat archiviert.
Der öffentliche Schlüssel
Wir veröffentlichen ihn an drei Stellen, und alle drei geben dasselbe:
https://uttera.ai/.well-known/uttera-firma.pub das PEM, für sich allein
https://uttera.ai/.well-known/uttera-firma.json jeder Schlüssel, mit seinen Daten
https://api.uttera.ai/v1/reports/public-key der, der gerade jetzt signiert
Die Vertrauenskette ist dieselbe, die DKIM- oder JWKS-Schlüsselsätze verwenden: Das
TLS-Zertifikat von uttera.ai bezeugt, dass die Domain uns gehört, und diese Domain
veröffentlicht den Schlüssel. Sie müssen uns das nicht am Telefon glauben.
Es über die Befehlszeile prüfen
Der Endpunkt ist öffentlich und benötigt keinen API-Schlüssel:
POST https://api.uttera.ai/v1/reports/verify
Mit dem PDF und sonst nichts. Das ist der normale Modus: Die Signatur ist in der Datei, sodass nichts nötig ist, was Sie separat hätten aufbewahren müssen. Er prüft beide Signaturen auf einmal:
curl -s -X POST https://api.uttera.ai/v1/reports/verify \
-H "Content-Type: application/json" \
-d "{\"modo\":\"pdf\",\"pdf_b64\":\"$(base64 -w0 report.pdf)\"}"
{"mode": "pdf", "signed": true,
"valid_container": true, "valid_content": true,
"key_fingerprint": "56ac333b…",
"fields": {"cliente": "…", "titulo": "…", "generado": "1789641036", …}}
Beide true ist der gute Fall. valid_content true mit
valid_container false bedeutet, der Text ist unser, aber die Datei wurde erneut
gespeichert — jedes PDF-Werkzeug, das sie öffnet und schreibt, ändert die Bytes — was nicht
dasselbe ist wie eine Fälschung. signed false bedeutet, die Datei trägt keine
Signatur von uns, oder sie wurde entfernt.
Die beiden Modi unten sind für den Fall, dass Sie die Teile getrennt haben: einen älteren Bericht oder eine für sich archivierte Signatur.
Die Datei prüfen (Container-Signatur). Sie brauchen das PDF und die Signatur, die in
report.container_signature dazukam:
curl -s -X POST https://api.uttera.ai/v1/reports/verify \
-H "Content-Type: application/json" \
-d "{\"modo\":\"contenedor\",
\"pdf_b64\":\"$(base64 -w0 report.pdf)\",
\"firma_b64\":\"THE_CONTAINER_SIGNATURE\"}"
{"valid": true, "mode": "contenedor", "key_fingerprint": "56ac333b…"}
Den Inhalt prüfen. Sie brauchen die Analyseantwort genau so, wie wir sie zurückgegeben
haben, plus report.content_signature und das Datum aus report.generated_unix
— den Unix-Zeitstempel, das ist der signierte Wert; generated_at ist das
geschriebene Datum, zum Lesen. Der Zeitstempel ist auf dem Bericht selbst abgedruckt, neben der
Nummer:
curl -s -X POST https://api.uttera.ai/v1/reports/verify \
-H "Content-Type: application/json" \
-d '{"modo":"contenido",
"datos": { …the /v1/summarize response… },
"cliente":"Meridiano Asesores, S.L.",
"titulo":"Minutes of the meeting",
"generado":1789639533,
"firma_b64":"THE_CONTENT_SIGNATURE"}'
Wir speichern dafür nichts. Verifizieren ist eine Operation mit öffentlichem Schlüssel über das, was Sie uns senden: Wir schlagen nichts nach. Deshalb funktioniert es bei einem Bericht von vor Jahren, und deshalb können wir Ihnen nicht sagen, wie viele Berichte wir ausgestellt haben, oder einen finden, den Sie verloren haben.
Schlüsselrotation
Jeder Schlüssel wird zwölf Monate lang verwendet und beim geringsten Verdacht früher ersetzt. Zurückgezogene Schlüssel bleiben für immer veröffentlicht: Ein heute signierter Bericht muss in zehn Jahren verifizierbar sein.
Deshalb trägt jeder Bericht neben seiner Signatur den Fingerabdruck des Schlüssels, der ihn signiert hat. Der Prüfer weiß, welchen er verwenden muss, ohne alle durchzuprobieren.
Sollten wir je einen Schlüssel zurückziehen müssen, weil er kompromittiert wurde, würden wir es hier mit dem Datum sagen. Und wir würden auch den unangenehmen Teil sagen: Mit ihm signierte Berichte beweisen dann nichts mehr, weil derjenige, der den Schlüssel besaß, rückdatierte Dokumente hätte signieren können.