Senior AI Engineer Java Python
Profile DDO-003 · Deep Data Ocean
Senior AI engineer and software architect with more than seven years of professional software development, since 2024 focused on production-grade agentic AI systems and since 2022 as team lead and architect of distributed data platforms. Designs and builds LLM applications in Python with LangGraph agents, hybrid retrieval-augmented generation on Qdrant with BM25 and reranking, MCP servers for tool access, multi-provider routing across the OpenAI API, Claude and Google Gemini, and human-in-the-loop approval flows with Celery and n8n. Evaluates models and pipelines with LangSmith, Arize Phoenix and his own benchmarking studies, and builds evaluation harnesses for LLM reasoning and agentic coding. Earlier AI work covers NLP sentiment analysis with Amazon Comprehend and predictive analytics on Elasticsearch inside large intelligence and regulatory data platforms. On the backend side he designs Spring Boot and Spring Cloud microservices with JPA on PostgreSQL and MongoDB, secured with Spring Security and connected through Apache Kafka or RabbitMQ, with ETL pipelines in Apache NiFi and Python and analytics on Elasticsearch, ClickHouse and Apache Superset. Deploys with Docker, Kubernetes and Helm through CircleCI, Jenkins or GitHub Actions on AWS and Azure, with observability in Prometheus and Grafana, and has led a team of fifteen engineers across backend, frontend and DevOps. Frontend work in ReactJS and TypeScript, mobile work in Kotlin and Java for Android. Business fluent in English.
Born 1996. Nigeria. English (business fluent).
Day rate on request
Technologies
Experience derived from the projects listed below; overlapping periods counted once.
| Technology | Experience |
|---|---|
| Git | 8 years |
| Java | 8 years |
| AWS | 6.5 years |
| AWS S3 | 6.5 years |
| Docker | 6.5 years |
| JPA | 6.5 years |
| Maven | 6.5 years |
| ReactJS | 6.5 years |
| Spring | 6.5 years |
| Spring Boot | 6.5 years |
| Spring Security | 6.5 years |
| Web Services | 6.5 years |
| REST API | 6.5 years |
| AWS EKS | 6 years |
| PostgreSQL | 5.5 years |
| Swagger | 5.5 years |
| JavaScript | 5 years |
| Android | 5 years |
| Amazon Comprehend | 4.5 years |
| Apache JMeter | 4.5 years |
| Apache Kafka | 4.5 years |
| Apache NiFi | 4.5 years |
| Apache Superset | 4.5 years |
| Azure | 4.5 years |
| Azure AD | 4.5 years |
| Azure Blob Storage | 4.5 years |
| CircleCI | 4.5 years |
| ClickHouse | 4.5 years |
| Confluent | 4.5 years |
| Elasticsearch | 4.5 years |
| Flyway | 4.5 years |
| Grafana | 4.5 years |
| Helm | 4.5 years |
| Kibana | 4.5 years |
| Kubernetes | 4.5 years |
| MongoDB | 4.5 years |
| Natural Language Processing | 4.5 years |
| Prometheus | 4.5 years |
| Python | 4.5 years |
| Spring Cloud | 4.5 years |
| Spring Data JPA | 4.5 years |
| TypeScript | 4 years |
| MySQL | 2.5 years |
| AI Agents | 2.5 years |
| Android XML | 2.5 years |
| C++ | 2.5 years |
| JUnit | 2.5 years |
| LLM | 2.5 years |
| RLHF | 2.5 years |
| Technology | Experience |
|---|---|
| Gradle | 2 years |
| AWS EC2 | 2 years |
| AWS RDS | 2 years |
| JavaFX | 2 years |
| RabbitMQ | 2 years |
| SQLite | 2 years |
| AndroidX | 2 years |
| OpenAI API | 2 years |
| Amazon SES | 1.5 years |
| Angular | 1.5 years |
| FXML | 1.5 years |
| GitHub Actions | 1.5 years |
| Hibernate | 1.5 years |
| Impinj RFID | 1.5 years |
| QuickBooks | 1.5 years |
| RAIN RFID | 1.5 years |
| Twilio | 1.5 years |
| CSS | 1 year |
| HTML | 1 year |
| Java Swing | 1 year |
| JDBC | 1 year |
| Jenkins | 1 year |
| Arize Phoenix | 1 year |
| BM25 | 1 year |
| Cohere Rerank | 1 year |
| ELK Stack | 1 year |
| GitHub | 1 year |
| Hermes AI | 1 year |
| LangGraph | 1 year |
| LangSmith | 1 year |
| Mapbox GL JS | 1 year |
| MCP | 1 year |
| Qdrant | 1 year |
| RAG | 1 year |
| Temporal | 1 year |
| Whisper | 1 year |
| Celery | 1 year |
| Claude | 1 year |
| Cytoscape.js | 1 year |
| Google Gemini | 1 year |
| n8n | 1 year |
| Prompt Engineering | 1 year |
| Slack API | 1 year |
| Twitter API | 1 year |
| Espresso | 4 months |
| Jetpack Compose | 4 months |
| Kotest | 4 months |
| Kotlin | 4 months |
| Retrofit | 4 months |
Projects
Clients are named by sector, not by name.
AI Engineer & Software Architect — Sentinel – geospatial incident intelligence platform with agentic AI
since 10/2025
Sentinel is a geospatial intelligence platform that aggregates years of incident data for Nigeria from several public sources and presents it on an interactive globe with heatmap layers and drill-down browsing per region, category and incident. Analysts ask questions in natural language or by voice and get answers grounded in the incident corpus, while an automated pattern detection surfaces non-obvious connections between incidents by location, actors, narrative and time. The platform makes its incident data available to any compatible AI client as callable tools, so that other systems can build on it. It serves government and security analysts who need a fast, reliable picture of incident patterns across the country.
The platform is implemented in Python and ingests incident data from ACLED, GDELT, ReliefWeb and NewsAPI. The frontend is built with ReactJS and TypeScript and renders the incidents on a Mapbox GL JS globe with heatmap layers, category-based cluster drill-down and per-incident side panels with statistics and geolocation coordinates. Three LangGraph agents form the AI layer, all built on an LLM: a ReAct-pattern RAG question-and-answer agent that answers analyst queries grounded in the incident corpus, a Tree-of-Thoughts pattern detection agent that explores geographic proximity, actor overlap, narrative similarity and temporal clustering hypotheses in parallel, and a voice agent that chains Whisper speech-to-text, intent routing and text-to-speech for hands-free interaction with map and data; Hermes AI coordinates these AI Agents, their task delegation and lifecycle. An MCP server (Model Context Protocol) exposes the structured incident data as callable tools and typed resources that the agents consume via function calling, making the data accessible to any MCP-compatible client. The hybrid RAG pipeline combines Qdrant vector search over dense embeddings from the OpenAI API with BM25 sparse keyword search and Cohere Rerank cross-encoder reranking, and every query is enriched with the live map state for context-aware answers. Temporal orchestrates the durable multi-source ingestion workflows from fetch through NLP enrichment, geocoding and deduplication to the PostgreSQL write and the Qdrant vector upsert, with automatic retry from the failure point. LangSmith traces every LLM interaction node by node with token usage and latency, Arize Phoenix monitors embedding drift and retrieval quality, and Prometheus and Grafana cover the infrastructure observability. He designed the architecture, built the ingestion workflows, the retrieval pipeline, the three agents and the MCP server, and set up the evaluation and observability stack.
Technologies: 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 intelligence and monitoring platform with parallel AI agents
10/2024 – 09/2025
The platform autonomously monitors configurable search keys on social media for a government intelligence client and analyses every matching post along several dimensions such as sentiment, threat, severity, accuracy and topic. High-severity findings are routed to human analysts, and AI-generated responses are only published after an analyst has approved them, so that the system can run autonomously in a sensitive context without acting on its own. Interaction networks between posts and users are visualised to show how narratives spread and who influences them. A benchmarking study validated the choice of language models and pipeline before the system went live; it is in production use for continuous threat monitoring.
The analysis is a 7-agent parallel pipeline in Python using a Celery orchestrator-worker pattern: a dispatcher spawns specialist AI Agents for sentiment analysis, threat identification, threat severity assessment on a 1–5 rubric, content accuracy, issue classification, issue identification and language detection from a single ingestion event, each returning a typed JSON object through structured output enforcement. Four n8n orchestration pipelines implement durable execution for ingestion scheduling, multi-branch AI fan-out, conditional threat alert routing and the human-in-the-loop approval flow, communicating via webhooks with error isolation and automatic retry; the approval gate uses n8n wait nodes and the Slack API so that AI-generated counter-responses are held for analyst review before publication. A multi-provider LLM routing and fallback layer supports the OpenAI API (GPT-4o-mini, GPT-3.5-turbo) and Claude (3 and 3.5 Sonnet) with automatic failover, cost-optimised model selection per task and a three-tier degradation chain from LLM to rule-based heuristics to deterministic defaults. Prompt Engineering patterns such as per-task temperature tuning, few-shot examples in the threat assessment prompts and explicit decision boundary cues in the severity rubric align the model output with human annotator standards. The Twitter API v2 serves for autonomous post ingestion and counter-response publishing with rate-limit detection, exponential backoff and deduplication; Amazon Comprehend on AWS enriches the posts and Celery Beat schedules the recurring jobs. Post interaction networks are modelled as directed property graphs in PostgreSQL and exposed via Cytoscape.js for influence mapping and narrative propagation analysis. For the LLM evaluation and benchmarking framework he ran a structured ablation study of GPT-4, Claude 3.5 Sonnet and Google Gemini across three progressively enriched pipeline versions on a 500-post labelled dataset with a two-annotator protocol validated by weighted Cohen's Kappa (0.807), computing confusion matrices, per-class precision, recall and F1 scores for data-driven deployment decisions. He designed the architecture, implemented the agent pipeline, the orchestration flows and the provider layer, led the engineering team and delivered the system into production.
Technologies: 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 — Evaluation systems and benchmarks for LLM reasoning and agentic coding
since 05/2024
The work improves how large language models perform in realistic, multi-step engineering tasks instead of static benchmarks. Evaluation systems simulate developer workflows on the command line and on Android devices, so that a model's ability to reason, use tools and generate code can be measured under real conditions. Adversarial test cases probe known weaknesses and make failure modes visible, which feeds back into model training. The results give the model provider a clearer picture of reasoning limitations and reduce failure rates in targeted categories.
He engineered evaluation systems for advanced LLM capabilities including Terminal Bench and Android Terminal Bench, which assess model performance in developer workflows on the command line and in Android environments. He designed automated test harnesses and benchmarking tools in Java, Python, TypeScript and C++ that simulate real-world coding scenarios, CLI tasks and Android interaction flows, improving evaluation efficiency and reliability. He contributed to RLHF, agentic flows with AI Agents, side-by-side evaluations, web game benchmarks and multimodal evaluation pipelines, and developed adversarial test cases that probe model weaknesses in reasoning, tool usage and code generation.
Technologies: Java, Python, TypeScript, C++, LLM, AI Agents, RLHF, Android
Mobile Application Developer — Mobile application for patient biodata management and care services
02/2023 – 05/2023
The Biodata Management and Care Service application empowers healthcare professionals and caregivers to efficiently manage patient biodata for medical record maintenance and future treatment reference. Additionally, this application facilitates real-time tracking of patient locations for health monitoring and enhanced security. This benefits medical practitioners and patients' families alike.
Spring Boot was used to create new features in the existing Java web service applications, which expose a REST API. Maven served for dependency management and for migrating the Java and Spring Boot versions to more recent releases. The mobile application was developed for Android in Kotlin and uses Retrofit for the API integration. Jetpack Compose was utilized for creating robust user interfaces on the mobile app. The Java version, Android SDK version and dependencies of the mobile app are managed with the Gradle build tool. Jenkins served as the deployment pipeline with jobs that built the mobile application and shipped it to the app store; Git was the version control system. He maintained the existing Java applications and conducted the update from Spring Boot 2 to Spring Boot 3 and from Java 11 to Java 17, resolving dependency version conflicts by upgrading to the latest libraries and mitigating the Log4j vulnerability. He developed and implemented the mobile application in Kotlin with its user interface in Jetpack Compose, implemented the API integration with Retrofit and wrote unit tests with Kotest and UI automation tests with Espresso. He configured and set up the Jenkins deployment pipeline for the mobile application.
Technologies: Java 17, Spring Boot 3, Maven, Kotlin, Android, Jetpack Compose, Retrofit, Gradle, Jenkins, Git, REST API, Kotest, Espresso
Java Software Architect & Team Lead — Security Intelligence and Forensics System
since 03/2022
The Security Intelligence and Forensics System gives a national security agency an AI-supported view of criminal and security threats across the country. It ingests mobile phone extracts, intercepted communications, telecom, geolocation and device data in batches of a terabyte and more, and applies natural language processing to classify the sentiment and content of message data. Trained models and predictive analytics surface patterns across the correlated data, communication networks between many individuals are analysed and geolocation analysis places actors and events on the map. The system cut end-to-end processing from about an hour to 15–20 minutes and gives investigators near real-time access to correlated intelligence that used to sit in disconnected systems.
The AI and analytics layer is where the system creates its value: Python scripts in the Apache NiFi pipeline call Amazon Comprehend for Natural Language Processing, classifying the sentiment of mobile message data, and a trained model configured in Elasticsearch delivers predictive analytics over the correlated intelligence that Kibana visualises for the analysts. The system is comprised of interconnected applications, each serving a specific function in data analysis and processing. AWS was used as the cloud platform for deploying the entire application. The forensic data and mobile extracts under investigation were all uploaded into AWS S3 buckets, from which they were read into a data pipeline. Kibana plays a pivotal role in data visualization and analysis, while also facilitating predictive analytics. Elasticsearch serves as the analytics datastore, offering advanced search and analytical capabilities. Apache NiFi acts as the data pipeline, handling ETL (extract, transform, load) processes including data cleaning, manipulation, enrichment and model training. A custom front-end application developed with ReactJS, along with multiple Java Spring Boot microservices exposing web services with a REST API, forms the backbone of the system. These microservices persist data to a PostgreSQL database and integrate with third-party APIs for data enrichment and for storing operational intelligence data. Spring Data JPA is utilized as the data access layer over the databases. Maven serves as the build automation and dependency management tool in the Spring Boot services. Python scripts automate various data processing operations in NiFi and integrate Amazon Comprehend for sentiment analysis of mobile message data. To ensure deployment flexibility and scalability, all applications are containerized using Docker and deployed to Kubernetes clusters via a CircleCI pipeline. Kubernetes, managed on AWS EKS, is configured to provide robust scaling capabilities using Helm charts, dynamically adjusting resource allocation as the processing load fluctuates. Helm allows for easy management and versioning of Kubernetes resources, simplifying the deployment process and enabling seamless updates. Swagger was utilized to expose the API documentation, ensuring clear communication and integration possibilities across services, and Git served as the version control system. As architect and team lead he collaborated with the product owner and business analysts to define functional and non-functional requirements and identified suitable technologies, frameworks and tools. He developed the data pipeline for ETL processing and data enrichment, wrote custom data processors in Apache NiFi and configured the NiFi communication with the AWS S3 bucket, PostgreSQL and the Elasticsearch database using NiFi processors. He set up the Elasticsearch and Kibana deployment, designed the Elasticsearch index mapping to optimize storage and query performance and configured a trained model for predictive analytics in Elasticsearch. He developed Spring Boot microservices integrating third-party APIs for data enrichment, designed and implemented performance tests to assess the application's performance capabilities and set up performance reporting, service monitoring and alerting with Prometheus and Grafana.
Technologies: 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 Architect & Team Lead — Automated Data Regulatory and Analytics Software for a central bank
since 03/2022
The Automated Data Regulatory and Analytics Software lets a central bank monitor the key indicators of more than 1,300 financial institutions from the periodic data they are required to submit: financial transactions, KYC and AML data, service compliance, operational data and fraud reports. The data is validated, enriched and prepared for predictive analytics, so that anomalies and risk patterns across tens of billions of transactions become visible without manual reconciliation. Analysts work with predictive models and dashboards instead of spreadsheets, and compliance enforcement and risk detection rest on one centralised, current data basis. The platform strengthened AML monitoring and risk analysis across the whole financial sector of the country.
The analytics layer prepares the submitted financial, KYC, AML and fraud data for predictive analytics: Elasticsearch holds the business analytics data and runs the predictive models, Kibana visualises them for the analysts, and ClickHouse with Apache Superset serves the operational analytics. The system comprises multiple interconnected applications leveraging various Azure cloud services and deployed within the Azure environment. These applications encompass a data submission portal built with ReactJS for institutions to submit the required data renditions and a microservice backend developed in Java with Spring Boot and Spring Cloud, managed with Maven for build automation and dependency management, exposing web services with a REST API. The services use Apache Kafka on Confluent Cloud for interservice communication and persist data to PostgreSQL (structured data) and MongoDB (unstructured data) via JPA as the data access layer. Documents are stored in Azure Blob Storage for efficient object storage, and the microservices integrate with Azure Communication Services for sending notifications. ETL processing with Apache NiFi, aided by custom Python scripts, facilitates document data validation, with custom NiFi data processors developed for domain-specific data operations. Monitoring and alerting of the Spring Boot microservices are handled with Prometheus and Grafana. Elasticsearch serves as the business analytics datastore and is used together with Kibana for visualizing, analyzing and conducting predictive analytics on financial data. Operational analytics employ ClickHouse and Apache Superset on the data persisted in PostgreSQL. Apache JMeter is utilized for performance and load testing, while Flyway controls database changes and migrations. All applications are containerized using Docker and deployed to Kubernetes and Azure VM instances via a CircleCI pipeline; Git is the version control system. As architect and team lead he collaborated with the product owner and business analysts to define functional and non-functional requirements and identified suitable technologies, frameworks and tools. He developed the data pipeline for ETL processing and data enrichment, wrote custom data processors in Apache NiFi and configured the NiFi communication with Azure Blob Storage, Confluent Kafka and the Elasticsearch database using NiFi processors. He set up the Elasticsearch and Kibana deployment and designed the Elasticsearch index mapping to optimize storage and query performance. He implemented a multi-layered security mechanism in the microservices using Spring Security and Azure OAuth backed by Azure AD (Active Directory), and implemented secured API endpoints with access rights management and request authorization. He implemented multiple microservices such as the gateway, discovery server, config server, notification service and core library service, and provided a consolidated API documentation over the Spring Cloud gateway service using Swagger. He configured the interservice communication with Apache Kafka on Confluent Cloud and managed the Kafka clusters, topics and schema registry there. He designed and implemented performance tests, set up performance reporting, service monitoring and alerting with Prometheus and Grafana, and conducted JVM tuning focused on memory management, garbage collection and execution speed to improve performance, reduce resource consumption and enhance stability.
Technologies: 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 — Pensioner biodata resolution and recapture application
02/2021 – 02/2022
The Pensioner Biodata Resolution and Recapture application helps a national pension regulator revalidate more than 30 million pensioners and eliminate identity fraud across public and private pension schemes. Identity is verified with biometric capture and face recognition against the national identity register, which exposes impostors and duplicate records that manual checks had missed. Field teams in more than 1,000 recapture zones work offline where there is no network and synchronise later, so that genuine pensioners keep receiving their pensions without interruption. The result is a validated, consistent pensioner database with far fewer discrepancies between schemes.
Identity verification combines biometric data with a face recognition service and the national identity API: fingerprints, webcam images and documents captured in the field are matched against the register to confirm each pensioner. ReactJS was used in developing the web application, which integrates with backend microservice APIs developed in Java with Spring Boot and built with Maven. The backend microservices use JPA as the persistence layer over a PostgreSQL database on AWS RDS, where data is stored and read. RabbitMQ enables the microservices to communicate in a distributed, non-blocking manner. Spring Security secures all exposed endpoints of the microservices by implementing authentication and authorization. JavaFX was used in developing a desktop application that enables data recapture in remote areas; it uses a local SQLite database to store data locally and transmit it later once a network connection is established. A microservice backend exposes web services with a REST API for both the web and the desktop application and facilitates third-party integrations, including face recognition. The microservices and the frontend application were containerized using Docker and deployed to AWS EC2 instances through a Jenkins pipeline with jobs automating CI/CD. AWS S3 buckets serve as the object store for documents uploaded in the application. GitHub with Git was the version control system, and Swagger exposes the API documentation for seamless integration. He collaborated with the product owner and business analysts to define functional and non-functional requirements and identified suitable technologies, frameworks and tools. He developed and implemented the event-driven Spring Boot microservice architecture, secured the exposed APIs with Spring Security across multiple microservices, configured the Swagger API documentation within the architecture and implemented microservice audit logging. He configured the interservice communication with RabbitMQ, set up the RabbitMQ deployment in the CI/CD pipeline and tuned RabbitMQ for optimal performance via the management console. He implemented the CI/CD pipeline with Jenkins and developed the JavaFX desktop software including the integration of a fingerprint scanner, a webcam for image capture and a hand-held document scanner. He also configured service monitoring and alerting with the ELK Stack.
Technologies: 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 application for patient diagnostics (PMTCT)
05/2020 – 05/2022
The medical diagnostics mobile application supported medical doctors in accurately diagnosing cases of PMTCT (Prevention of Mother To Child Transmission) and non-PMTCT HIV infections among affected individuals, including mothers, infants and unborn children. Its purpose was to aid doctors in effectively preventing virus transmission from mother to child. This resulted in significantly improved prevention outcomes and a 50 % increase in doctors' efficiency.
The mobile application was developed for Android in Java and uses the Spring core dependency for Android to integrate with the REST API endpoints of the backend. Android XML was used to implement a user-friendly interface that lets users interact seamlessly with the application. Gradle served as the build and dependency management tool, where the Java version, Android version and other required dependencies were configured. Git was the version control system. He developed and implemented the mobile application in Java, built the app user interface with AndroidX and XML, implemented the API integration using the Spring dependency for Android, wrote unit tests with JUnit and carried out the updates of the Gradle version and the dependency versions.
Technologies: Java, Android, AndroidX, Android XML, Spring, Gradle, JUnit, Git, REST API
Software Developer — Retail store shopping, inventory management and monitoring system
12/2019 – 06/2021
The Retail Store Shopping and Inventory Management application is a comprehensive suite of software designed to enhance customers' shopping experience by minimizing waiting times at checkout queues. Additionally, it offers inventory management and monitoring capabilities. These empower store owners to efficiently manage stock, conduct daily sales operations and effectively prevent product theft within retail stores or warehouses.
The suite includes a self-checkout mobile app for customers, developed for Android in Java with its user interface implemented in Android XML. A web-based inventory management system for daily sales operations and inventory control was developed with ReactJS for the frontend and Java with Spring Boot for the backend microservices, which expose web services; a further web-based retail solution was built with Angular. The microservices use Maven for build automation and dependency management and persist data through JPA and Hibernate to a MySQL database on AWS RDS. RabbitMQ was set up and configured on the services for interservice message communication. Twilio services were integrated into the backend to provide email and SMS notifications and to support marketing campaigns. JavaFX is used for the inventory monitoring system, a desktop application that integrates seamlessly with the backend; Java was used to write the integration code for the Impinj RFID readers and antennas based on the Impinj Java documentation. The web applications were containerized using Docker and deployed to AWS with GitHub Actions as the CI/CD pipeline. On AWS, AWS EC2 instances run the containers of the web applications, AWS RDS provides data storage for the Spring Boot services, Amazon SES sends the email notifications, AWS EKS provides robust scaling by dynamically adjusting resources as the load fluctuates, and AWS S3 buckets store documents and inventory images. He collaborated with the product owner to define functional and non-functional requirements. He developed and implemented an event-driven Spring Boot microservice architecture including inventory, customer, purchase, retail-core, batch-job, gateway, notification, discovery-server, config-server and credit-card services, secured credit card details by implementing tokenization in the credit-card microservice, configured single sign-on with Spring Security and Google, and secured the exposed APIs with Spring Security across multiple microservices. He developed the self-service checkout mobile application and the desktop inventory monitoring system with Impinj RFID integration in Java and JavaFX, enabled the desktop software to use an RFID antenna hub supporting multiple antennas and verified the device integration with JUnit integration tests. He developed and integrated multiple payment gateways, a batch-job service for scheduling, data synchronization and bulk inventory uploads, the notification service integration with the Twilio APIs for emails, SMS and marketing campaigns, and a QuickBooks integration to unify existing and new systems.
Technologies: 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 — Retail store and warehouse inventory monitoring system with RAIN RFID
12/2019 – 06/2021
The inventory monitoring system for retail stores and warehouses is a desktop solution that utilizes RAIN RFID devices to detect and track tagged inventory items. The system ensures that items are not removed from the store without payment by alerting when unpaid items are detected leaving the premises. Additionally, it can detect potential damage to tags if someone attempts to remove them in order to steal items.
The inventory monitoring system is a desktop application developed in Java with JavaFX and FXML on a Spring-based application core built with Maven. SQLite serves as the local database for persisting operational data of the monitoring system, and Hibernate provides a high-level API for the database communication of the desktop application. RabbitMQ is used as the event bus for propagating events for distributed processing. Java and the Impinj documentation were used to develop the integration code for the Impinj RFID reader, so the desktop application can control the RAIN RFID reader during inventory monitoring operations, and to configure the reader's antenna bus for multiple antennas. Git was the version control system. He defined clear goals and subtasks for implementing the solution and researched the RAIN RFID documentation and integration guides extensively. He designed the software architecture as a conceptual layer connecting the software and hardware components, developed the Java classes defining the operational logic for RFID readers and antennas and implemented multithreading to separate reader connectivity from antenna tag sensing. He enabled the desktop software to use an RFID antenna hub supporting multiple antenna devices, verified the device integration with JUnit integration tests and collaborated with hardware engineers on the seamless integration of the RFID devices. He designed and developed the user interfaces for RFID device configuration and monitoring, implemented error handling for communication failures and device malfunctions, conducted performance tests of the RFID system under various load conditions and documented the architecture, design decisions and implementation details.
Technologies: Java, Spring, Hibernate, Maven, SQLite, RabbitMQ, JavaFX, FXML, RAIN RFID, Impinj RFID, JUnit, Git
Java Developer — Desktop tools and web frontends: efficiency calculator, QR code scanner, surveillance
08/2018 – 12/2019
A series of client applications for an engineering and information services company. The central product was a desktop-based Mechanical Plug Efficiency Calculator that lets engineers calculate the efficiency metrics of a machine instead of doing so by hand. Further tools were a QR code scanner and an image watermarking application, and web frontends for a video surveillance system and a face recognition application. The applications were specified together with the clients and introduced to the end users with training and support.
Java and Java Swing were used to contribute to the desktop applications, namely the Mechanical Plug Efficiency Calculator, the QR code scanner and the image watermarking application. These applications use JDBC to connect to a MySQL database for data persistence. HTML, CSS and JavaScript were used to contribute to the web frontends of the video surveillance system and the face recognition application; Git was the version control system. He collaborated closely with the clients to define clear specifications and system designs and conducted requirement gathering sessions with the stakeholders. In a small team he enhanced the efficiency calculation of a machine, which resulted in the desktop calculator, for which he designed intuitive user interfaces in Java Swing, implemented the algorithms and mathematical models for the efficiency metrics and validated their accuracy with domain experts. He conducted usability testing sessions, provided technical support and training to the end users, documented requirements, design specifications and implementation details and took part in regular team meetings and brainstorming sessions.
Technologies: Java, Java Swing, JDBC, MySQL, HTML, CSS, JavaScript, Git
Does this profile fit your project?
Send us the requirements and quote profile number DDO-003. You will get a clear answer: whether it fits and from when.
