In 48h zum Automatisierten Underwriting mit AI


Das Team der nag informatik zeigte am BaselHack 2025, was in kurzer Zeit möglich ist: Eine funktionsfähige App, die Lebensversicherungsanträge mit AI automatisch bewertet, ablehnt oder annimmt. Dafür gaben unsere Business-Engineers, AI-Experten und Full-Stack-Entwickler alles. David Übelacker, Expert Software Architect, erzählt, wie das nag-Team in 48 Stunden ein technisch und fachlich überzeugendes Resultat entwickelte.

nag-team am baselhack

Drei Minuten Pitch – 48 Stunden Challenge


Endlich ist es so weit: Es ist Freitag und heute beginnt der BaselHack 2025. Das Hackathon-Team trifft sich pünktlich um vier im Büro zum Freitag-Apéro. Litty, Kathrin, Sebastian, Artur, Morris und ich trinken ein Bier zur Vorbereitung und machen uns dann auf den Weg in Richtung Bahnhof.

Im Memox Basel SBB ist noch nicht viel los. Mit dem Batch als «Hacker» gekennzeichnet, erkunden wir die Location. Hier warten bereits Valentino Rusconi und Regjep Arifi, zwei meiner ehemaligen Kollegen von Endress+Hauser. Sie schliessen sich uns an. Jetzt ist das Team komplett.

Bis 18 Uhr vertreiben wir uns die Zeit mit Plaudern, dann geht es los: Jetzt pitchen Redner die Challenges genau drei Minuten lang. Ist der Timer im Hintergrund abgelaufen, unterbricht das Publikum mit lautem Klatschen.

Neben einer Reihe Freestyle Challenges schlagen die Firmen Pax Versicherung und Endress+Hauser je eine Aufgabe vor. Wir dürfen auswählen. Bereits im Vorfeld hatten wir uns aber für die Challenge der Pax Versicherung entschieden: «Automate Underwriting: Create the Future of Insurance!»

Ein Grossteil der nag-Kunden kommt aus der Versicherungsbranche – darunter auch die Pax Versicherung – deshalb hat uns dieses Thema sowohl fachlich als auch technisch besonders angesprochen.

Christin-Isabell Henn und Claude Eisenmann der Pax Versicherung erklären uns genauer, worum es geht: Beantragt ein Kunde eine Lebensversicherung, prüft die Versicherung dessen Risiko, bevor sie den Vertrag unterschreibt. Diesen Prozess, Underwriting genannt, sollen wir mithilfe von AI automatisieren. Eine spannende Herausforderung. Gut, dass wir mit Sebastian und Morris zwei gewiefte AI-Spezialisten dabeihaben.

Zwei Ansätze für das Underwriting mit AI

Mit Pizza ausgerüstet geht es in die Konzeptphase. Wir diskutieren, entwickeln, legen fest und verwerfen wieder. Bald finden wir zwei vielversprechende Ansätze, um das Underwriting mit AI zu optimieren:

Lebensversicherungsanträge enthalten neben Namen, Adresse, Alter oft auch lange medizinische Beschreibungen. Mit Large Language Models (LLMs) wie GPT von OpenAI oder Mistral wollen wir zunächst solche Freitexte in strukturierte, auswertbare Daten umwandeln.

Um Risiken möglichst genau abzuschätzen, verwenden Versicherer gut gehütete Regelwerke. Wir sind uns sicher, dass wir mit KI zusätzliche Muster erkennen und Nachbesserungen vorschlagen können. Hierfür trainieren wir ein ML-Modell, das die Ergebnisse der regelbasierten Bewertung validiert und Optimierungen empfiehlt.

Von der Idee zur Architektur


Jetzt, da wir wissen, was wir wollen, müssen wir einen Weg finden, das Vorhaben umzusetzen. Bevor wir aber loslegen, braucht das Projekt einen Namen. Wir taufen es auf «underwAIse».

Mittlerweile ist es bereits nach 21 Uhr. Uns bleibt bis Sonntagmittag Zeit, unsere Ideen umzusetzen und eine kurze Präsentation vorzubereiten. Wir sind zuversichtlich, denn wir haben ein vielseitiges Team aus erfahrenen Full-Stack-Entwicklern, Business-Analysten und eben unseren AI-Spezialisten – alle mit reichlich Versicherungswissen. Beste Voraussetzungen, um eine passende Architektur zu definieren.

Architekturübersicht unserer Engine für das Underwriting mit AI
Architekturübersicht unserer Engine für das Underwriting mit AI

 

Vier plus eins Module

Wir teilen unsere Lösung in vier Module auf. Frontend, Backend, LLM-Service und ML-Inference-Service. So können wir unser Know-how optimal einsetzen, besser parallel arbeiten und schneller vorankommen.

Frontend – mit dem Handy intuitiv Versicherungen beantragen

Ein einfaches Mobile-First-Frontend ermöglicht es Kundinnen und Kunden, ihren Lebensversicherungsantrag intuitiv online auszufüllen.

Dafür setzen wir auf Next.js in Kombination mit der Komponentenbibliothek Radix, ergänzt durch shadcn, das auf Radix-UI aufbaut. Mithilfe eines pixel-perfect umgesetzten Custom Themes, das sich am User Interface von Python orientiert, kreieren wir ein einheitliches und modernes Erscheinungsbild.

Für die Kommunikation mit dem Backend nutzen wir einen OpenAPI-basierten RESTful Service. Auch die Definition des Formulars stellen wir vom Backend aus bereit. So können wir das Formular jederzeit dynamisch anpassen, ohne dass das Frontend neu deployed werden muss.

Screenshots der Landing Page und des Antragsformulars
Screenshots der Landing Page und des Antragsformulars

 

Backend – Motor des Underwriting-Prozesses

Für das Backend setzen wir Spring Boot in Verbindung mit der Engine für Business Process Model and Notation (BPMN) von CIB Seven, einem Open-Source-Fork von Camunda, ein. Mit diesem Setup möchten wir den komplexen Underwriting-Prozess einfach, verständlich, nachvollziehbar und erweiterbar umsetzen.

Underwriting-Prozess im Cockpit der BPMN-Engine
Underwriting-Prozess im Cockpit der BPMN-Engine

 

LLM-Service schafft Struktur

Für die Strukturierung und Bewertung von Freitext-Daten deployen wir eine eigene Instanz des GPT-5 von OpenAI auf Azure. Auf diesem Weg können wir sicherstellen, dass beim Underwriting mit AI die Kundendaten die Schweiz nicht verlassen.

Wir könnten das LLM auch direkt aus unserem Backend, also aus der Spring-Boot-Applikation, aufrufen, aber unser AI-Experte Morris ist mit Python schneller. Weiter kommen FastAPI für die Kommunikation mit dem Backend und LangChain für die Integration des Large Language Models zum Einsatz.

ML-Inference-Service optimiert die Business-Rules

Sebastian entwickelt einen ML-Inference-Service zur Evaluierung und Optimierung der Business-Rules. Dieser bewertet eingehende Versicherungsanträge mit einem selbst trainierten Support-Vector-Machine-Modell.

Das Modell basiert aktuell auf synthetischen Daten, da am Hackathon natürlich keine historischen Daten vorliegen. Es wird aber künftig mit echten Vertragsdaten kontinuierlich erweitert und dadurch über die Zeit immer präziser.

Die Daten werden vom Modell automatisch in vier Kategorien klassifiziert: Annahme, Risikozuschlag erforderlich, zusätzliche Klärung nötig oder Ablehnung.

Auch hier setzen wir auf FastAPI für die REST-API und auf scikit-learn für das SVM-Modell.

Ablauf und Funktionsweise des ML-Inference-Service
Ablauf und Funktionsweise des ML-Inference-Service

 

Plus eins – auch Deployment und CI/CD müssen sein

Wir sind anspruchsvoll und erstellen trotz Zeitdruck eine lauffähige Demo. Mit Terraform und GitHub Actions automatisieren wir den Build der Docker-Images und das Deployment als Serverless Container Apps auf Azure.

Samstag: Vom minimalen Prototyp zur Demo


Der Freitag ist schon zwei Stunden vorüber, als sich die Letzten auf den Heimweg machen, um doch noch ein paar Stunden Schlaf zu bekommen. Regjep und Valentino hatten schon vor Stunden eine erste Version des Frontends fertiggestellt und dem Team so das Tempo vorgegeben.

Ein sanfter Druck, der uns half, das gesetzte Ziel für den ersten Tag zu erreichen: ein minimaler, aber funktionsfähiger Prototyp. Das heisst ein einfaches Formular, einen BPMN-Prozess im Backend, einen Aufruf des AI-Services und den Versand einer Bestätigungsmail.

Am nächsten Morgen trudeln alle zu sehr unterschiedlichen Zeiten ein, die meisten mit nur ein paar Stunden Schlaf. Unser Youngster Morris war am Vorabend in Freiburg gar auf einer Halloween-Party. Er kommt etwas später, hat aber auf der Fahrt zur Feier weitergearbeitet. Ich andererseits, bekomme zu spüren, dass ich einer der Ältesten bin: Eine so kurze Nacht stecke ich nicht mehr so leicht weg.

Trotzdem, jetzt gilt Vollgas. Das Ziel ist klar, die Aufgaben sind verteilt, los gehts!

Unsere Business-Engineers Litty und Kathrin vertiefen sich in ihre Recherchen und erarbeiten einen realistischen Fragebogen für den Antrag zu einer Lebensversicherung.

Artur übernimmt das Datenmodell, die zentrale Schnittstelle zwischen den Modulen. Geschickt koordiniert er sich mit dem ganzen Team. Mit Liquibase implementiert er die kontinuierliche Datenbankmigration und definiert die OpenAPI-Schnittstelle fürs Frontend.

Dieses wird von Regjep und Valentino perfektioniert. Sobald Litty und Kathrin mit dem umfangreichen Fragebogen fertig sind, bauen die beiden es ein und Valentino versteckt sogar noch ein kleines Spiel als Easter Egg.

Derweil modelliere ich den Prozess im Camunda Modeler. Kathrin und Litty machen sich im gleichen Tool an die Definition der Business-Rules für das Underwriting in einer Decision Model and Notation (DNM).

Kampf um ein paar Stunden Schlaf

Wir geben alles und machen solide Fortschritte. Da ich mir eine weitere kurze Nacht nicht leisten kann, habe ich mir vorgenommen, heute früher zu gehen. Ich bin zuversichtlich, denn gerade testen wir die Integration zum ersten Mal. Aber halt! Ein Fehler. Mist.

Die Suche nach der Ursache dauert eine ganze Weile. Kostbare Zeit schwindet dahin, bis wir endlich merken, woran es liegt: Die Kommunikation zwischen AI-Service und Backend funktioniert nicht.

Es ist schon nach 22 Uhr, als wir den Durchbruch schaffen: Wie geplant legt das Frontend Anträge an, der LLM-Service bewertet Sportarten nach Risikofaktor null bis zehn, die strukturierten Daten durchlaufen die Business-Rules in der BPMN-Engine, während das ML-Modell den Antrag prüft. Als am Ende das Ergebnis per Mail ankommt, ist klar, der wichtigste Meilenstein ist erreicht.

Jetzt fehlt nur noch die Integration weiterer Endpoints für die Bewertung des Gesundheitszustands und der Arbeitsfähigkeit. Mehr Arbeit als wir erhofft hatten. Gerade steigt das Grauen vor einer zweiten Nachtschicht in mir hoch, da erklärt sich Artur bereit, die verbleibenden Arbeiten zu übernehmen. Ich bin dankbar und erleichtert.

Sonntag: Pitch und Fazit – wir haben’s geschafft!

Artur arbeitet tapfer bis fünf Uhr in der Früh einen Berg von Aufgaben ab und gönnt sich dann doch noch ein Nickerchen auf einem der Sessel. Etwas später weckt ihn das Geschirrgeklapper des Putzpersonals. Der finale Tag ist angebrochen.

Erschöpft, aber hoch motiviert setzen wir zum Endspurt an. Wir finden nochmals einen kleinen Fehler in der DMN-Logik, der gesunden jungen Kunden fälschlich eine Absage erteilt. Keine grosse Sache, das Problem ist schnell gelöst.

Gegen 10 Uhr läuft das System stabil. Wir bekommen Unterstützung von unseren Kolleginnen und Kollegen. Die nag-Community testet fleissig. Alles funktioniert fehlerfrei.

Jetzt rasch noch die Screenshots für die Jury ins Repository gestellt, die Readme-Datei aktualisiert und abgeschickt. Es eilt, denn alles, was nach 12 Uhr committed wird, bedeutet Disqualifikation. Nur fünf Minuten bleiben uns noch, als wir den letzten Commit hochladen. Geschafft.

Während sich das Team mit Salaten und Sandwiches regeneriert, übt Sebastian seine Präsentation. Filipe Luis, Leiter Projects und Consulting bei der nag, besucht uns mit seiner Tochter und bringt Prosecco. Mit Stolz stossen wir auf das erfolgreiche Wochenende an.

Beachtliche Leistung – auch ohne Kür

Jetzt bleiben nur noch die Projektpräsentationen. Die Spannung steigt, denn anschliessend kürt die Jury das Siegerprojekt. Wir präsentieren als Dritte in der Reihe. Sebastian stellt unsere Lösung kurz und prägnant vor. Dann zeigt er live unsere fehlerfrei funktionierende Applikation. Kleines Extra: Die Jury und das Publikum dürfen sie sogar selbst ausprobieren.

Vier weitere Teams haben sich wie wir an der Challenge der Pax Versicherung versucht. Am Ende müssen wir den Sieg einem anderen Team überlassen. Das Team brilliert bei der Präsentation. Das nehmen wir als Learning für das nächste Mal gerne mit. Wir gratulieren und gönnen dem Team den Sieg.

Macht sich bei uns eine leise Enttäuschung über den Ausgang bemerkbar, dann nur, weil uns als Expertinnen und Experten klar ist: In 48 Stunden hat das Team in technischer und fachlicher Hinsicht Beachtliches geleistet. Wir haben eine betriebsbereite Lösung mit benutzerfreundlichem Frontend, einer BPMN-Engine im Backend und einer Datenverarbeitung mit AI- und ML-Services.

Auf dem Heimweg schreibt Kathrin im nag-Chat: «Danke fürs Daumendrücken und eure guten Wünsche! Wir haben zwar nicht gewonnen, aber mir persönlich hat es sehr Spass gemacht – vor allem mit so einem grossartigen Team! Ich bin jederzeit wieder dabei.»

Ähnliche Nachrichten folgen. Für einige im Team war es der erste Hackathon und, wie sie sagen, nicht der letzte. Für die Tochter von Filipe ist das allerdings schwer nachzuvollziehen:

«Papi, sind die echli blöd? Bis am vieri am Morge schaffe – und denn nit emol gwinne!»

Text & Bilder: David Übelacker, Samuel Rink
David Übelacker

Dein Kontakt


David Übelacker
Expert Software Architect | Partner