Project 7 of 7
An assistant that ran on this site for a while: it cited its sources and did not make things up.
A Turkish/English RAG assistant that answers visitors' questions about me only from its own knowledge base. Search ran on the server, answers came from a cloud language model, and quality was measured with a 40-question accuracy test. I shut it down in October 2026 to free server memory.
The question a portfolio visitor has in mind is rarely written in one place on the page: "Which projects used RAG?", "Where does he work now?", "Does he know Elasticsearch?". The answer is spread across the CV, the project pages and the experience rows. Handing this to a general-purpose chatbot brings a different risk: the model can confidently make things up about topics it does not know. On a portfolio, wrong information is worse than none.
I built the "Ask Göktuğ" assistant for the bottom-right corner of this site on a RAG (Retrieval-Augmented Generation) architecture. Before answering, the assistant searched a knowledge base about me and answered only from the passages it found. When the knowledge base had nothing on a question, it said it did not know, and it showed the source each answer was based on.
It answered in Turkish and English and was embedded in the site with a single <script> tag.
SQLite instead of Elasticsearch. The knowledge base was only 29 passages; Elasticsearch alone would need about 1.5 GB of memory. Instead I combined two searches inside SQLite:
Exact terms such as "ELK" and questions phrased in different words both found the right passage.
Search local, answers in the cloud. In the first version a local language model on the server generated the answers too, but on a 4-core CPU the first word took 25–50 seconds. After measuring, I moved answer generation to MiniMax through an OpenAI-compatible API, while search and the embedding model stayed on the server. The first word dropped to about 4 seconds on average, and answers streamed at about 54 tokens per second. I filtered the model's "thinking" text out of the stream, so visitors saw only the answer. I wrote about this switch in a separate post.
Measure first. To see what breaks when the knowledge base changes, I wrote a 40-question accuracy test. The latest run passed 39 of 40. Instead of loosening the questions or hard-coding answers to pass, I only improved the knowledge base and the system prompt.
Safe deployment on a shared server. The assistant ran on an 8 GB server that also hosts other sites. The API and model service were reachable only from inside the server; the reverse proxy exposed only the chat, session, status and widget paths, and Prometheus metrics stayed private. Per-visitor and daily global question limits capped both abuse and cloud cost.
Observability. Time to first word, speed and errors for every answer were collected as Prometheus metrics; the latest accuracy test result and live service health were shown on a public status page.
On the server: search and embeddings · In the cloud: answer generation only
Instead of searching across pages, visitors asked their question directly and got a sourced answer within a few seconds. How accurate the assistant was is not a guess: it was the result of a test rerun after every knowledge-base change.
Even after the speed-up, the assistant still held about 1 GB of memory on the shared server. In October 2026 I shut it down to leave that memory to other work; the code and knowledge base are still there and it can be brought back when resources allow.
Next projectTransifyAI 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.