BLOG
BETA
← Zurück

LLMs in der Praxis: 150.000 Unternehmen automatisiert anreichern

KI und Machine Learning

Wie wir mit einer 12-stufigen Pipeline, intelligentem Webscraping und modernen LLMs einen Datensatz von 150.000 Unternehmen vollautomatisiert angereichert haben – inklusive Website-Verifizierung, Konzernstruktur-Mapping und regulatorischer Klassifizierung. Ein technischer Deep-Dive in die Architektur und die Lessons Learned.

Die Ausgangslage: Eine Nadel im Heuhaufen finden – 150.000 Mal

Ein Auftraggeber aus dem öffentlichen Sektor stand vor einer monumentalen Herausforderung: Ein Datensatz mit über 150.000 registrierten Unternehmen sollte um strukturierte Informationen angereichert werden. Aber nicht nur oberflächliche Daten wie Branche oder Adresse – sondern tiefgreifende Informationen:

  • Offizielle Unternehmenswebsites – verifiziert und mit Konfidenz-Score
  • Konzernstrukturen – Wer ist die Muttergesellschaft? Welche Tochterunternehmen existieren?
  • Produkt- und Dienstleistungskataloge – Was bietet das Unternehmen konkret an?
  • Regulatorische Klassifizierung – Fällt das Unternehmen unter den EU Digital Services Act?

Manuell? Völlig unmöglich. Bei konservativen 15 Minuten pro Unternehmen wären das 37.500 Arbeitsstunden – fast 19 Jahre Vollzeitarbeit für eine einzelne Person. Selbst mit einem Team von 10 Analysten würde das Projekt fast zwei Jahre dauern.

Die Lösung: Eine vollautomatisierte, KI-gestützte Datenextraktions-Pipeline, die das gesamte Internet als Datenquelle nutzt.

Die Architektur: Ein 12-stufiger Workflow

Das Herzstück des Systems ist eine modulare Pipeline, die jeden Schritt der Datenanreicherung als eigenständigen, wiederholbaren Prozess behandelt. Die Architektur basiert auf drei Säulen:

1. Workflow-Orchestrierung mit Temporal

Temporal ist eine Open-Source-Plattform für Workflow-Orchestrierung, die speziell für langlebige, fehlertolerante Prozesse entwickelt wurde. Für unser Projekt war Temporal aus mehreren Gründen die ideale Wahl:

  • Automatische Retries: Wenn ein API-Call fehlschlägt oder eine Website nicht erreichbar ist, wiederholt Temporal den Schritt automatisch – mit konfigurierbaren Backoff-Strategien
  • Persistente Workflow-States: Selbst bei einem Server-Neustart oder Crash geht kein Fortschritt verloren. Der Workflow setzt exakt dort fort, wo er unterbrochen wurde
  • Verteilte Worker: Die Verarbeitung kann über beliebig viele Maschinen skaliert werden – jeder Worker zieht sich selbstständig neue Aufgaben aus der Queue
  • Integriertes Monitoring: Über das Temporal Web UI lässt sich jeder einzelne Workflow-Schritt nachvollziehen, debuggen und bei Bedarf manuell neu starten

Die Pipeline ist als Sequenz von Workflows und Activities implementiert. Workflows definieren die Ablauflogik, Activities führen die eigentliche Arbeit aus (API-Calls, Datenbankoperationen, LLM-Anfragen).

2. Datenspeicherung: PostgreSQL + Object Storage

Strukturierte Daten – Unternehmensinformationen, Klassifizierungen, Beziehungen – werden in einer PostgreSQL-Datenbank gespeichert. Das Schema umfasst über 25 Tabellen mit komplexen Beziehungen:

  • companies: Stammdaten der Unternehmen (Name, Adresse, Registrierungsnummer, Branchencodes)
  • web_pages: Gecrawlte Webseiten mit Roh-HTML und reduziertem Content
  • products_and_services: Extrahierte Produkte und Dienstleistungen mit Beschreibungen
  • llm_calls: Vollständiges Audit-Log aller LLM-Anfragen und -Antworten
  • dsa_analysis: Regulatorische Klassifizierungen nach dem Digital Services Act

Für unstrukturierte Daten – HTML-Inhalte, Sitemaps, Suchergebnisse – nutzen wir Garage, einen S3-kompatiblen Object Storage. Das ermöglicht effizientes Caching großer Datenmengen ohne die Datenbank zu belasten.

3. LLM-Verarbeitung: OpenAI Batch API

Bei 150.000 Unternehmen mit jeweils mehreren LLM-Aufrufen pro Pipeline-Schritt sprechen wir von Millionen von API-Calls. Die OpenAI Batch API war hier ein Game-Changer:

  • 50% Kostenersparnis: Batch-Verarbeitung ist deutlich günstiger als Echtzeit-API-Calls
  • Keine Rate-Limit-Probleme: Batches werden asynchron verarbeitet, ohne die API zu überlasten
  • Integriertes Monitoring: Der Batch-Status lässt sich über das OpenAI Dashboard verfolgen
  • Automatische Wiederholung: Fehlgeschlagene Requests werden automatisch erneut versucht

Die 12 Pipeline-Stufen im Detail

Stufe 1: Vorbereitung und Web-Suche

Der erste Schritt nutzt die Serper API (eine Google-Search-Alternative), um potenzielle Unternehmenswebsites zu finden. Für jedes Unternehmen wird eine Suchanfrage konstruiert, die Firmenname, Standort und Branche kombiniert.

Die Top-Suchergebnisse werden mit Metadaten (Titel, Beschreibung, URL, Position) in der Datenbank gespeichert. Diese Rohdaten bilden die Grundlage für die Website-Verifizierung.

Stufe 2: Website-Verifizierung – Der "Corporate Investigator"

Hier wird es interessant: Nur weil eine Website in den Suchergebnissen erscheint, heißt das nicht, dass sie tatsächlich zum Unternehmen gehört. Ein LLM agiert als "Corporate Investigator" und analysiert jede gefundene Website systematisch:

  1. Evidenz-Extraktion: Wörtliche Zitate von Firmennamen, Adressen, rechtlichen Texten und Kontaktdaten
  2. Ausschluss-Prüfung: Identifikation von Drittanbieter-Inhalten (News, Verzeichnisse, Bewertungsportale)
  3. Evidenz-Kategorisierung: Dreistufiges System – Tier 1 (rechtliche Identifikatoren), Tier 2 (starke Indizien), Tier 3 (unterstützende Hinweise)
  4. Konzernstruktur-Analyse: Erkennung von Mutter-, Tochter- und Schwesterunternehmen
  5. Widerspruchs-Suche: Aktive Suche nach Beweisen, die gegen eine Zuordnung sprechen

Das Ergebnis ist eine von 13 Klassifizierungen:

  • direct_match_legal_entity – Offizielle Website mit rechtlichen Identifikatoren (Handelsregisternummer, USt-ID)
  • direct_match_strong_evidence – Starke Übereinstimmung ohne rechtliche ID
  • brand_level_match – Offizielle Marken- oder Produktseite
  • corporate_parent – Website der Muttergesellschaft
  • corporate_subsidiary_or_branch – Website einer Tochtergesellschaft
  • non_match_third_party_content – Inhalte über das Unternehmen, nicht vom Unternehmen
  • ... und weitere für Grenzfälle

Stufe 3: Muttergesellschaft-Identifikation

Für jedes verifizierte Unternehmen wird die Eigentümerstruktur nach oben verfolgt. Das LLM sucht nach:

  • Expliziten Eigentumsverhältnissen (Mehrheitsbeteiligungen, Holding-Strukturen)
  • Offiziellen Quellen (nur Unternehmenswebsites, keine Handelsregister-PDFs oder Aggregatoren)
  • Der "Ultimate Parent Company" – dem obersten Unternehmen in der Eigentümerkette

Wichtig: Das System akzeptiert nur Beweise von unternehmenseigenen Websites. Drittquellen werden explizit ausgeschlossen, um die Datenqualität zu gewährleisten.

Stufen 4-6: Sitemap-Discovery und -Verarbeitung

Sitemaps sind das "Inhaltsverzeichnis" einer Website. Statt blind zu crawlen, nutzen wir sie für effiziente Content-Discovery:

  1. Sitemap-Entdeckung: Automatische Lokalisierung von XML-Sitemaps über robots.txt und Standard-Pfade
  2. Sitemap-Routing: Kleine Sitemaps (<1000 URLs) werden direkt verarbeitet, große werden intelligent gefiltert
  3. Sitemap-Fetching: Download und Parsing der Sitemap-Inhalte

Stufen 7-8: Intelligente URL-Filterung

Nicht jede Seite einer Website ist relevant. Blog-Posts, News-Archive, Cookie-Policies – all das ist Rauschen. Ein LLM filtert die URLs nach Relevanz:

  • Zielkategorien: Digitale Produkte, Dienstleistungen, Unternehmensstruktur, About-Seiten
  • Sprachpriorisierung: Amerikanisches Englisch wird bevorzugt, nur eine Sprachversion pro Seite
  • Breadth over Depth: Übergeordnete Seiten (/products/) werden gegenüber spezifischen Unterseiten (/products/widget-x/) bevorzugt
  • Redundanz-Vermeidung: Keine doppelten Inhalte in verschiedenen Sprachen oder Formaten

Stufe 9: Bulk-Prefetch

Alle ausgewählten URLs werden in optimierten Batches heruntergeladen. Puppeteer (ein Headless-Chrome-Controller) ermöglicht das Rendering von JavaScript-lastigen Seiten. Jede Browser-Instanz benötigt 100-200 MB RAM – bei paralleler Verarbeitung ein erheblicher Ressourcenbedarf, der durch intelligentes Queueing und Multi-Tasking gemanagt wird.

Stufe 10: Detail-Extraktion

Das LLM extrahiert strukturierte Informationen aus den Webseiten:

  • Produkte: Name, Marke, Beschreibung, Produkt-URL
  • Dienstleistungen: Name, Marke, Beschreibung, Service-URL
  • Muttergesellschaften: Name, Beschreibung, offizielle Website
  • Tochtergesellschaften: Name, Beschreibung, offizielle Website

Kritisch ist die Unterscheidung zwischen eigenen Produkten und Drittanbieter-Integrationen. "Microsoft 365" ist falsch – "Microsoft 365 Integration Services" ist korrekt, wenn das Unternehmen Integrationsdienstleistungen anbietet.

Stufe 11: DSA-Produktanalyse

Jedes extrahierte Produkt wird nach dem EU Digital Services Act klassifiziert:

  • Mere Conduit: Reine Übertragungsdienste (ISPs, VPNs, DNS)
  • Caching Service: Temporäre Speicherung zur Effizienzsteigerung (CDNs, Proxies)
  • Hosting Service: Online-Datenspeicherung (Cloud-Hosting, SaaS)
  • Online Search Engine: Web-weite Suchfunktionalität
  • Large Language Models: Generative KI-Systeme
  • Online Platform: Nutzer-zu-Nutzer-Verbindungsdienste (Social Media, Marktplätze)

Die Klassifizierung folgt einer strikten Hierarchie mit expliziten Regeln für Grenzfälle: "Im Zweifel zwischen Hosting und Platform → Platform".

Stufe 12: Finale Unternehmensklassifizierung

Die Einzelprodukt-Klassifizierungen werden zu einer Unternehmens-Gesamtbewertung aggregiert. Ein Unternehmen kann mehrere Kategorien gleichzeitig erfüllen – ein Cloud-Anbieter mit CDN und Speicherdiensten wäre sowohl "Caching Service" als auch "Hosting Service".

Prompt Engineering: Die Kunst der präzisen Anweisung

Der Erfolg der Pipeline steht und fällt mit der Qualität der Prompts. Einige Schlüsselprinzipien:

Strukturierte Analyse vor Ausgabe

Jeder Prompt verlangt eine dokumentierte Analyse in speziellen Tags, bevor die finale JSON-Ausgabe erfolgt. Das zwingt das Modell zu systematischem Denken und macht Fehler nachvollziehbar.

Evidenz-basierte Entscheidungen

Keine Behauptung ohne Beleg. Jede Klassifizierung muss durch wörtliche Zitate aus dem Quellmaterial gestützt werden. Das reduziert Halluzinationen drastisch.

Explizite Ausschlussregeln

Statt nur zu definieren, was eingeschlossen wird, definieren wir explizit, was ausgeschlossen wird. "Akzeptiere KEINE PDFs, Handelsregister-Einträge oder Aggregator-Seiten als Quellen."

Mehrstufige Validierung

Prompts enthalten Schritte zur aktiven Suche nach Widersprüchen. "Suche nach Beweisen, die GEGEN eine Zuordnung sprechen, bevor du eine Entscheidung triffst."

Typisierte Ausgaben mit Zod-Schemas

Alle LLM-Ausgaben werden gegen TypeScript-Schemas validiert. Ungültige Antworten werden automatisch wiederholt. Das garantiert konsistente, maschinenlesbare Ergebnisse.

Skalierung: Von 1 auf 150.000

Batch-Optimierung

Die OpenAI Batch API verarbeitet bis zu 50.000 Requests pro Batch. Wir gruppieren Anfragen nach Typ und senden sie in optimierten Batches. Das reduziert nicht nur Kosten, sondern auch die Komplexität des Error-Handlings.

Parallele Worker

Temporal ermöglicht horizontale Skalierung über beliebig viele Worker-Maschinen. Jeder Worker zieht sich selbstständig Aufgaben aus der Queue – ohne zentrale Koordination. Bei Lastspitzen können zusätzliche Worker gestartet werden.

Intelligentes Caching

Gecrawlte Webseiten werden im Object Storage gecacht. Bei erneutem Durchlauf der Pipeline werden bereits vorhandene Inhalte wiederverwendet. Das spart Zeit und respektiert die Ressourcen der Ziel-Websites.

Inkrementelle Verarbeitung

Die Pipeline ist idempotent: Bereits verarbeitete Unternehmen werden übersprungen. Das ermöglicht unterbrechungsfreie Fortsetzung nach Fehlern und inkrementelle Updates bei neuen Daten.

Die Ergebnisse

Nach mehreren Wochen Entwicklung und Optimierung:

  • ~140.000 Unternehmen erfolgreich angereichert (~93%)
  • Millionen von Webseiten gecrawlt und analysiert
  • Hunderttausende Produkte und Dienstleistungen extrahiert
  • Vollständige Konzernstrukturen für tausende Unternehmen
  • DSA-Klassifizierungen für alle relevanten digitalen Dienste

Die verbleibenden ~7% sind Unternehmen ohne auffindbare Online-Präsenz, mit nicht-crawlbaren Websites (Paywalls, Bot-Protection) oder mit unzureichenden Informationen für eine zuverlässige Klassifizierung.

Lessons Learned

1. Fehlertoleranz ist nicht optional – sie ist fundamental

Bei 150.000 Datensätzen ist die Frage nicht OB etwas schiefgeht, sondern WAS und WIE OFT. Websites sind offline, APIs haben Rate Limits, HTML ist malformed, LLMs halluzinieren. Jeder einzelne Schritt muss graceful mit Fehlern umgehen können.

2. Monitoring von Tag 1

Ohne Echtzeit-Einblick in den Pipeline-Status bist du blind. Temporals Web UI war hier Gold wert – jeder Workflow-Schritt ist nachvollziehbar, Fehler sind sofort sichtbar, und manuelle Eingriffe sind möglich.

3. Kosten-Awareness bei LLM-APIs

Bei Millionen von API-Calls summieren sich selbst kleine Kosten pro Request. Die Batch API mit 50% Rabatt war ein Game-Changer. Zusätzlich: Kleinere Modelle für einfache Aufgaben, große Modelle nur wo nötig.

4. Qualität vor Vollständigkeit

Lieber 90% der Daten mit hoher Konfidenz als 100% mit fragwürdiger Qualität. Unsichere Klassifizierungen werden explizit als solche markiert – das ermöglicht gezielte manuelle Nachbearbeitung.

5. Schema-Validierung ist nicht verhandelbar

LLM-Ausgaben sind inhärent unzuverlässig. Strikte Schema-Validierung mit automatischen Retries bei Fehlern garantiert konsistente Datenstrukturen – auch wenn das Modell gelegentlich "kreativ" wird.

6. Respektiere die Datenquellen

150.000 Websites zu crawlen ist eine Verantwortung. Wir respektieren robots.txt, implementieren Rate Limiting, und cachen aggressiv, um unnötige Requests zu vermeiden.

Fazit: Die Zukunft der Datenanreicherung

Dieses Projekt zeigt, was mit moderner KI-Infrastruktur möglich ist: Aufgaben, die früher Jahre manueller Arbeit erfordert hätten, können in Wochen automatisiert werden. Aber es zeigt auch die Komplexität: Robuste Pipelines erfordern durchdachte Architektur, sorgfältiges Prompt Engineering und umfassendes Error Handling.

Die Kombination aus Workflow-Orchestrierung (Temporal), skalierbarer LLM-Verarbeitung (OpenAI Batch API) und strukturierter Datenhaltung (PostgreSQL) bildet ein mächtiges Framework für ähnliche Projekte – ob Marktanalysen, Compliance-Prüfungen oder Wettbewerbsbeobachtung.

Die Technologie ist da. Die Frage ist nur noch: Welche Daten möchten Sie anreichern?

Haben Sie ein ähnliches Projekt? Wir helfen gerne bei der Konzeption und Umsetzung.

KONTAKT AUFNEHMEN →