IT

Adem Bilge

AI Engineer, Software Engineer, Applied Researcher

I build intelligent applications by combining machine learning and AI agents with experience in software engineering.

Based in Milan, Italy
Studying at Politecnico di Milano

Firat Adem Bilge

AI engineering, intelligent systems & applied ML

↓

Complex systems.
Clear thinking.

I’m interested in the whole application, from how a model learns to how the software runs.

Adem overlooking the hills and city of Turin
A little perspective, away from the terminal.

I’m Adem, an AI engineer in Milan, studying Computer Science at Politecnico di Milano. I like building software that can answer questions, use tools, and do something useful with the result. Getting all three to happen reliably keeps me occupied.

My work has taken me from spotting unusual network traffic at ULAK to fingerprint models and large-scale video analytics at HAVELSAN. More recently, I built a Telegram support agent at Entervia that could retrieve session information and handle booking tasks. Somewhere along that route, 600 TB started sounding like a reasonable amount of data.

These days, I’m most interested in AI agents and the software around them. I enjoy following a problem from the model through the API to the deployment, including the bits that stubbornly refuse to behave. My computer vision research also led to Tinysign, published in 2024.

600+TB

Data processed with Dask

300+nodes

Kubernetes in production

86% IoU

Fingerprint segmentation

Selected work

From knowledge retrieval to encrypted messaging. A few things I’ve built to explore how software can work better.

Cognify knowledge vault dashboard

Cognify

Personal knowledge, made searchable.

A second brain that reads your documents. An asynchronous pipeline extracts, summarizes, classifies, and embeds files, with semantic search and cited answers across your vault.

Django · Next.js · Celery · Transformers

Inside Cognify

Document intelligence

Cognify is a full-stack personal knowledge management system — a second brain that reads your documents. Scanned PDFs, images, and plain-text files enter an asynchronous Celery worker pipeline.

OpenCV preprocessing and Tesseract OCR extract text. DistilBART summarizes it, a zero-shot MNLI classifier tags topics, and Sentence-BERT creates semantic embeddings for search and analysis.

A workspace for knowledge

The Next.js 16 dashboard brings together a knowledge vault, Recharts analytics, and browser-native PDF tools to split, merge, and reorder documents.

Document versioning preserves parent-child lineage. Sensitive mode, soft-delete recovery, collections, annotations, bookmarks, and notes keep documents and quotations organized.

Retrieval & answers

Cosine similarity search finds meaning across documents rather than relying only on keyword matches. In the global RAG chat, RoBERTa generates cited answers from the most relevant chunks in the vault.

Upload → OCR → Summarize → Classify → Embed → Completed

Access & operations

The Django REST backend enforces JWT authentication, user-scoped data isolation on every query, and audit logging for every action.

35 automated tests, Docker Compose orchestration, and Prometheus worker-latency metrics support the implementation. MIT licensed.

Built with Python, Django, Next.js, Celery, Transformers, Sentence-BERT, Docker, Prometheus

CryptMe

A closer look at encrypted communication.

A Java client-server messaging project exploring symmetric encryption, TCP sockets, and local encryption and decryption in a Swing desktop client.

Java · TCP sockets · AES / DES · Swing

View repository
CryptMe Swing chat client with username, encryption mode, and messaging controls
The original CryptMe desktop client
Inside CryptMe

Real-time messaging

CryptMe is a client-server messaging application built entirely in Java. Users register unique usernames, connect to a central server, and join a shared chat room.

TCP sockets carry encrypted payloads between connected clients. The server manages connections, message routing, and disconnects without reading plaintext.

Encryption in the client

The Swing GUI performs encryption and decryption locally. Users can switch at runtime between AES (128-bit) with a 16-byte initialization vector and DES (56-bit) with an 8-byte IV.

Selecting a method generates a fresh secret key and IV for the session and distributes them to participants.

Implementation notes

This learning project demonstrates symmetric cryptography in a multi-user chat. Its original implementation includes DES and a persistent log of generated session keys and IVs for auditability.

Built with Java, AES, DES, Socket Programming, Swing GUI

The server in action

CryptMe server console

Built in
production

3+ years of engineering experience across AI agents, distributed systems, computer vision, and backend development.

View full CV
Dec 2025 — Aug 2026

Entervia

AI Engineer

Full-time · Early-stage startup · Milan, Italy

A Telegram support agent handling 50% of user queries, with grounded answers and booking tools.

Summary

At Entervia, a Telegram support question could lead straight into a booking or payment. I built the Python agent with LangGraph, retrieving session information from PostgreSQL/pgvector before connecting it to Django REST APIs. “You’re booked” is a sentence that really ought to come with an actual booking.

The work moved between retrieval, tool calls, and testing what happened when something failed. I evaluated representative support queries and deployed the agent and backend on AWS ECS and RDS with CI/CD. The agent handled 50% of user queries; the services reached 99.9% uptime.

Contributions
  • Built a Telegram support agent with Python, LLM APIs, and LangGraph, managing 50% of user queries.
  • Implemented retrieval over text embeddings in PostgreSQL/pgvector to ground answers in session data.
  • Connected tool and function calling to Django REST APIs to check bookings, confirm payments, and send invitations.
  • Evaluated RAG accuracy, tool-call accuracy, and failure handling using representative support queries and test scenarios.
  • Deployed the agent and backend on AWS ECS and RDS with a CI/CD pipeline, reaching 99.9% uptime.

Python, LLM APIs, LangGraph, RAG, PostgreSQL, pgvector, Django REST APIs, AWS ECS, RDS, CI/CD

Jun 2023 — Mar 2025

HAVELSAN

Software Engineer

Full-time · Defense & IT — EyeMiner video analytics platform · Ankara, Turkey

Video analytics across 600+ TB of data, with 400+ Dask workers and 300K requests a day.

Summary

At HAVELSAN, I worked on getting video analytics through 600+ TB of data using Dask and 400+ workers. That meant dividing the work, building Python/gRPC services, and packaging Docker services as Helm charts for a 300+ node Kubernetes cluster. There were plenty of moving parts to keep track of.

I also worked with Kafka to queue and partition roughly 300K requests a day, with PostgreSQL storing metadata. Following those requests through the system was part of the job, so I built monitoring and diagnostic tools with Prometheus, Grafana, and Elasticsearch. At that scale, “what is it doing?” deserves a useful answer.

Contributions
  • Built a Dask platform on Linux for video analytics across 600+ TB of data, sizing 400+ workers.
  • Packaged Docker services as Helm charts and deployed them to a 300+ node production Kubernetes cluster.
  • Developed Python/gRPC microservices for low-latency communication and used PostgreSQL for metadata.
  • Used Kafka to queue and partition video analytics requests for parallel execution, processing 300K requests/day.
  • Deployed Prometheus and Grafana on Kubernetes and Elasticsearch on nodes; built monitoring and diagnostic tools.

Python, Dask, Linux, Docker, Helm, Kubernetes, gRPC, PostgreSQL, Kafka, Prometheus, Grafana, Elasticsearch

Jun 2022 — Jun 2023

HAVELSAN

Machine Learning Engineer

Full-time · AFIS fingerprint recognition system · Ankara, Turkey

Fingerprint segmentation at 86% IoU, with a separate identification solution reaching 92% test accuracy.

Summary

My machine learning work at HAVELSAN moved between fingerprint images, OpenCV preprocessing, and PyTorch training runs. I worked with 6,000 fingerprints, using morphological operations to extract regions for training, then checking segmentation on held-out data. Fingerprints are wonderfully individual; preparing them for a model still takes some persuasion.

Data augmentation and hyperparameter tuning improved segmentation IoU by 4 percentage points, reaching 86% IoU. I also shipped an identification solution with an automated training workflow that reached 92% test accuracy. Keeping those two results distinct matters: finding the fingerprint region and identifying the fingerprint are different jobs.

Contributions
  • Built a PyTorch fingerprint segmentation model on 6,000 fingerprints, reaching 86% IoU on held-out data.
  • Built OpenCV preprocessing pipelines with morphological operations to extract fingerprint regions for training.
  • Improved segmentation IoU by 4 percentage points through data augmentation and hyperparameter tuning.
  • Shipped an identification solution with an automated training workflow, reaching 92% test accuracy.

Python, PyTorch, OpenCV, morphological operations, data augmentation, hyperparameter tuning

Jun 2020 — Oct 2020

ULAK HABERLEŞME

Machine Learning Engineer

Internship · National telecom infrastructure company · Istanbul, Turkey

Isolation Forest anomaly detection for SD-WAN, from network logs to false-positive analysis.

Summary

During my ULAK internship, I turned network logs into features for an SD-WAN monitoring system. That meant cleaning data with Pandas and extracting packet counts, byte rates, and flow durations before training a scikit-learn Isolation Forest. The first task was giving “unusual traffic” a more useful definition than “that looks odd.”

I evaluated the model with precision, recall, and F1, then examined false positives to understand what it was flagging unnecessarily. Moving between the features and the evaluation helped me improve detection and get practical experience with the less glamorous, rather essential business of checking a model’s decisions.

Contributions
  • Built a scikit-learn Isolation Forest model to detect unusual network traffic in an SD-WAN monitoring system.
  • Built Pandas pipelines to clean logs and extract packet counts, byte rates, and flow durations for training.
  • Evaluated Isolation Forest with precision, recall, and F1, then analyzed false positives to improve detection.

Python, scikit-learn, Isolation Forest, Pandas, feature engineering, precision, recall, F1

The whole system

My strongest work happens where infrastructure, data engineering, and applied machine learning meet.

AI Engineering

I build LLM agents that retrieve information, call tools, and work inside backend services. I also test whether their answers and actions hold up.

LLMs, RAG, pgvector, AI agents, OpenAI Agents SDK, LangGraph, tool calling, function calling, MCP

Machine Learning

My work includes fingerprint segmentation, computer vision, and anomaly detection, with data preparation and evaluation alongside model development.

PyTorch, scikit-learn, OpenCV, NumPy, Pandas

Software Engineering

I build Python services and APIs, connect them to databases, and test the behavior that applications depend on.

Python, SQL, Django, FastAPI, REST APIs, gRPC, Swagger/OpenAPI, pytest, PostgreSQL, Redis

Cloud & DevOps

I deploy services on AWS and Kubernetes, distribute data workloads, and build the monitoring needed to understand what is running.

AWS, Kubernetes, Docker, Helm, Jenkins, CI/CD, Dask, Apache Kafka, Prometheus, Grafana, Elasticsearch

All technologies & tools

Programming

Python, SQL

AI

LLMs, RAG, pgvector, AI Agents, OpenAI Agents SDK, Tool Calling, Function Calling, LangGraph, MCP

ML & Computer Vision

PyTorch, scikit-learn, OpenCV

Data Engineering

NumPy, Pandas, Dask, Apache Kafka

Backend, APIs & Testing

Django, FastAPI, REST APIs, gRPC, Swagger/OpenAPI, pytest

Databases

PostgreSQL, Redis, Elasticsearch

Cloud & DevOps

AWS (S3, EC2, ECS, Lambda, Bedrock, SageMaker), Kubernetes, Docker, Jenkins, Helm, Prometheus, Grafana

Tools & Methodologies

Git, Linux, Agile/Scrum, CI/CD

Languages

Turkish

Native

How I use Turkish

Turkish is my native language and the one I grew up speaking. I use it naturally in everyday life, with family and friends, and in professional conversations. I can explain a technical problem, discuss the details, or have a casual conversation without having to think about the language itself.

English

C1 · Professional

How I use English

English is a language I use comfortably for both my studies and professional work. I use it to read technical documentation and research papers, discuss engineering problems, and explain my ideas. I’m comfortable going into detail, asking questions, and working through a problem with other people in English.

Studying and collaborating in international environments has made it a natural part of how I communicate. I can take part in technical meetings, write documentation, and talk about my work without needing to switch languages. I describe my level as C1, with the confidence to use English throughout a professional conversation.

Italian

B1 · Intermediate

How I use Italian

I’m learning Italian while living in Milan, and I try to use it in everyday conversations. I can talk about familiar topics, explain what I need, and handle simple interactions in daily life. I’m still building my vocabulary and fluency, so regular practice matters to me.

At B1, I can also manage simple business conversations when the topic is familiar and the discussion is straightforward. For a detailed technical discussion, I’m more confident in English. My aim is to become more comfortable using Italian in professional settings as I keep learning and speaking it day to day.

Always learning

A foundation in computer science. A continuing interest in how research becomes useful software.

Apr 2025 — Apr 2027 · Milan, Italy

Politecnico di Milano

Master of Science - Computer Science and Engineering

Master's program

Study

My Master’s at Politecnico di Milano focuses on artificial intelligence, AI agents, and multiagent systems. I’m studying how learning algorithms work and how to use them inside software applications. The courses bring together advanced AI techniques, natural language processing, and the engineering needed to build systems that use AI.

I’m particularly interested in language models and agents that can work with tools or collaborate with other agents. Studying multiagent learning alongside software engineering helps me connect these ideas to my previous experience with services and distributed systems. It’s the direction I want to keep developing as I move further into AI engineering.

Coursework
  • Advanced AI Techniques
  • Natural Language Processing
  • Engineering AI-Enabled Software Systems
  • Multi Agent Learning
  • From LLMs to Agentic AI
  • Multiagent Systems

Oct 2017 — May 2022 · Ankara, Turkey

Hacettepe University

Bachelor of Science - Computer Science

GPA 3.33/4 · Honor Student

Study

I studied Computer Science at Hacettepe University, graduating with a GPA of 3.33/4 as an Honor Student. Algorithms, data structures, databases, and software engineering formed the foundation of my degree. As I progressed, I became more interested in machine learning and computer vision, and took courses in those areas alongside deep learning.

My thesis was in computer vision and later became Tinysign, a paper I co-authored that was published in 2024. Working on it gave me experience with developing an idea, testing it, and explaining the results in a research paper. That combination of programming, experimentation, and evaluation still shapes how I approach machine learning work.

Coursework
  • Algorithms and Data Structures
  • Software Engineering
  • Databases
  • Deep Learning
  • Machine Learning
  • Computer Vision

Sep 2019 — Feb 2020 · Czestochowa, Poland

Czestochowa University of Technology

Erasmus+ Exchange Program

International exchange semester

Study

I spent an Erasmus+ semester at Czestochowa University of Technology in Poland, studying applications of AI, machine learning, and computer vision. I wanted to explore these subjects in a different academic environment. Working in international project teams also gave me practice in explaining technical ideas across different languages and working styles, and helped me become more comfortable studying and collaborating abroad.

Coursework
  • Applications of Artificial Intelligence
  • Machine Learning
  • Computer Vision

Research, applied

Computer vision and the reliability of AI-led scientific analysis.

Tinysign research examples comparing low-resolution sign language footage and pose information
Low-resolution sign language recognition

Tinysign

Sign Language Recognition in Low-Resolution Settings

Co-author of research on recognizing sign language when video quality and bandwidth are limited. Published in Signal, Image and Video Processing, Springer Nature.

June 2024 · SIViP 18, 6881–6890 · London, United Kingdom

Abstract

In Tinysign, we studied sign language recognition in low-resolution video, including privacy-sensitive settings such as healthcare. We introduced the first benchmark for this setting and developed a pose-conditioned super-resolution module and I3D classifier. The system reached 47.5% test accuracy against a 25.5% baseline. I co-authored the paper, published in Signal, Image and Video Processing in 2024.

Highlights
  • Introduced the first benchmark for low-resolution sign language recognition.
  • Addressed recognition in privacy-sensitive and low-bandwidth video scenarios.
  • Developed a pose-conditioned super-resolution module and I3D classifier for low-resolution sign language recognition.
  • Reached 47.5% test accuracy against a 25.5% baseline.

Sycoscience

Testing Hypothesis-Driven Bias in Agentic Data Science

Master’s thesis · In progress

My current Master’s thesis at Politecnico di Milano investigates whether a user’s preferred hypothesis can influence a data-science agent’s statistical choices and conclusions, even when the dataset stays the same.

I’m developing a reproducible evaluation framework with controlled synthetic datasets, neutral and opposing prompts, and logged Python workflows. The aim is to distinguish valid differences in analysis from unsupported conclusions, selective data use, or methods chosen to support a desired answer.

Expected publication: April 2027

Proposed Sycoscience architecture separating the private evaluator from the agent and its isolated Python environment; simulation replaces LLM execution

Certifications

Building my knowledge of AI, intelligent agents, and the tools to put them into practice.

Featured

Let’s build
what’s next.

Have a role, a challenging problem, or an idea worth exploring? I’d like to hear about it.

Prefer to write here?

Compose a message, then open it in your email app to send.