Porsche chat-bot plugin
MHP, Porsche project · Back End Developer
A retrieval-augmented generation (RAG) service running as a dedicated plugin inside an internal AI assistant platform. The stateless FastAPI backend retrieves relevant documents from a central knowledge base, applies access filters so each user only sees what they are entitled to, and streams grounded, context-aware answers back from the language model.
- Layered architecture in which the language model, embedding model and vector store are interchangeable adapters chosen by configuration — the same code runs offline against a local model or in the cloud against a hosted one
- Role-based access control applied to the retrieval query itself rather than filtering results afterwards, over a pgvector store
- Agent tooling that lets the model call external APIs, plus request tracing and LLM observability across services
- Azure infrastructure as code and a multi-stage GitLab CI/CD pipeline covering linting, type and security checks, tests, and promotion through dev, pre-prod and production
- Python 3.11
- FastAPI
- LangChain
- pgvector
- PostgreSQL
- OpenAI
- Ollama
- Docker
- Azure
- GitLab CI/CD
Aston Martin internal app
MHP, Aston Martin project · Front End Developer
An internal compliance system for vehicle software homologation — tracking which software version runs on which electronic control unit, in which vehicle model, and which type-approval regulations each of those versions satisfies. Responsible for the front end and for its release pipeline.
- Angular 16 with lazily loaded feature modules for vehicles and their models, control units and their groupings, software versions, regulations and homologation sets
- Azure AD sign-in through MSAL, with route guards gating each area on the role claims carried in the user’s token
- Side drawers that show, for a selected control unit, the software running on it and the regulations that version is certified against
- Vehicles presented as either a sortable table or a tile view, the choice remembered between visits, with search and filtering throughout and confirmation locks in front of destructive actions
- Built and released to Azure App Service through an Azure Pipelines definition
- Angular 16
- TypeScript
- Angular Material
- RxJS
- MSAL / Azure AD
- ngx-toastr
- Karma / Jasmine
- Azure Pipelines
- Azure App Service
Skill Matrix
MHP, Rehau project · Front End Developer, supporting BE
Application for handling skills of Rehau's employees. Responsible for the UI application with occasional work on stored procedures and API.
- Angular
- C# (.NET Core)
- MS SQL
Claas Connect 3.0
MHP, CLAAS project · Front End Developer
A fleet portal for agricultural machinery that shows owners and dealers what their harvesters and tractors are reporting back from the field — live status and telemetry, alarms, scheduled servicing, parts and documentation, with machine positions plotted on a map.
- NgRX state split into separate stores for machines, couplings, notifications, organisations and authentication, with effects owning every API interaction
- Telemetry surfaced as time-range event tracks with timezone-correct queries, feeding overview tiles, machine detail views, alarms and maintenance schedules
- Runtime environment injection — the container rewrites API placeholders inside the built bundle at startup, so one image is promoted unchanged from dev to production
- Around 50 components with Karma/Jasmine specs, German and English localisation, and delivery to Kubernetes through Helm charts and an Azure Pipelines build
- Angular 12
- TypeScript
- NgRX
- RxJS
- Angular Material
- Auth0
- OpenLayers
- ngx-translate
- Karma / Jasmine
- Docker
- Helm / Kubernetes
- Azure Pipelines
Robot Framework test platform
Groupama Assicurazioni, Rome, Italy · Full Stack Developer
An acceptance-testing platform for an insurer’s customer-facing web applications: a Robot Framework and Selenium suite that drives the real sites through a browser, wrapped in a web application that schedules the runs, stores every result and turns them into reports the business actually reads.
- A custom Robot Framework library of domain keywords, including synchronisation keywords that wait on JavaScript, jQuery and Angular readiness rather than on fixed sleeps — the usual cure for flaky browser tests
- Tests that download documents and then assert on the contents of the resulting PDF, through a purpose-built WebDriver and a PDF-parsing extension
- A Flask API over MySQL that parses Robot Framework’s output.xml into queryable test runs, secured with JWT and backed by Redis/RQ for background work
- Scheduling driven from the interface: the application edits the real system crontab and renders each expression back as readable text
- Angular front end for history, reports, statistics, scheduling, mail configuration and user management, with reports rendered to PDF and Excel and mailed out automatically
- Python 3
- Robot Framework
- Selenium
- Flask
- SQLAlchemy
- MySQL / MariaDB
- JWT
- Redis / RQ
- WeasyPrint
- Angular 8
- bash/sh
SAML Protocol integration
MoICT, Jordan · Full Stack Developer
SAML protocol integration between IBM ISAM (IdP) and several SP clients.
- Python (Flask, Django, Pyramid)
- PHP
- Java
- C# (.NET Core)
T-SQL to Oracle migration
Repsol & Banco de Santander, Spain · Full Stack Developer
Translation, conversion and adaptation of T-SQL syntax to Oracle SQL syntax.
IBM to AlienVault integration
Cybertech · Backend Software Developer
An integration connecting a SIEM to a security orchestration platform: it polls AlienVault for alarms, turns each one into an IBM Resilient incident with its artifacts attached, and keeps the two sides in step as analysts work the case.
- Event-driven polling built as a Resilient Circuits component — a timer on its own channel, with a local datastore recording which alarms were already ingested so none is raised twice
- An OAuth2 API client with session handling, a shared error taxonomy and retry behaviour, written against an abstract base so the hosted and on-premise flavours of the product share one implementation
- Mapping of the vendor’s alarm taxonomy — kill-chain stage and several hundred attack strategies — onto the incident types the orchestration platform understands
- Status synchronised by writing labels back onto the source alarms, the only marker that system’s API exposed, with a setup utility that discovers those label identifiers at install time
- pytest suite over recorded alarm fixtures, plus deployment documentation for the integration server and the appliance
- Python 3.6
- IBM Resilient
- resilient-circuits
- AlienVault USM
- OAuth2
- requests-oauthlib
- watchdog
- pytest
PyQt5 reporting desktop app
Cybertech · Backend Software Developer
A desktop tool that turns raw vulnerability-scanner output into the formal audit reports a security team hands to its clients. Auditors queue up any number of .nessus scan exports, choose an output folder, and get finished Word and Excel documents built from the approved report templates — replacing work that had been done by hand.
- Parses the scanner XML and de-duplicates findings by plugin across hosts, then groups them by severity and orders each group by CVSS score, numbering them continuously through the report
- Fills a Word template using Jinja2-based templating, then post-processes the result to locate tables by their header row, append rows and merge the per-host cells
- Builds the companion Excel workbook, with dedicated sections for exposed ports and services and for certificate details extracted from the scanner’s plugin output
- Batch queue with per-file progress, packaged as a standalone Windows executable so auditors run it without installing Python
- Python 3
- PyQt5
- docxtpl / Jinja2
- python-docx
- openpyxl
- ElementTree
- py2exe
Watson App
Cybertech · Full Stack Developer
A document-intelligence application built on IBM Watson. Users upload documents through the browser, the server feeds them into a Watson Discovery collection and tracks indexing progress, and the indexed corpus can then be searched in natural language or questioned through a Watson Assistant chat interface.
- The full ingestion path — drag-and-drop upload, server-side validation of accepted document types, submission into the Discovery collection, and polling of indexing status until each document becomes queryable
- Natural-language search across the indexed corpus, alongside a conversational interface backed by Watson Assistant
- Flask API issuing JWT access and refresh tokens, with every Watson-facing route behind authentication and users and access policies modelled in SQLAlchemy
- AngularJS front end on UI-Router with custom directives for file reading, loading states and sticky panels, assembled by a Gulp pipeline covering scripts, styles, vendor bundles and assets
- Python 3
- Flask
- SQLAlchemy
- JWT
- IBM Watson Discovery
- IBM Watson Assistant
- AngularJS 1.4
- UI-Router
- Bootstrap 3
- Gulp
- Sass
Deep Sentiment & Big Data web platform
Veritek Global · Full Stack Developer
Analyzing data gathered from different social media platforms (Facebook, Twitter…).
- Zend2 (PHP)
- AngularJS
- CouchDB
- Python