MENT / AI pipeline
15 → <3 minParallel LLM extraction with Python mapping and validation. Approximate recorded runtime.
AI Engineer / Istanbul, Turkey
I build LLM applications, Arabic NLP, and retrieval systems, with the Python engineering that brings them into products.

MENT / AI pipeline
15 → <3 minParallel LLM extraction with Python mapping and validation. Approximate recorded runtime.
Professional AI engineering
≈6 yearsArabic NLP, LLM applications, retrieval, and Python services. Experience through July 2026.
Lableb / spam service
30,000/dayUp to 30,000 requests per day; about 90% of spam queries filtered.
What I worked on, how I contributed, and what the results mean.
Nov 2025 - Jul 2026
AI Engineer
Remote
Recommendations & agent workflows
Blink is an event-management platform with attendee, session, flight-creation, and hotel-reservation workflows. I worked on recommendation features and their supporting Python services, alongside agent evaluation and document understanding.
The problem was to match attendees and surface relevant sessions inside the event platform. I built content-based filtering capabilities using Python/FastAPI, PostgreSQL, and pgvector, and integrated the recommendation features into a distributed architecture using RabbitMQ.
I designed and evaluated a LangGraph agent for flight creation within the event-management platform. Five integrated tools covered booking, attendee search, location lookup, and document parsing. The workflow connected AI outputs with backend services and remained behind a feature flag for beta evaluation.
Connecting attendees and sessions: The delivery included automated tests, CI/CD, and development, staging, and production releases. I collaborated across product and engineering teams. These recommendations were delivered independently of the beta agent. No recommendation uplift, ranking benchmark, or user-count result is recorded.
Flight creation through a bounded workflow: A separate workflow combined optical character recognition (OCR) and multimodal document processing with Docling and Gemini 2.5 Flash to extract structured flight-ticket and hotel data from PDFs and images for platform workflows. This supports document extraction and tool integration experience; it does not establish autonomous ticket purchasing or a general-availability agent release.
I evaluated Gemma 3 12B served through Ollama on AWS EC2 G5 GPUs. Measurements covered time to first token, token throughput, end-to-end latency, RAM/VRAM, and GPU utilization.
The purpose was to assess self-hosting feasibility. No numeric benchmark, cost saving, production traffic result, or final hosting decision is established by the available record.
I built and maintained FastAPI services, asynchronous workflows, PostgreSQL-backed APIs, and external-service integrations. I contributed to backend refactoring intended to simplify services and improve multi-tenant support.
Claude Code was part of my engineering workflow for code, tests, documentation, and reports. Architecture work was a contribution alongside colleagues, without a claim of sole ownership or a measured refactoring gain.
Oct 2023 - Oct 2025
AI Engineer
Remote
Enrichment & relationship intelligence
MENT is a privacy-first network-intelligence platform. My work covered collecting and enriching information, attributing it to the right profile, extracting structured fields, and exposing relationship insights through backend and conversational services.
The core AI pipeline was taking about 15 minutes. I parallelized asynchronous LLM calls that extracted different schema sections, such as professional and personal fields, and handled mapping and validation in Python. The pipeline then ran in under 3 minutes, enabling interactions closer to real time.
Similar or identical names made data-to-profile attribution ambiguous. I improved attribution by approximately 33% versus the prior system, working on profile disambiguation and enrichment quality.
Shortening the extraction pipeline: This result belongs to asynchronous extraction and Python processing. It is separate from the Neo4j graph and multi-agent contributions. The workload size, percentile latency, and measurement protocol are not recorded.
Attributing information to the right person: The exact metric definition, sample size, and relative-versus-absolute interpretation are not documented. This is an attribution result, not a 33-percentage-point accuracy gain or a knowledge-graph benchmark.
I contributed to multi-agent enrichment in n8n, integrated Model Context Protocol tools, and contributed RabbitMQ integration and retries. Grafana tracing supported visibility into the workflows.
I also built and deployed Python microservices and Celery workers for background collection, enrichment, insight generation, and AI workloads. Azure OpenAI integrations supported retrieval and conversational services. Exact agent topology and agent counts are not established.
I designed and implemented a Neo4j graph of contact profiles and relationships. It supported insights around shared interests, employers, and multi-hop network connections.
This demonstrates graph data modeling and relationship traversal. The available evidence does not establish a production GraphRAG deployment or a causal link between the graph and the attribution measurement.
Aug 2020 - Sep 2023
AI Engineer
Remote
Arabic NLP & service engineering
At Lableb, I worked on Arabic NLP and search-related B2B systems, moving between model research, comparative experiments, data preparation, and service development. I first joined as an AI Engineer Intern in April-July 2020, then started the full-time role in August.
I built a B2B spam-classification service handling up to 30,000 requests per day and detecting/filtering about 90% of spam queries. The work connected classification models with production service engineering, with attention to minimizing false positives on legitimate queries.
I compared NLTK n-gram models and neural noisy-channel approaches through iterative spelling-correction experiments. Moving to KenLM improved runtime with comparable results. DVC versioned related datasets and model artifacts.
Filtering spam in a production service: The 90% figure describes spam filtering. It is not established as overall accuracy, precision, or F1; no measured false-positive rate, customer count, or service-level objective is supplied.
Comparing approaches to Arabic spelling: I researched, trained, and evaluated Arabic named entity recognition, part-of-speech tagging, transliteration, and spelling correction in Azure Machine Learning, using task-appropriate F1, precision, recall, and accuracy. These research activities are distinct from the production spam service.
I built microservices for synonym extraction, spam filtering, English-to-Arabic transliteration, and converting unstructured text to structured data. Service work spanned Python/Flask, Go/Fiber, and Java/Spring Boot.
Data preparation and analysis used pandas, NumPy, Matplotlib, and Seaborn. I worked with other engineers on model and service delivery; the record does not assign every framework to a particular service or establish throughput for every NLP component.
Oct 2018 - Jan 2020
At Code Experts, I built Angular interfaces and contributed Node.js backend work for Vooliom, a video-on-demand product. For Alo Taxi, I built the Ionic mobile app and Angular 8 administration panel, and contributed to a WebSocket chat feature connecting drivers and riders.
Independent work
Personal applications and experiments, from retrieval to model evaluation.

Save the discovery.
Find the connection.
Save online discoveries, organize editable summaries and tags, and retrieve them through hybrid search and a tool-using assistant.
A recorded walkthrough of the running application: search, note details, and an assistant response with retrieved sources. Uses eight synthetic sample notes; pauses are trimmed. Silent video, with the steps described below.

Searches saved titles, metadata, and summaries. The application and database are self-hosted; Groq and Google APIs provide inference and embeddings.
Saving a URL extracts public metadata/descriptions and produces editable titles, summaries, and tags. Tags can be reused, listed, renamed, or removed. The Flutter client supports web and locally configured Android share intents; saved items can be filtered by type and tags, with dates supported by the list API.
JSON and CSV import/export skip duplicates. Current ingestion works with metadata and summaries: it does not transcribe videos or index complete article bodies.
The backend uses PostgreSQL 16 and pgvector. Gemini gemini-embedding-001 produces 768-dimensional embeddings with RETRIEVAL_DOCUMENT for saved titles/summaries and RETRIEVAL_QUERY for questions. Cosine-similarity candidates and PostgreSQL full-text results are fused with Reciprocal Rank Fusion, using constant 60.
Account ownership and tag/type filters are applied inside database queries before candidate limits. Specified embedding-provider failures fall back to keyword search; database errors still propagate. Search is over saved metadata/summaries, without a claim of passage-level document QA.
A LangGraph/LangChain assistant uses search and listing tools, with hosted Groq inference and the current documented default openai/gpt-oss-120b. SSE streams answers to Flutter. The server resolves saved-item cards from authorized tool results, discarding invented IDs and duplicate references.
Backend work includes Pydantic schemas/settings, SQLAlchemy asynchronous access, asyncpg, and Alembic migrations. The Flutter client uses Dart, Riverpod, go_router, and Freezed. Tests cover ranking, filters, ownership, provider fallback, streaming, and reference validation.
Docker Compose and migrations support self-hosting, with a documented VPS deployment path. GitHub Actions is documented for backend/Flutter tests, analysis, and the release web build. The application and database are self-hosted; Groq inference and Google embeddings remain external dependencies.
A recorded September 11, 2026 smoke run used eight manually labeled queries over eight synthetic notes: Recall@5 and MRR@5 were both 1.0, with median API latency 324.7 ms. This was one sequential pass with real Google embeddings after warmup/import, not a general accuracy, production-scale, or baseline-superiority result.
Personal fine-tuning experiment
An Arabic tool-calling QLoRA experiment on Qwen3-4B using an 8 GB laptop GPU. Synthetic data, leakage checks, pinned inputs, and resumable paired evaluation made the result inspectable.
I built a workflow for synthetic-data preparation, QLoRA training, and controlled base-versus-adapter evaluation on an 8 GB GPU. With pinned inputs, leakage checks, and resumable benchmarks, I could inspect training outcomes and prepare a revised dataset for the next experiment.
Personal ML / MLOps pipeline
An end-to-end topic-classification workflow connecting model training, hyperparameter tuning, prediction, and evaluation through MLflow, with a Streamlit interface for exploring data and running inference.

The Streamlit interface connects the pipeline’s outputs: inspect labeled data, review overall/class/slice metrics, and try a prediction. These repository captures illustrate the workflow; they are separate from the saved evaluation run.



I connected training, hyperparameter tuning, prediction, and performance reporting in an MLflow pipeline, with experiment artifacts available for review. Through Streamlit and Snorkel slice analysis, users can explore the data, try predictions, and inspect model behavior across topic classes, emoji tweets, and short tweets.
Personal retrieval demo
Find movies by meaning using all-MiniLM-L6-v2 sentence embeddings and ChromaDB, with a Streamlit interface over movie descriptions, titles, genres, dates, and crew metadata.
I built a movie-discovery demo that lets users search by meaning. The implementation connects IMDb data processing, sentence embeddings, and ChromaDB indexing with a Streamlit interface, covering the path from preparing movie metadata to querying a vector database and presenting results.
Local computer-vision application
A local webcam/DroidCam application to detect, capture, and recognize previously seen faces. OpenCV-only fallback, optional MediaPipe detection, and DeepFace FaceNet512 embeddings support different environments.
I built a local application that connects camera input, face detection, capture, and recognition of previously seen faces. Users can configure the camera source and matching thresholds; I added local storage for face crops, embeddings, and capture metadata, plus an OpenCV-only fallback for environments without TensorFlow.
My work connects applied AI with backend engineering: understanding model behavior, preparing data, designing APIs, and handling the latency and failures that appear in a real product. I have approximately six years of professional AI engineering experience through July 2026, preceded by web development.
I work best with clear outcomes, technical ownership, and time for focused execution. At Blink, that meant collaborating with product, frontend, mobile, QA, and backend colleagues to bring AI features through tests and staged releases.
My path started in web development, moved into Arabic NLP, and grew into LLM applications and the backend systems around them. I care about making the result useful, measurable, and maintainable.
Technologies connected to the work they supported. Professional experience and personal experiments are called out separately.
Blink beta workflow, MENT enrichment, and Second Memory
Tool boundaries, structured outputs, OCR-assisted document extraction, model APIs, and asynchronous workflows that connect AI with product services.
Blink recommendations, MENT graph, and personal search projects
Content-based recommendations, vector and full-text search, RRF ranking, and graph relationship traversal.
Python services across AI roles; earlier web and NLP services
Python is my primary language. I build APIs, workers, validation, messaging, and streaming around models and data.
Lableb research, Topic Classification, and SILA-4B
Spelling, NER, POS tagging, transliteration, classification, and comparative evaluation. QLoRA/PyTorch work is a personal experiment.
Azure model work, Blink GPU feasibility, and personal deployments
Automated checks, staged releases, tracing, and benchmarks chosen for the task: retrieval ranks, classification F1, or inference latency.
Daily engineering and AI-assisted personal projects
I used Claude Code at Blink for code, tests, documentation, and reports, alongside Git and automated checks. My broader toolset includes Codex, Cursor, Jupyter, and Python development tools.
Code Experts, Second Memory, and this portfolio
Angular/Ionic from earlier professional work; Flutter/Dart and TypeScript/Vite from personal applications. This portfolio uses native HTML/CSS.
Bachelor’s degree in Information Technology Engineering, Artificial Intelligence specialization. Damascus University, 2015-2021.
Explore the implementation, compare projects, or ask how my experience fits a role. Answers draw on the same public facts as this portfolio.
I’m open to applied AI, LLM, NLP/search, and AI backend opportunities across EMEA.
[email protected]