Adriana Cukaj · KI-Automatisierung & Prozessintegration

Drei Systeme. Alle live. Testen Sie selbst.

Ich baue Automatisierungen und KI-Systeme, die produktiv laufen und im Betrieb bleiben — mit sauberer Fehlerbehandlung, harten Sicherheitsgrenzen und nachvollziehbaren Entscheidungen.

Sprachassistent
Nimmt Anrufe entgegen
Führt das Gespräch auf Deutsch, prüft den Kalender, bucht Termine und übergibt bei Unsicherheit an einen Menschen.
Demo anrufen
Testnummer des Sprachassistenten
+43 670 3015023
Browser-Agent
Bedient Systeme ohne Schnittstelle
Überträgt Daten zwischen Anwendungen, die keine API haben — und erkennt manipulierte Seiteninhalte.
Demo starten
Öffnet in neuem Fenster
Betriebsagent
Entscheidet und dokumentiert
Überwacht Bestände, entscheidet über Nachbestellungen und begründet jede Entscheidung im Klartext.
Dashboard ansehen
Öffnet in neuem Fenster
Scrollen

Was die Systeme können

Drei Systeme, die ich gebaut habe und betreibe. Jedes löst ein Problem, das mit einfacher Automatisierung nicht lösbar ist.

01
01
Sprachassistent
KI-Sprachassistent für Telefonie

Das System nimmt eingehende Anrufe entgegen und führt das Gespräch auf Deutsch in Echtzeit. Es erfasst das Anliegen, prüft freie Zeiten in einem echten Google-Kalender, bucht den Termin und bestätigt ihn am Ende zusammengefasst. Dieselbe Terminlogik beantwortet auch SMS. Wird die Verständigung unsicher oder äußert die anrufende Person einen Wunsch außerhalb des vorgesehenen Ablaufs, übergibt das System an einen Menschen — statt zu raten.

Die technische Herausforderung

Ein Telefongespräch verzeiht keine Verzögerung. Sobald zwischen dem Ende einer Äußerung und der Antwort mehr als etwa zwei Sekunden vergehen, wirkt das Gegenüber abwesend, und Menschen beginnen zu sprechen oder legen auf. Gleichzeitig laufen drei rechenintensive Schritte hintereinander: Sprache in Text umwandeln, eine Antwort erzeugen, Text wieder in Sprache umwandeln.

Die zweite Schwierigkeit ist heikler und fällt beim Bauen erst spät auf: Ein Sprachmodell kann im Text sagen „Ich buche den Termin jetzt für Sie“, ohne die Buchung tatsächlich auszulösen. Die anrufende Person legt zufrieden auf, im Kalender steht nichts.

Ein Termin, der bestätigt wurde, aber nicht existiert, richtet mehr Schaden an als ein Anruf, der zwei Sekunden länger dauert.
Wie ich es gelöst habe

Spracherkennung und Sprachausgabe laufen als Datenstrom statt als abgeschlossene Anfragen. Die Erkennung liefert bereits Zwischenergebnisse, während noch gesprochen wird. Die Sprachsynthese wird nicht abgewartet, sondern fortlaufend dekodiert — sobald die ersten verwertbaren Audiodaten vorliegen, gehen 20-Millisekunden-Blöcke an die Telefonleitung. Gemessen liegt der Anlauf der Sprachausgabe bei einem Median von 193 Millisekunden. Zusätzlich erkennt das System, wenn die anrufende Person ins Laufende hineinspricht, und bricht die eigene Ausgabe sofort ab. Ohne diese Unterbrechungserkennung wirkt ein Sprachassistent wie eine Bandansage.

Beim Sprachmodell selbst habe ich bewusst auf Antwortstreaming verzichtet. Der Zeitgewinn läge bei den typischen kurzen Sätzen bei null bis 150 Millisekunden — dafür könnte der Assistent eine Buchung ankündigen, bevor der Kalender überhaupt geprüft wurde. Diese Abwägung ist im Projekt dokumentiert und bewusst so entschieden.

Buchungen, die nicht danebengehen

Jede Buchung führt unmittelbar vor dem Kalendereintrag noch einmal eine eigene Verfügbarkeitsprüfung für exakt denselben Zeitraum aus — unabhängig davon, über welchen Weg sie ausgelöst wurde. Kündigt das Sprachmodell eine Buchung nur im Text an, ohne das Buchungswerkzeug aufzurufen, erzwingt der Server den Aufruf, kontrolliert die Daten und führt die Buchung erst danach aus. Die vom Telefonnetz übermittelte Rufnummer bleibt immer die verifizierte Hauptnummer; eine im Gespräch genannte abweichende Nummer wird zusätzlich gespeichert, ersetzt sie aber nie. Damit kann ein falsch verstandenes Wort keine echte Kontaktnummer überschreiben.

Was passiert, wenn etwas schiefgeht

Erkennt die Spracherkennung eine Aussage mit weniger als 75 Prozent Sicherheit, rät das System nicht, sondern bittet freundlich um Wiederholung. Für kurze Bestätigungen wie „ja“ oder „passt“ gilt eine eigene, niedrigere Schwelle, weil kurze Wörter systematisch schlechter bewertet werden. Leere Erkennungsergebnisse während der eigenen Sprachausgabe werden verworfen, damit das System nicht auf sein eigenes Echo antwortet. Bei medizinischen Beratungsfragen, ausdrücklichem Wunsch nach einem Mitarbeiter oder nicht erreichbarem Kalender übergibt das System an einen Menschen. Ein Kostendeckel von fünf Euro pro Tag, eine Höchstdauer von acht Minuten pro Anruf und ein Limit pro Rufnummer verhindern, dass ein Fehler oder ein Missbrauch unbemerkt Kosten verursacht.

PythonFastAPIWebSocketsTwilio Deepgram Nova-2ElevenLabsOpenAI Function Calling Google CalendarFFmpegSQLite
Sprachausgabe
193 ms
gemessener Median bis zum ersten Audioblock auf der Leitung
Testabdeckung
0
automatisierte Tests, zuletzt vollständig bestanden
Kostendeckel
5 € / Tag
zusätzlich acht Minuten Höchstdauer pro Anruf
Gesprächsverlauf · Auszug
Anrufer
Guten Tag, ich würde gerne einen Termin vereinbaren.
Assistent
Guten Tag! Gerne. Worum geht es bei dem Termin?
Anrufer
Ein Beratungsgespräch, am liebsten nächste Woche Dienstag.
Assistent
Dienstag, den 18., hätte ich um 10:00 und 14:30 Uhr frei. Passt einer davon?
Anrufer
14:30 wäre perfekt.
Assistent
Sehr gut. Ich verwende die Nummer, von der Sie gerade anrufen — der Termin ist eingetragen. Auf Wiederhören!
Der Assistent weist zu Gesprächsbeginn darauf hin, dass es sich um ein KI-System handelt. Vor jedem Kalendereintrag prüft der Server die Verfügbarkeit erneut.
02
02
Browser-Agent
Browser-Agent für Systeme ohne Schnittstelle

Viele Unternehmen arbeiten mit Software, die keine nutzbare Schnittstelle anbietet — gewachsene Branchenlösungen, ältere Verwaltungssysteme, Portale von Lieferanten. Daten zwischen solchen Systemen zu bewegen bedeutet in der Praxis: jemand tippt sie ab. Dieser Agent übernimmt genau das.

Die technische Herausforderung

Der klassische Weg wäre eine Automatisierung, die feste Positionen auf dem Bildschirm anklickt oder sich an technische Kennungen im Quelltext hängt. Beides bricht, sobald jemand das Layout ändert, eine Spalte verschiebt oder die Software ein Update bekommt. In der Praxis heißt das: Die Automatisierung muss nach jeder Änderung nachgezogen werden — und fällt genau dann aus, wenn niemand damit rechnet.

Der Agent sucht nicht nach dem dritten Feld von oben, sondern nach dem Eingabefeld mit der Beschriftung Nachname.
Wie ich es gelöst habe

Der Agent betrachtet die Seite bei jedem Schritt neu — als Bild und zusätzlich über die Bedienungshilfen-Struktur, die die Bedeutung der Elemente beschreibt. Nach jeder Aktion prüft er, ob das erwartete Ergebnis tatsächlich eingetreten ist: Steht der Wert wirklich im Feld? Hat die Navigation stattgefunden? Zeigt die Zusammenfassung die richtigen Daten? Erst danach folgt der nächste Schritt. Zum Nachweis enthält die Demo eine Schaltfläche, die das Layout der Zielseite verändert — Spalten vertauscht, Beschriftungen umformuliert, andere Gestaltung. Genau daran scheitert klassische Automatisierung.

Schutz vor manipulierten Seiteninhalten

Eine Webseite kann Text enthalten, der sich nicht an den Menschen richtet, sondern an den Agenten — versteckte Anweisungen, die die eigentliche Aufgabe überschreiben sollen. Eine der Demoseiten enthält genau das. Der Agent behandelt Seiteninhalte grundsätzlich nicht als Auftrag, markiert den Versuch im Protokoll und arbeitet mit den echten Daten weiter. Für Automatisierung, die auf fremden Portalen läuft, ist das kein Randthema.

Was passiert, wenn etwas schiefgeht

Der Agent arbeitet innerhalb harter Grenzen. Ein Lauf darf höchstens 60 Schritte machen und bricht danach ab, statt endlos zu versuchen. Liegt die Sicherheit einer Aktion unter 60 Prozent, führt er sie nicht aus, sondern legt sie zur Freigabe vor — mit Bildschirmfoto und Begründung. Bestimmte Wörter auf Schaltflächen sind gesperrt: löschen, bezahlen, kaufen, endgültig bestätigen. Liefert das Modell eine unbrauchbare Antwort, wird bis zu zweimal neu angefragt und danach kontrolliert abgebrochen. Wiederholte Navigationen auf dieselbe Adresse erkennt der Agent, statt im Kreis zu laufen. Jeder Schritt wird mit Bildschirmfoto, Begründung, Sicherheitswert und Kosten gespeichert — abgebrochene Läufe lassen sich mit vollständiger Vorgeschichte fortsetzen.

PythonPlaywrightChromium Claude Sonnet 4.5 (Bildverständnis)Bedienungshilfen-Struktur strukturierte AktionssteuerungDomain-FreigabelisteHuman-in-the-Loop
Testabdeckung
0
automatisierte Tests, zuletzt vollständig bestanden
Komplexer Lauf
35 Schritte
drei vollständige Bestellungen nacheinander abgeschlossen
Freigabegrenze
0
darunter führt der Agent nicht aus, sondern legt vor
VORHERScreenshot einfügen:
agent-vorher.png
NACHHERScreenshot einfügen:
agent-nachher.png
Vorher
Nachher
Gleiche Aufgabe, verändertes Layout.
Ziehen Sie den Regler.
03
03
Betriebsagent
Autonomer Betriebsagent für den Onlinehandel

Ein Onlineshop erzeugt jeden Tag dieselben Entscheidungen: Was muss nachbestellt werden, in welcher Menge, bei welchem Lieferanten? Welche Kundenanfrage kann standardisiert beantwortet werden, welche braucht einen Menschen? Der Agent trifft diese Entscheidungen selbstständig — und begründet jede einzelne nachvollziehbar.

Die technische Herausforderung

Eine einfache Regel wie „Bestand unter zehn, dann nachbestellen“ funktioniert in der Praxis nicht. Ein Lieferant liefert nur in Paletten zu 24 Stück. Ein anderer berechnet einen Zuschlag unterhalb von 50 Stück — dann sind 50 günstiger als 30. Ein dritter braucht im Winter vierzehn statt fünf Tage. Dazu kommen Wochentagsmuster und Saison. Die richtige Bestellmenge ist deshalb keine Schwelle, sondern eine Abwägung.

Harte Geschäftsregeln liegen im Code. Das Sprachmodell kann sie nicht umgehen — es sieht sie schlicht als gegeben.
Wie ich es gelöst habe

Die Entscheidung läuft in zwei getrennten Ebenen. Harte Geschäftsregeln liegen im Programmcode: Palettengrößen, Mindestmengen, Budgetgrenzen, Sperren. Nur die Abwägung darüber, die keine feste Regel abdeckt, übernimmt das Modell. Es begründet jeden Vorschlag im Klartext: warum diese Menge, warum dieser Zeitpunkt, warum dieser Lieferant. Wie eigenständig es handeln darf, ist in vier Stufen einstellbar — von reinem Vorschlagen bis zum selbstständigen Auslösen. Auf der aktuell eingestellten Stufe darf es Bestellungen bis 500 Euro selbst auslösen; darüber legt es vor, auch wenn es sich seiner Sache sicher ist.

Was passiert, wenn etwas schiefgeht

Bei widersprüchlichen Daten rät das System nicht, sondern legt den Fall vor. Ein erneuter Lauf legt für einen Artikel, zu dem bereits eine offene Freigabe wartet, keine zweite an — Doppelbestellungen entstehen so gar nicht erst. Antwortet das Sprachmodell in einem Format, das nicht der erwarteten Struktur entspricht, wird einmal neu angefragt und danach eskaliert. Zusätzlich vergleicht das System wöchentlich seine eigenen Prognosen mit dem tatsächlichen Verlauf — es misst also seine eigene Trefferquote, statt sie zu behaupten.

Beobachten
→
Freigabe
→
Autonom mit Grenzen
→
Autonom
Aktuell eingestellt: Stufe 3 — selbstständig bis 500 Euro Bestellwert.
PythonLLM-SchnittstelleBedarfsprognose Audit-ProtokollierungZeitsteuerungSelbstauswertung Autonomiestufen
Prognosegüte
0
gemessen über 1.120 einzelne Artikel-Tages-Prognosen
Abweichung
0,78 Stück
durchschnittlicher absoluter Fehler je Artikel und Tag
Autonomiegrenze
500 €
darüber entscheidet immer ein Mensch
EntscheidungsprotokollVorgang #4
Zeitpunkt
24.08.2026, 21:06
Artikel
Tomaten-Erde 40 L · Lieferant A
Ausgangslage
Bestand 11 Stück · Prognose 1,66 Stück/Tag · Lieferzeit 5 Tage
Menge
24 Stück — kleinste volle Palette bei rechnerischem Bedarf von 17
Bestellwert
1.138,32 €
Entscheidung
Nicht ausgeführt — zur Freigabe vorgelegt
„Lieferant A liefert ausschließlich in vollen Paletten zu 24 Stück. Der rechnerische Bedarf lag bei 17 Stück, deshalb wurde auf die nächste volle Palette aufgerundet. Der daraus entstehende Bestellwert von 1.138,32 € überschreitet das für autonome Entscheidungen erlaubte Limit von 500,00 €. Die Bestellung wurde nicht autonom ausgeführt, sondern zur manuellen Freigabe eskaliert.“
Ein Konfidenzwert wurde hier nicht berechnet: Die harte Bestellwertregel griff, bevor das Sprachmodell überhaupt zu einer Bewertung kam. Genau so soll es sein — die Grenze liegt im Code, nicht im Ermessen des Modells.

Daneben laufen weitere eigene Systeme im täglichen Betrieb — unter anderem zur automatisierten Recherche und Datenaufbereitung sowie zur Content-Erstellung.

Wie ich arbeite

Drei Grundsätze, die bei mir zum Lieferumfang gehören und nicht extra verhandelt werden.

Produktionsreif statt Prototyp

Fehlerbehandlung, Wiederholungslogik, Überwachung und Kostendeckel gehören zum Lieferumfang. Ein System, das nur im Idealfall funktioniert, ist nicht fertig.

Daten bleiben, wo sie hingehören

Auf Wunsch läuft alles self-hosted auf eigenen Servern, ohne US-Cloud. Für Branchen, die ihre Daten nicht aus dem Haus geben dürfen.

Direkt mit dem Fachbereich

Ich nehme Anforderungen selbst auf und setze sie selbst um — ohne Übersetzungsschleife. Auf Deutsch, Polnisch oder Serbisch.

Über mich

Seit 2022 selbstständig im Bereich Automatisierung und digitale Systeme. Davor Kundenbetreuung und Verwaltung — dort habe ich gelernt, wie die Abläufe aussehen, die ich heute automatisiere.

In Wien geboren und aufgewachsen. Polnisch ist meine Muttersprache, Deutsch und Serbisch spreche ich auf muttersprachlichem Niveau, akzentfrei. In Projekten mit direktem Kundenkontakt ist das regelmäßig der Punkt, an dem es hakt — Anforderungen aufnehmen, verstehen und anschließend selbst umsetzen zu können, spart eine Übersetzungsschleife.

PolnischMuttersprache
Deutschmuttersprachlich, akzentfrei
Serbischmuttersprachlich, akzentfrei
EnglischGrundkenntnisse, im Ausbau

Zusammenarbeit

Klare Rahmenbedingungen, damit wir schnell zur Sache kommen.

Verfügbar
ab sofort
Arbeitsort
100 % remote
Honorar
nach Projektumfang

Einmalige Umsetzung mit Setup-Pauschale oder laufende Betreuung als Monatspauschale. Zusammenarbeit auf Rechnung (B2B) oder Werkvertrag. Einsatzgebiet: Österreich, Deutschland und Schweiz.

Lassen Sie uns sprechen.

Erzählen Sie mir, welcher Ablauf bei Ihnen Zeit kostet — ich sage Ihnen ehrlich, ob sich Automatisierung dafür lohnt.

Antwort meist innerhalb weniger Stunden.