Senior AI Engineer Java Python
Profil DDO-003 · Deep Data Ocean
Senior AI Engineer und Software-Architekt mit mehr als sieben Jahren professioneller Softwareentwicklung, seit 2024 mit Schwerpunkt auf produktiven agentischen KI-Systemen und seit 2022 als Team Lead und Architekt verteilter Datenplattformen. Entwirft und baut LLM-Anwendungen in Python mit LangGraph-Agenten, hybrider Retrieval-Augmented Generation auf Qdrant mit BM25 und Reranking, MCP-Servern für den Werkzeugzugriff, Multi-Provider-Routing über OpenAI API, Claude und Google Gemini sowie Freigabeabläufen mit menschlicher Prüfung auf Basis von Celery und n8n. Bewertet Modelle und Pipelines mit LangSmith, Arize Phoenix und eigenen Benchmark-Studien und baut Evaluationsumgebungen für LLM-Reasoning und agentisches Programmieren. Frühere KI-Arbeit umfasst NLP-Stimmungsanalysen mit Amazon Comprehend und Predictive Analytics auf Elasticsearch in großen Nachrichtendienst- und Regulierungs-Datenplattformen. Im Backend entwirft er Spring-Boot- und Spring-Cloud-Microservices mit JPA auf PostgreSQL und MongoDB, abgesichert mit Spring Security und verbunden über Apache Kafka oder RabbitMQ, mit ETL-Pipelines in Apache NiFi und Python und Analysen auf Elasticsearch, ClickHouse und Apache Superset. Deployt mit Docker, Kubernetes und Helm über CircleCI-, Jenkins- oder GitHub-Actions-Pipelines auf AWS und Azure, mit Observability in Prometheus und Grafana, und hat ein Team von fünfzehn Entwicklern über Backend, Frontend und DevOps geführt. Frontend-Arbeit in ReactJS und TypeScript, mobile Entwicklung in Kotlin und Java für Android. Verhandlungssicher in Englisch.
Jahrgang 1996. Nigeria. Englisch (verhandlungssicher).
Tagessatz auf Anfrage
Technologien
Erfahrung aus den unten aufgeführten Projekten, überlappende Zeiträume einfach gezählt.
| Technologie | Erfahrung |
|---|---|
| Git | 8 Jahre |
| Java | 8 Jahre |
| AWS | 6,5 Jahre |
| AWS S3 | 6,5 Jahre |
| Docker | 6,5 Jahre |
| JPA | 6,5 Jahre |
| Maven | 6,5 Jahre |
| ReactJS | 6,5 Jahre |
| Spring | 6,5 Jahre |
| Spring Boot | 6,5 Jahre |
| Spring Security | 6,5 Jahre |
| Web Services | 6,5 Jahre |
| REST API | 6,5 Jahre |
| AWS EKS | 6 Jahre |
| PostgreSQL | 5,5 Jahre |
| Swagger | 5,5 Jahre |
| JavaScript | 5 Jahre |
| Android | 5 Jahre |
| Amazon Comprehend | 4,5 Jahre |
| Apache JMeter | 4,5 Jahre |
| Apache Kafka | 4,5 Jahre |
| Apache NiFi | 4,5 Jahre |
| Apache Superset | 4,5 Jahre |
| Azure | 4,5 Jahre |
| Azure AD | 4,5 Jahre |
| Azure Blob Storage | 4,5 Jahre |
| CircleCI | 4,5 Jahre |
| ClickHouse | 4,5 Jahre |
| Confluent | 4,5 Jahre |
| Elasticsearch | 4,5 Jahre |
| Flyway | 4,5 Jahre |
| Grafana | 4,5 Jahre |
| Helm | 4,5 Jahre |
| Kibana | 4,5 Jahre |
| Kubernetes | 4,5 Jahre |
| MongoDB | 4,5 Jahre |
| Natural Language Processing | 4,5 Jahre |
| Prometheus | 4,5 Jahre |
| Python | 4,5 Jahre |
| Spring Cloud | 4,5 Jahre |
| Spring Data JPA | 4,5 Jahre |
| TypeScript | 4 Jahre |
| MySQL | 2,5 Jahre |
| AI Agents | 2,5 Jahre |
| Android XML | 2,5 Jahre |
| C++ | 2,5 Jahre |
| JUnit | 2,5 Jahre |
| LLM | 2,5 Jahre |
| RLHF | 2,5 Jahre |
| Technologie | Erfahrung |
|---|---|
| Gradle | 2 Jahre |
| AWS EC2 | 2 Jahre |
| AWS RDS | 2 Jahre |
| JavaFX | 2 Jahre |
| RabbitMQ | 2 Jahre |
| SQLite | 2 Jahre |
| AndroidX | 2 Jahre |
| OpenAI API | 2 Jahre |
| Amazon SES | 1,5 Jahre |
| Angular | 1,5 Jahre |
| FXML | 1,5 Jahre |
| GitHub Actions | 1,5 Jahre |
| Hibernate | 1,5 Jahre |
| Impinj RFID | 1,5 Jahre |
| QuickBooks | 1,5 Jahre |
| RAIN RFID | 1,5 Jahre |
| Twilio | 1,5 Jahre |
| CSS | 1 Jahr |
| HTML | 1 Jahr |
| Java Swing | 1 Jahr |
| JDBC | 1 Jahr |
| Jenkins | 1 Jahr |
| Arize Phoenix | 1 Jahr |
| BM25 | 1 Jahr |
| Cohere Rerank | 1 Jahr |
| ELK Stack | 1 Jahr |
| GitHub | 1 Jahr |
| Hermes AI | 1 Jahr |
| LangGraph | 1 Jahr |
| LangSmith | 1 Jahr |
| Mapbox GL JS | 1 Jahr |
| MCP | 1 Jahr |
| Qdrant | 1 Jahr |
| RAG | 1 Jahr |
| Temporal | 1 Jahr |
| Whisper | 1 Jahr |
| Celery | 1 Jahr |
| Claude | 1 Jahr |
| Cytoscape.js | 1 Jahr |
| Google Gemini | 1 Jahr |
| n8n | 1 Jahr |
| Prompt Engineering | 1 Jahr |
| Slack API | 1 Jahr |
| Twitter API | 1 Jahr |
| Espresso | 4 Monate |
| Jetpack Compose | 4 Monate |
| Kotest | 4 Monate |
| Kotlin | 4 Monate |
| Retrofit | 4 Monate |
Projekte
Kunden nennen wir nach Branche, nicht mit Namen.
AI Engineer & Software-Architekt — Sentinel – geografische Lagebild-Plattform für Vorfälle mit agentischer KI
seit 10/2025
Sentinel ist eine geografische Lagebild-Plattform, die jahrelange Vorfallsdaten zu Nigeria aus mehreren öffentlichen Quellen zusammenführt und auf einem interaktiven Globus mit Heatmap-Ebenen und Drill-down nach Region, Kategorie und Einzelvorfall darstellt. Analysten stellen ihre Fragen in natürlicher Sprache oder per Stimme und erhalten Antworten, die auf dem Vorfallsbestand beruhen, während eine automatische Mustererkennung nicht offensichtliche Zusammenhänge zwischen Vorfällen nach Ort, Akteuren, Narrativ und Zeit aufdeckt. Die Plattform stellt ihre Vorfallsdaten jedem kompatiblen KI-Client als aufrufbare Werkzeuge bereit, sodass andere Systeme darauf aufbauen können. Sie richtet sich an Analysten von Behörden und Sicherheitsorganen, die schnell ein verlässliches Bild der Vorfallsmuster im Land benötigen.
Die Plattform ist in Python implementiert und liest Vorfallsdaten aus ACLED, GDELT, ReliefWeb und NewsAPI ein. Das Frontend ist mit ReactJS und TypeScript gebaut und stellt die Vorfälle auf einem Mapbox GL JS-Globus mit Heatmap-Ebenen, kategoriebasiertem Cluster-Drill-down und Seitenpanels je Vorfall mit Statistiken und Geokoordinaten dar. Drei LangGraph-Agenten auf Basis eines LLM bilden die KI-Schicht: ein RAG-Frage-Antwort-Agent nach dem ReAct-Muster, der Analystenfragen auf Grundlage des Vorfallsbestands beantwortet, ein Mustererkennungs-Agent nach dem Tree-of-Thoughts-Muster, der Hypothesen zu räumlicher Nähe, Akteursüberschneidung, Narrativähnlichkeit und zeitlicher Häufung parallel prüft, und ein Sprach-Agent, der Whisper-Spracherkennung, Intent-Routing und Sprachausgabe für die freihändige Bedienung von Karte und Daten verkettet; Hermes AI koordiniert diese AI Agents, ihre Aufgabenverteilung und ihren Lebenszyklus. Ein MCP-Server (Model Context Protocol) stellt die strukturierten Vorfallsdaten als aufrufbare Werkzeuge und typisierte Ressourcen bereit, die die Agenten per Function Calling nutzen, und macht die Daten so jedem MCP-kompatiblen Client zugänglich. Die hybride RAG-Pipeline kombiniert die Qdrant-Vektorsuche über dichte Embeddings aus der OpenAI API mit der BM25-Stichwortsuche und einem Cohere Rerank-Cross-Encoder; jede Anfrage wird um den aktuellen Kartenzustand angereichert, damit die Antworten den Kontext berücksichtigen. Temporal orchestriert die robusten Ingestions-Workflows aus mehreren Quellen vom Abruf über NLP-Anreicherung, Geokodierung und Deduplizierung bis zum Schreiben nach PostgreSQL und zum Vektor-Upsert in Qdrant, mit automatischer Wiederaufnahme am Fehlerpunkt. LangSmith protokolliert jede LLM-Interaktion knotenweise mit Token-Verbrauch und Latenz, Arize Phoenix überwacht Embedding-Drift und Retrieval-Qualität, und Prometheus und Grafana decken die Beobachtbarkeit der Infrastruktur ab. Er entwarf die Architektur, baute die Ingestions-Workflows, die Retrieval-Pipeline, die drei Agenten und den MCP-Server und richtete den Evaluations- und Observability-Stack ein.
Technologien: Python, LangGraph, LLM, AI Agents, RAG, OpenAI API, Qdrant, BM25, Cohere Rerank, MCP, Whisper, Temporal, PostgreSQL, LangSmith, Arize Phoenix, Hermes AI, Prometheus, Grafana, ReactJS, TypeScript, Mapbox GL JS
AI Engineer & Team Lead — Social-Media-Monitoring-Plattform mit parallelen KI-Agenten
10/2024 – 09/2025
Die Plattform überwacht für einen staatlichen Nachrichtendienst selbstständig konfigurierbare Suchbegriffe in sozialen Medien und analysiert jeden Treffer in mehreren Dimensionen wie Stimmung, Bedrohung, Schweregrad, Richtigkeit und Thema. Befunde mit hohem Schweregrad werden an menschliche Analysten weitergeleitet, und KI-generierte Antworten werden erst nach Freigabe durch einen Analysten veröffentlicht, sodass das System in einem sensiblen Umfeld autonom laufen kann, ohne eigenmächtig zu handeln. Interaktionsnetze zwischen Beiträgen und Nutzern werden visualisiert, um zu zeigen, wie sich Narrative verbreiten und wer sie beeinflusst. Eine Benchmark-Studie bestätigte vor der Inbetriebnahme die Wahl der Sprachmodelle und der Pipeline; das System ist im produktiven Einsatz zur laufenden Bedrohungsüberwachung.
Die Analyse ist eine Pipeline aus sieben parallelen Agenten in Python nach dem Celery-Orchestrator-Worker-Muster: Ein Dispatcher startet aus einem einzigen Ingestionsereignis spezialisierte AI Agents für Stimmungsanalyse, Bedrohungserkennung, Schweregradbewertung auf einer Skala von 1 bis 5, inhaltliche Richtigkeit, Themenklassifikation, Themenerkennung und Spracherkennung, die jeweils ein typisiertes JSON-Objekt über erzwungene strukturierte Ausgabe liefern. Vier n8n-Orchestrierungspipelines setzen robuste Abläufe für die Ingestionsplanung, die mehrstufige KI-Verteilung, das bedingte Routing von Bedrohungsalarmen und den Freigabeablauf mit menschlicher Prüfung um; sie kommunizieren über Webhooks mit Fehlerisolation und automatischer Wiederholung, und die Freigabeschleuse nutzt n8n-Wait-Knoten und die Slack API, damit KI-generierte Gegenantworten bis zur Prüfung durch einen Analysten zurückgehalten werden. Eine Routing- und Fallback-Schicht für mehrere LLM-Anbieter unterstützt die OpenAI API (GPT-4o-mini, GPT-3.5-turbo) und Claude (3 und 3.5 Sonnet) mit automatischem Failover, kostenoptimierter Modellwahl je Aufgabe und einer dreistufigen Degradationskette von LLM über regelbasierte Heuristiken zu deterministischen Vorgaben. Prompt Engineering mit aufgabenspezifischer Temperatur, Few-Shot-Beispielen in den Bedrohungsbewertungs-Prompts und expliziten Entscheidungsgrenzen in der Schweregrad-Rubrik gleicht die Modellausgabe an die Standards menschlicher Annotatoren an. Die Twitter API v2 dient der selbstständigen Beitragsaufnahme und der Veröffentlichung von Gegenantworten mit Ratenlimit-Erkennung, exponentiellem Backoff und Deduplizierung; Amazon Comprehend auf AWS reichert die Beiträge an und Celery Beat plant die wiederkehrenden Jobs. Interaktionsnetze der Beiträge werden als gerichtete Eigenschaftsgraphen in PostgreSQL modelliert und über Cytoscape.js für Einflussanalysen und die Ausbreitung von Narrativen dargestellt. Für das LLM-Evaluations- und Benchmarking-Framework führte er eine strukturierte Ablationsstudie mit GPT-4, Claude 3.5 Sonnet und Google Gemini über drei zunehmend angereicherte Pipeline-Versionen auf einem annotierten Datensatz von 500 Beiträgen durch, mit einem Zwei-Annotatoren-Protokoll, das per gewichtetem Cohen's Kappa (0,807) validiert wurde, und berechnete Konfusionsmatrizen sowie Precision, Recall und F1 je Klasse für datenbasierte Einführungsentscheidungen. Er entwarf die Architektur, implementierte die Agenten-Pipeline, die Orchestrierungsabläufe und die Anbieterschicht, leitete das Entwicklungsteam und brachte das System in Produktion.
Technologien: Python, Celery, n8n, LLM, AI Agents, Prompt Engineering, OpenAI API, Claude, Google Gemini, Twitter API, Slack API, PostgreSQL, AWS, Amazon Comprehend, Cytoscape.js
LLM Engineer — Evaluationssysteme und Benchmarks für LLM-Reasoning und agentisches Programmieren
seit 05/2024
Die Arbeit verbessert, wie große Sprachmodelle in realistischen, mehrstufigen Entwicklungsaufgaben abschneiden, statt in statischen Benchmarks. Evaluationssysteme simulieren Entwickler-Workflows auf der Kommandozeile und auf Android-Geräten, sodass sich messen lässt, wie gut ein Modell unter realen Bedingungen schlussfolgert, Werkzeuge nutzt und Code erzeugt. Adversariale Testfälle prüfen bekannte Schwächen und machen Fehlermuster sichtbar, was in das Modelltraining zurückfließt. Die Ergebnisse geben dem Modellanbieter ein klareres Bild der Grenzen im Schlussfolgern und senken die Fehlerraten in gezielten Kategorien.
Er entwickelte Evaluationssysteme für fortgeschrittene LLM-Fähigkeiten, darunter Terminal Bench und Android Terminal Bench, die die Modellleistung in Entwickler-Workflows auf der Kommandozeile und in Android-Umgebungen bewerten. Er entwarf automatisierte Testumgebungen und Benchmarking-Werkzeuge in Java, Python, TypeScript und C++, die reale Programmierszenarien, CLI-Aufgaben und Android-Interaktionsabläufe simulieren und so Effizienz und Verlässlichkeit der Evaluation erhöhen. Er wirkte an RLHF, agentischen Abläufen mit AI Agents, Side-by-Side-Evaluationen, Web-Game-Benchmarks und multimodalen Evaluationspipelines mit und entwickelte adversariale Testfälle, die Modellschwächen im Schlussfolgern, in der Werkzeugnutzung und in der Codegenerierung aufdecken.
Technologien: Java, Python, TypeScript, C++, LLM, AI Agents, RLHF, Android
Mobile Application Developer — Mobile Anwendung für Patienten-Biodatenmanagement und Pflegedienste
02/2023 – 05/2023
Mit der Anwendung „Biodata Management and Care Service“ können medizinische Fachkräfte und Pflegekräfte die Biodaten von Patienten für die Pflege von Krankenakten und als Referenz für zukünftige Behandlungen effizient verwalten. Darüber hinaus erleichtert diese Anwendung die Echtzeitverfolgung von Patientenstandorten zur Gesundheitsüberwachung und erhöht die Sicherheit. Davon profitieren Ärzte und die Familien der Patienten gleichermaßen.
Spring Boot wurde verwendet, um neue Funktionen in den bestehenden Java-Webdienstanwendungen zu entwickeln, die eine REST API bereitstellen. Maven diente dem Dependency Management und der Migration der Java- und Spring-Boot-Versionen auf neuere Versionen. Die mobile Anwendung wurde für Android in Kotlin entwickelt und nutzt Retrofit für die API-Integration. Jetpack Compose wurde zum Erstellen robuster Benutzeroberflächen der mobilen App verwendet. Java-Version, Android-SDK-Version und Abhängigkeiten der mobilen App werden über das Gradle-Build-Tool verwaltet. Jenkins diente als Deployment-Pipeline mit Jobs, die die mobile Anwendung bauten und an den App Store auslieferten; Git war die Versionsverwaltung. Er pflegte die bestehenden Java-Anwendungen und führte das Update von Spring Boot 2 auf Spring Boot 3 und von Java 11 auf Java 17 durch, wobei er Versionskonflikte der Abhängigkeiten durch Aktualisierung auf die neuesten Bibliotheken löste und die Log4j-Schwachstelle beseitigte. Er entwickelte und implementierte die mobile Anwendung in Kotlin mit der Benutzeroberfläche in Jetpack Compose, implementierte die API-Integration mit Retrofit und schrieb Unit-Tests mit Kotest sowie UI-Automatisierungstests mit Espresso. Er konfigurierte und richtete die Jenkins-Deployment-Pipeline für die mobile Anwendung ein.
Technologien: Java 17, Spring Boot 3, Maven, Kotlin, Android, Jetpack Compose, Retrofit, Gradle, Jenkins, Git, REST API, Kotest, Espresso
Java Software Architekt & Team Lead — Sicherheitsintelligenz- und Forensiksystem
seit 03/2022
Das Security Intelligence and Forensics System gibt einer nationalen Sicherheitsbehörde ein KI-gestütztes Lagebild krimineller und sicherheitsrelevanter Bedrohungen im ganzen Land. Es liest Mobiltelefon-Extrakte, abgefangene Kommunikation sowie Telekommunikations-, Geolokations- und Gerätedaten in Chargen von einem Terabyte und mehr ein und wendet Natural Language Processing an, um Stimmung und Inhalt von Nachrichtendaten zu klassifizieren. Trainierte Modelle und Predictive Analytics decken Muster in den korrelierten Daten auf, Kommunikationsnetze zwischen vielen Personen werden analysiert und Standortanalysen verorten Akteure und Ereignisse auf der Karte. Das System verkürzte die Verarbeitung von rund einer Stunde auf 15 bis 20 Minuten und gibt Ermittlern nahezu in Echtzeit Zugriff auf korrelierte Erkenntnisse, die zuvor in getrennten Systemen lagen.
Die KI- und Analyseschicht ist der Kern des Systems: Python-Skripte in der Apache-NiFi-Pipeline rufen Amazon Comprehend für Natural Language Processing auf und klassifizieren die Stimmung mobiler Nachrichtendaten, und ein in Elasticsearch konfiguriertes trainiertes Modell liefert Predictive Analytics über die korrelierten Erkenntnisse, die Kibana für die Analysten visualisiert. Das System besteht aus miteinander verbundenen Anwendungen, von denen jede eine bestimmte Funktion bei der Datenanalyse und -verarbeitung erfüllt. Als Cloud-Plattform für die Bereitstellung der gesamten Anwendung wurde AWS verwendet. Die untersuchten forensischen Daten und mobilen Extrakte wurden in AWS S3 Buckets hochgeladen, aus denen sie in eine Datenpipeline eingelesen wurden. Kibana spielt eine zentrale Rolle bei der Datenvisualisierung und -analyse und ermöglicht gleichzeitig prädiktive Analysen. Elasticsearch dient als Analysedatenspeicher und bietet erweiterte Such- und Analysefunktionen. Apache NiFi fungiert als Datenpipeline und verarbeitet ETL-Prozesse (Extrahieren, Transformieren, Laden) einschließlich Datenbereinigung, -manipulation, -anreicherung und Modelltraining. Eine mit ReactJS entwickelte Front-End-Anwendung bildet zusammen mit mehreren Java Spring Boot Microservices, die Web Services mit einer REST API bereitstellen, das Rückgrat des Systems. Diese Microservices speichern Daten in einer PostgreSQL-Datenbank und integrieren APIs von Drittanbietern, um Daten anzureichern und Operational-Intelligence-Daten zu speichern. Spring Data JPA wird als Datenzugriffsschicht über den Datenbanken verwendet. Maven dient als Build-Automatisierungs- und Abhängigkeitsmanagement-Tool in den Spring Boot Diensten. Python-Skripte automatisieren verschiedene Datenverarbeitungsvorgänge in NiFi und binden Amazon Comprehend zur Stimmungsanalyse mobiler Nachrichtendaten an. Um Flexibilität und Skalierbarkeit der Bereitstellung zu gewährleisten, werden alle Anwendungen mit Docker in Container verpackt und über eine CircleCI-Pipeline in Kubernetes-Clustern bereitgestellt. Kubernetes, verwaltet auf AWS EKS, ist so konfiguriert, dass es mit Helm Charts robuste Skalierungsfunktionen bietet und die Ressourcenzuteilung dynamisch anpasst, wenn die Verarbeitungslast schwankt. Helm ermöglicht eine einfache Verwaltung und Versionierung der Kubernetes-Ressourcen, vereinfacht den Bereitstellungsprozess und ermöglicht nahtlose Updates. Swagger wurde verwendet, um die API-Dokumentation bereitzustellen und so klare Kommunikations- und Integrationsmöglichkeiten über alle Dienste hinweg sicherzustellen; Git diente als Versionsverwaltung. Als Architekt und Team Lead arbeitete er mit Product Owner und Business-Analysten an der Definition funktionaler und nichtfunktionaler Anforderungen und wählte geeignete Technologien, Frameworks und Tools aus. Er entwickelte die Datenpipeline für die ETL-Verarbeitung und Datenanreicherung, schrieb benutzerdefinierte Datenprozessoren in Apache NiFi und konfigurierte die NiFi-Kommunikation mit dem AWS S3 Bucket, PostgreSQL und der Elasticsearch-Datenbank über NiFi-Prozessoren. Er richtete das Elasticsearch- und Kibana-Deployment ein, entwarf das Elasticsearch-Index-Mapping zur Optimierung der Speicher- und Abfrageperformance und konfigurierte ein trainiertes Modell für Predictive Analytics in Elasticsearch. Er entwickelte Spring Boot Microservices zur Integration von Drittanbieter-APIs für die Datenanreicherung, entwarf und implementierte Performancetests zur Bewertung der Anwendungsperformance und richtete Performance-Reports, Service Monitoring und Alerting mit Prometheus und Grafana ein.
Technologien: Java, Spring Boot, Spring Data JPA, Python, Swagger, Apache NiFi, Maven, Web Services, REST API, Elasticsearch, Kibana, PostgreSQL, ReactJS, Docker, Kubernetes, Helm, CircleCI, AWS, AWS S3, AWS EKS, Amazon Comprehend, Prometheus, Grafana, Git, Natural Language Processing
Java Software Architekt & Team Lead — Automatisierte Datenregulierungs- und Analysesoftware für eine Zentralbank
seit 03/2022
Die Automated Data Regulatory and Analytics Software ermöglicht einer Zentralbank, die Kennzahlen von mehr als 1.300 Finanzinstituten anhand der regelmäßig einzureichenden Meldedaten zu überwachen: Finanztransaktionen, KYC- und AML-Daten, Service-Compliance, Betriebsdaten und Betrugsmeldungen. Die Daten werden validiert, angereichert und für Predictive Analytics aufbereitet, sodass Anomalien und Risikomuster über zweistellige Milliarden von Transaktionen ohne manuellen Abgleich sichtbar werden. Analysten arbeiten mit Vorhersagemodellen und Dashboards statt mit Tabellen, und Compliance-Durchsetzung und Risikoerkennung stützen sich auf eine zentrale, aktuelle Datenbasis. Die Plattform stärkte die AML-Überwachung und Risikoanalyse im gesamten Finanzsektor des Landes.
Die Analyseschicht bereitet die eingereichten Finanz-, KYC-, AML- und Betrugsdaten für Predictive Analytics auf: Elasticsearch hält die Geschäftsanalysedaten und führt die Vorhersagemodelle aus, Kibana visualisiert sie für die Analysten, und ClickHouse mit Apache Superset übernimmt die operative Analyse. Das System umfasst mehrere miteinander verbundene Anwendungen, die verschiedene Azure-Cloud-Dienste nutzen und in der Azure-Umgebung bereitgestellt werden. Dazu gehören ein mit ReactJS erstelltes Datenübermittlungsportal, über das die Institute die erforderlichen Meldedaten einreichen, und ein in Java mit Spring Boot und Spring Cloud entwickeltes Microservice-Backend, das mit Maven für Build-Automatisierung und Abhängigkeitsmanagement verwaltet wird und Web Services mit einer REST API bereitstellt. Die Dienste kommunizieren über Apache Kafka in der Confluent Cloud und speichern Daten über JPA als Datenzugriffsschicht in PostgreSQL (strukturierte Daten) und MongoDB (unstrukturierte Daten). Dokumente liegen zur effizienten Objektspeicherung in Azure Blob Storage; zum Versand von Benachrichtigungen binden die Microservices Azure Communication Services an. Die ETL-Verarbeitung mit Apache NiFi, unterstützt durch eigene Python-Skripte, übernimmt die Validierung der Dokumentdaten, wobei benutzerdefinierte NiFi-Datenprozessoren für domänenspezifische Datenoperationen entwickelt wurden. Überwachung und Alarmierung der Spring Boot Microservices erfolgen mit Prometheus und Grafana. Elasticsearch dient als Persistenz für Geschäftsanalysen und wird zusammen mit Kibana zur Visualisierung, Analyse und für Predictive Analytics verschiedener Finanzdaten verwendet. Für die operative Analyse der in PostgreSQL gespeicherten Daten kommen ClickHouse und Apache Superset zum Einsatz. Apache JMeter wird für Leistungs- und Lasttests verwendet, während Flyway Datenbankänderungen und Migrationen steuert. Alle Anwendungen werden mit Docker in Container verpackt und über eine CircleCI-Pipeline auf Kubernetes und Azure-VM-Instanzen bereitgestellt; Git ist das Versionsverwaltungssystem. Als Architekt und Team Lead arbeitete er mit Product Ownern und Business-Analysten an der Definition funktionaler und nichtfunktionaler Anforderungen und wählte geeignete Technologien, Frameworks und Tools aus. Er entwickelte die Datenpipeline für ETL-Verarbeitung und Datenanreicherung, schrieb benutzerdefinierte Datenprozessoren in Apache NiFi und konfigurierte die NiFi-Kommunikation mit Azure Blob Storage, Confluent Kafka und der Elasticsearch-Datenbank über NiFi-Prozessoren. Er richtete das Elasticsearch- und Kibana-Deployment ein und entwarf das Elasticsearch-Index-Mapping zur Optimierung der Speicher- und Abfrageleistung. Er implementierte einen mehrstufigen Sicherheitsmechanismus in den Microservices mit Spring Security und Azure OAuth auf Basis von Azure AD (Active Directory) sowie abgesicherte API-Endpunkte mit Zugriffsrechteverwaltung und Anforderungsautorisierung. Er implementierte mehrere Microservices wie Gateway, Discovery-Server, Konfigurationsserver, Benachrichtigungsdienst und Kernbibliotheksdienst und stellte eine konsolidierte API-Dokumentation über den Spring Cloud Gateway-Dienst mit Swagger bereit. Er konfigurierte die serviceübergreifende Kommunikation mit Apache Kafka in der Confluent Cloud und verwaltete dort die Kafka-Cluster, Topics und die Schema-Registry. Er entwarf und implementierte Performancetests, richtete Performance-Reports, Service Monitoring und Alerting mit Prometheus und Grafana ein und führte ein JVM-Tuning mit Schwerpunkt auf Speicherverwaltung, Garbage Collection und Ausführungsgeschwindigkeit durch, um Leistung, Ressourcenverbrauch und Stabilität der Java-Anwendungen zu verbessern.
Technologien: Java, Spring Boot, Spring Cloud, Spring Security, JPA, Swagger, Apache NiFi, Python, Maven, Web Services, REST API, Elasticsearch, Kibana, PostgreSQL, MongoDB, ReactJS, Docker, Kubernetes, CircleCI, Azure, Azure AD, Azure Blob Storage, Apache Kafka, Confluent, Prometheus, Grafana, Apache Superset, ClickHouse, Apache JMeter, Flyway, Git
Microservice Engineer — Anwendung zur Auflösung und Wiedererfassung von Rentner-Biodaten
02/2021 – 02/2022
Die Anwendung „Pensioner Biodata Resolution and Recapture“ hilft einer nationalen Rentenaufsicht, mehr als 30 Millionen Rentner neu zu validieren und Identitätsbetrug in öffentlichen und privaten Rentensystemen zu beseitigen. Die Identität wird mit biometrischer Erfassung und Gesichtserkennung gegen das nationale Identitätsregister geprüft, was Betrüger und Doppeleinträge aufdeckt, die manuelle Prüfungen übersehen hatten. Außendienstteams in mehr als 1.000 Erfassungszonen arbeiten ohne Netz offline und synchronisieren später, sodass echte Rentner ihre Renten ohne Unterbrechung weiter erhalten. Das Ergebnis ist eine validierte, konsistente Rentnerdatenbank mit deutlich weniger Abweichungen zwischen den Systemen.
Die Identitätsprüfung verbindet biometrische Daten mit einem Gesichtserkennungsdienst und der nationalen Identitäts-API: Im Außendienst erfasste Fingerabdrücke, Webcam-Bilder und Dokumente werden gegen das Register abgeglichen, um jeden Rentner zu bestätigen. ReactJS wurde bei der Entwicklung der Webanwendung verwendet, die sich in die mit Java und Spring Boot entwickelten und mit Maven gebauten Backend-Microservice-APIs integriert. Die Backend-Microservices nutzen JPA als Persistenzschicht über einer PostgreSQL-Datenbank auf AWS RDS, in der Daten gespeichert und gelesen werden. RabbitMQ ermöglicht den Microservices eine verteilte, nicht blockierende Kommunikation. Spring Security sichert alle exponierten Endpunkte der Microservices durch Authentifizierung und Autorisierung ab. JavaFX wurde für eine Desktop-Anwendung verwendet, die die Datenwiedererfassung in abgelegenen Gebieten ermöglicht; sie nutzt eine lokale SQLite-Datenbank, um Daten lokal zu speichern und später zu übertragen, sobald eine Netzwerkverbindung besteht. Ein Microservice-Backend stellt Web Services mit einer REST API für Web- und Desktop-Anwendung bereit und erleichtert Drittanbieter-Integrationen einschließlich Gesichtserkennung. Die Microservices und die Frontend-Anwendung wurden mit Docker in Container verpackt und über eine Jenkins-Pipeline mit Jobs zur CI/CD-Automatisierung auf AWS EC2 Instanzen bereitgestellt. AWS S3 Buckets dienen als Objektspeicher für in die Anwendung hochgeladene Dokumente. GitHub mit Git war das Versionskontrollsystem, und Swagger stellt die API-Dokumentation für eine nahtlose Integration bereit. Er arbeitete mit Product Owner und Business-Analysten an der Definition funktionaler und nichtfunktionaler Anforderungen und wählte geeignete Technologien, Frameworks und Tools aus. Er entwickelte und implementierte die ereignisgesteuerte Spring Boot Microservice-Architektur, sicherte die exponierten APIs über mehrere Microservices hinweg mit Spring Security ab, konfigurierte die Swagger-API-Dokumentation innerhalb der Architektur und implementierte die Audit-Protokollierung der Microservices. Er konfigurierte die Interservice-Kommunikation mit RabbitMQ, richtete das RabbitMQ-Deployment in der CI/CD-Pipeline ein und optimierte RabbitMQ über die Management Console. Er implementierte die CI/CD-Pipeline mit Jenkins und entwickelte die JavaFX-Desktop-Software einschließlich der Integration eines Fingerabdruckscanners, einer Webcam zur Bilderfassung und eines Handdokumentenscanners. Außerdem konfigurierte er Serviceüberwachung und Alarmierung mit dem ELK Stack.
Technologien: Java, Spring Boot, JPA, Spring Security, Swagger, Web Services, REST API, JavaFX, PostgreSQL, SQLite, RabbitMQ, ReactJS, Maven, Docker, AWS, AWS EC2, AWS S3, AWS RDS, Jenkins, GitHub, Git, ELK Stack
Android Developer — Mobile Anwendung zur Patientendiagnostik (PMTCT)
05/2020 – 05/2022
Die mobile Anwendung für medizinische Diagnostik unterstützte Ärzte bei der genauen Diagnose von PMTCT- (Prevention of Mother To Child Transmission) und Nicht-PMTCT-HIV-Infektionen bei betroffenen Personen, darunter Mütter, Säuglinge und ungeborene Kinder. Ziel war es, Ärzte dabei zu unterstützen, die Übertragung des Virus von der Mutter auf das Kind wirksam zu verhindern. Dies führte zu deutlich verbesserten Präventionsergebnissen und einer Steigerung der Effizienz der Ärzte um 50 %.
Die mobile Anwendung wurde für Android in Java entwickelt und nutzt die Spring Core-Abhängigkeit für Android zur Integration der REST API Endpunkte des Backends. Android XML wurde zur Implementierung einer benutzerfreundlichen Oberfläche verwendet, die den Benutzern eine nahtlose Interaktion mit der Anwendung ermöglicht. Gradle diente als Build- und Abhängigkeitsverwaltungstool, in dem Java-Version, Android-Version und weitere erforderliche Abhängigkeiten konfiguriert wurden. Git war die Versionsverwaltung. Er entwickelte und implementierte die mobile Anwendung in Java, baute die Benutzeroberfläche mit AndroidX und XML, implementierte die API-Integration über die Spring-Abhängigkeit für Android, schrieb Unit-Tests mit JUnit und führte die Updates der Gradle-Version und der Abhängigkeitsversionen durch.
Technologien: Java, Android, AndroidX, Android XML, Spring, Gradle, JUnit, Git, REST API
Software Developer — Einkaufs-, Bestandsverwaltungs- und Überwachungssystem für Einzelhandelsgeschäfte
12/2019 – 06/2021
Die Anwendung „Retail Store Shopping and Inventory Management“ ist eine umfassende Softwaresuite, die das Einkaufserlebnis der Kunden durch Minimierung der Wartezeiten an der Kasse verbessert. Darüber hinaus bietet sie Funktionen zur Bestandsverwaltung und -überwachung. Diese ermöglichen es Ladenbesitzern, Lagerbestände effizient zu verwalten, das tägliche Verkaufsgeschäft abzuwickeln und Produktdiebstahl in Einzelhandelsgeschäften oder Lagern wirksam zu verhindern.
Zur Suite gehört eine mobile Self-Checkout-App für Kunden, die für Android in Java entwickelt wurde und deren Benutzeroberfläche in Android XML implementiert ist. Ein webbasiertes Bestandsverwaltungssystem für das tägliche Verkaufsgeschäft und die Bestandskontrolle wurde mit ReactJS im Frontend und Java mit Spring Boot für die Backend-Microservices entwickelt, die Web Services bereitstellen; eine weitere webbasierte Einzelhandelslösung entstand mit Angular. Die Microservices nutzen Maven für Build-Automatisierung und Abhängigkeitsmanagement und speichern Daten über JPA und Hibernate in einer MySQL-Datenbank auf AWS RDS. RabbitMQ wurde auf den Diensten für die Nachrichtenkommunikation zwischen den Diensten eingerichtet und konfiguriert. Twilio-Dienste wurden in das Backend integriert, um E-Mail- und SMS-Benachrichtigungen bereitzustellen und Marketingkampagnen zu unterstützen. JavaFX wird für das Bestandsüberwachungssystem verwendet, eine Desktop-Anwendung, die sich nahtlos in das Backend integriert; in Java wurde der Integrationscode für die Impinj RFID Lesegeräte und Antennen auf Basis der Impinj-Java-Dokumentation geschrieben. Die Webanwendungen wurden mit Docker in Container verpackt und mit GitHub Actions als CI/CD-Pipeline auf AWS bereitgestellt. Auf AWS laufen die Container der Webanwendungen auf AWS EC2 Instanzen, AWS RDS dient den Spring Boot Diensten als Datenspeicher, Amazon SES versendet die E-Mail-Benachrichtigungen, AWS EKS sorgt für robuste Skalierung durch dynamische Anpassung der Ressourcen an die Last, und AWS S3 Buckets speichern Dokumente und Inventarbilder. Er arbeitete mit dem Product Owner an der Definition funktionaler und nichtfunktionaler Anforderungen. Er entwickelte und implementierte eine ereignisgesteuerte Spring Boot Microservice-Architektur mit Inventar-, Kunden-, Kauf-, Einzelhandelskern-, Batch-Job-, Gateway-, Benachrichtigungs-, Discovery-Server-, Konfigurationsserver- und Kreditkartendiensten, sicherte Kreditkartendaten durch Tokenisierung im Kreditkarten-Microservice, konfigurierte Single Sign-On mit Spring Security und Google und sicherte die exponierten APIs über mehrere Microservices hinweg mit Spring Security ab. Er entwickelte die mobile Selbstbedienungskassen-App und das Desktop-Bestandsüberwachungssystem mit Impinj RFID Integration in Java und JavaFX, befähigte die Desktop-Software zur Nutzung eines RFID-Antennen-Hubs mit mehreren Antennen und prüfte die Geräteintegration mit JUnit-Integrationstests. Er entwickelte und integrierte mehrere Zahlungsgateways, einen Batch-Job-Dienst für Planung, Datensynchronisierung und Massen-Inventar-Uploads, die Anbindung des Benachrichtigungsdienstes an die Twilio-APIs für E-Mails, SMS und Marketingkampagnen sowie eine QuickBooks-Integration zur Vereinheitlichung bestehender und neuer Systeme.
Technologien: Java, Spring Boot, Spring Security, JPA, Hibernate, MySQL, RabbitMQ, ReactJS, Angular, Android, Android XML, Maven, JavaFX, Impinj RFID, JUnit, Docker, AWS, AWS EC2, AWS S3, AWS RDS, AWS EKS, Amazon SES, GitHub Actions, Twilio, QuickBooks, Web Services
Software Developer — Bestandsüberwachungssystem für Einzelhandelsgeschäfte und Lager mit RAIN RFID
12/2019 – 06/2021
Das Bestandsüberwachungssystem für Einzelhandelsgeschäfte und Lager ist eine Desktop-Lösung, die RAIN-RFID-Geräte nutzt, um markierte Bestandsartikel zu erkennen und zu verfolgen. Das System stellt sicher, dass Artikel nicht ohne Bezahlung aus dem Geschäft entfernt werden, indem es eine Warnung ausgibt, wenn unbezahlte Artikel das Geschäft verlassen. Darüber hinaus erkennt es mögliche Beschädigungen an Etiketten, wenn jemand versucht, sie zu entfernen, um Gegenstände zu stehlen.
Das Bestandsüberwachungssystem ist eine in Java mit JavaFX und FXML entwickelte Desktop-Anwendung auf einem Spring-basierten Anwendungskern, der mit Maven gebaut wird. SQLite dient als lokale Datenbank zur dauerhaften Speicherung der Betriebsdaten des Überwachungssystems, und Hibernate stellt eine High-Level-API für die Datenbankkommunikation der Desktop-Anwendung bereit. RabbitMQ wird als Ereignisbus zur Weitergabe von Ereignissen für die verteilte Verarbeitung verwendet. Mit Java und der Impinj-Dokumentation wurde der Integrationscode für den Impinj RFID Reader entwickelt, damit die Desktop-Anwendung den RAIN RFID Reader bei der Bestandsüberwachung steuern kann, und der Antennenbus des Lesegeräts für mehrere Antennen konfiguriert. Git war die Versionsverwaltung. Er definierte klare Ziele und Teilaufgaben für die Umsetzung der Lösung und arbeitete sich umfassend in die RAIN-RFID-Dokumentation und Integrationsleitfäden ein. Er entwarf die Softwarearchitektur als konzeptionelle Schicht zwischen Software- und Hardwarekomponenten, entwickelte die Java-Klassen mit der Betriebslogik für RFID-Lesegeräte und -Antennen und implementierte Multithreading, um die Konnektivität des Lesegeräts von der Tag-Erkennung der Antennen zu trennen. Er befähigte die Desktop-Software zur Nutzung eines RFID-Antennen-Hubs mit mehreren Antennengeräten, prüfte die Geräteintegration mit JUnit-Integrationstests und arbeitete mit Hardware-Ingenieuren an der nahtlosen Integration der RFID-Geräte. Er entwarf und entwickelte die Benutzeroberflächen zur Konfiguration und Überwachung der RFID-Geräte, implementierte die Fehlerbehandlung für Kommunikationsfehler und Gerätefehlfunktionen, führte Leistungstests des RFID-Systems unter verschiedenen Lastbedingungen durch und dokumentierte Architektur, Designentscheidungen und Implementierungsdetails.
Technologien: Java, Spring, Hibernate, Maven, SQLite, RabbitMQ, JavaFX, FXML, RAIN RFID, Impinj RFID, JUnit, Git
Java Developer — Desktop-Werkzeuge und Web-Frontends: Effizienzrechner, QR-Code-Scanner, Überwachung
08/2018 – 12/2019
Eine Reihe von Kundenanwendungen für ein Ingenieur- und Informationsdienstleistungs-unternehmen. Das zentrale Produkt war ein Desktop-basierter Rechner für die Effizienz mechanischer Stecker, mit dem Ingenieure die Effizienzkennzahlen einer Maschine berechnen, statt dies von Hand zu tun. Weitere Werkzeuge waren ein QR-Code-Scanner und eine Bildwasserzeichenanwendung sowie Web-Frontends für ein Videoüberwachungssystem und eine Gesichtserkennungsanwendung. Die Anwendungen wurden gemeinsam mit den Kunden spezifiziert und mit Schulung und Support bei den Endbenutzern eingeführt.
Java und Java Swing wurden für die Mitarbeit an den Desktop-Anwendungen verwendet, nämlich dem Effizienzrechner für mechanische Stecker, dem QR-Code-Scanner und der Bildwasserzeichenanwendung. Diese Anwendungen nutzen JDBC, um zur Datenpersistenz eine Verbindung zu einer MySQL-Datenbank herzustellen. HTML, CSS und JavaScript wurden für die Mitarbeit an den Web-Frontends des Videoüberwachungssystems und der Gesichtserkennungsanwendung verwendet; Git war die Versionsverwaltung. Er arbeitete eng mit den Kunden an klaren Spezifikationen und Systementwürfen und führte Anforderungsworkshops mit den Stakeholdern durch. In einem kleinen Team verbesserte er die Effizienzberechnung einer Maschine, woraus der Desktop-Rechner hervorging, für den er intuitive Benutzeroberflächen in Java Swing entwarf, die Algorithmen und mathematischen Modelle für die Effizienzkennzahlen implementierte und deren Genauigkeit mit Fachexperten validierte. Er führte Usability-Tests durch, leistete technischen Support und Schulungen für die Endbenutzer, dokumentierte Anforderungen, Designspezifikationen und Implementierungsdetails und nahm an regelmäßigen Teambesprechungen und Brainstorming-Sitzungen teil.
Technologien: Java, Java Swing, JDBC, MySQL, HTML, CSS, JavaScript, Git
Passt das Profil zu deinem Projekt?
Schick uns die Anforderung und nenne die Profilnummer DDO-003. Du bekommst eine klare Antwort: ob es passt und ab wann.
