Project 2 of 7
A rule engine, live agent handoff and three-layer data safety.
An enterprise support bot driven by a YAML state machine, connected to the production database strictly read-only, that hands the conversation to a human agent when it cannot resolve it.

Most of what reaches a support team is the same handful of questions repeated: billing status, line details, fault records. Letting a language model answer those freely introduces two risks at once — the model inventing an answer, and customer data leaking into logs uncontrolled. On an enterprise support channel neither is acceptable.
I built the bot on a rule engine rather than free generation. Conversation flows live in YAML files as a state machine: 16 separate flows, each with its own steps, validations and exits. Changing a flow means editing YAML, not changing code — the support team can update their own scenarios without writing any.
When the bot cannot resolve something it does not simply drop the conversation: it opens a ticket in Zammad/Zendesk and hands off to a live agent together with the full conversation history, so the customer never has to explain twice.
If the bot cannot resolve it: a Zammad/Zendesk ticket is opened and the conversation is handed to a live agent with its history.
A three-layer read-only guarantee on the production database. The bot reads live MySQL, but the possibility of a write had to be closed entirely. Instead of trusting a single safeguard, I stacked three:
READ ONLY transaction — the query runs inside a transaction the database itself refuses writes onEven if the first two are bypassed, the third is enforced by the database engine. Not leaving safety to the good intentions of the application layer was the single best decision in this project.
End-to-end PII masking. Sensitive fields — national ID numbers, phone numbers, email addresses and card numbers — are caught by regex patterns plus Luhn validation for card numbers, then masked. Masking runs before anything is written to logs or the database, so sensitive data never hits disk in raw form.
107 tests as a regression net. I wrote tests for every step of all 16 flows. Because changing one YAML flow can silently break another, updating the system safely would not have been possible without them.
Flask + Gunicorn. A deliberately plain stack: a single service that fits the synchronous request/response model and can be packaged and scaled horizontally. State lives in YAML and the database; the application server itself is stateless.
A significant share of repeat requests now close without ever reaching an agent, and the ones that do arrive with the ticket and history already attached. Answers are correct because they come from production data, safe because queries are read-only, and changeable because the flows live in YAML.
Next projectData Processing & Automation PipelinesAI Engineer · Computer Engineer
I build products where AI meets data systems.
Computer engineer working on AI-driven systems, data pipelines and system integrations. I design automation-oriented, scalable structures that turn complex raw data into something meaningful and usable.
Open to new projectsAs an AI Engineer with a degree in Computer Engineering, I build LLM-based chatbot and AI agent systems, data processing pipelines and system integrations.
I have hands-on experience setting up PII masking, read-only database security and Prometheus/Grafana-based observability layers in production environments. Using Python, REST APIs, SQL and Elasticsearch, I integrate AI-powered systems into real business processes and focus on building secure, scalable and maintainable products.
Résumé
AI Engineer · Computer Engineer
Developed AI-based data processing, analysis and automation pipelines, optimising data collection, processing and reporting workflows. Built LLM integrations, AI agent architectures and enterprise AI chatbot solutions, enabling data enrichment, classification and business process automation. Developed REST API integrations, data processing services and inter-service communication components in Python. Designed API-based workflows and automations with n8n that connect different systems. Carried out data modelling, SQL optimisation and data management on MySQL and MariaDB. Built data search, indexing and filtering infrastructure with Elasticsearch. Set up server, application and service monitoring with Prometheus, Grafana and Zabbix, including performance tracking, alerting and observability dashboards. Contributed to managing and monitoring systems on Linux/Debian, Proxmox and container-based infrastructure.
Supported software development within the Credit Card Payment Systems department. Contributed to data analysis, SQL query optimisation and reporting on Microsoft SQL Server. Gained experience with service integrations and layered architecture in C#/.NET enterprise applications.
Built a blog platform with user and content management features using ASP.NET MVC, SQL Server and Entity Framework. Designed the application structure with a layered architecture and implemented database management and CRUD operations.
Bachelor's degree, Faculty of Engineering, Department of Computer Engineering.
Certificate of participation.
Contact
If you want to talk about AI, data systems or automation work, drop me a line — I usually reply the same day.