I build AI that helps people, and the backends that make it reliable.

Yiorgos Papadopoulos

About

yiorgos@papadopoulos:~$whoami

name:
Yiorgos Papadopoulos
role:
ML & LLM Systems Engineer @ Zimmerman
studying:
MSc AI & Applications @ University of Thessaly
based in:
Thessaloniki, Greece
focus:
medical imaging, LLM systems, typed and tested Python backends
languages:
Greek, English

Projects

yiorgos@papadopoulos:~$ls projects/

thesis/
BSc thesis, graded 10/10
mammo/
Radiologist-in-the-loop decision support
model-pipeline/
ML service for grant-management analytics
narrative-engine/
Cited country narratives for the Global Fund
lead-gen/
Automated sourcing from IATI funding data

yiorgos@papadopoulos:~$cat projects/thesis.md

Chest X-ray pathology classifier

public, Write-up on GitHub

A deep learning system that reads chest X-rays, flags lung pathologies, and shows clinicians where it looked.

  • [ AUC 90%+ ]
  • [ 112K X-rays ]
  • [ Graded 10/10 ]
  • Seven disease-specific models, each fusing MobileNetV2 and ResNet50 backbones, trained on the NIH ChestX-ray14 dataset (about 112K images).
  • All models above 90% AUC, with two-phase training, mixed precision, and class weighting for imbalance.
  • Grad-CAM heatmaps for every prediction, so a clinician can check the model's reasoning.
  • A PyQt5 desktop app that runs inference and visualization end to end.

stack: Python · TensorFlow · Keras · OpenCV · Grad-CAM · PyQt5 · CUDA

yiorgos@papadopoulos:~$cat projects/mammo.md

Breast cancer screening assistant

Private repo, demo on request

A decision-support tool that flags, localizes, and prioritizes suspicious findings on screening mammograms, so radiologists read faster and miss less. The radiologist always makes the diagnosis.

  • [ Test AUC 0.844 ]
  • [ Patient-level splits ]
  • [ Cloud GPU training ]
  • VinDr-Mammo and CBIS-DDSM merged into one manifest, with patient-level splits and a leakage guard.
  • Separate models for masses (full image) and calcifications (high-resolution patches), with Grad-CAM localization.
  • Evaluated on AUC, sensitivity and specificity at an operating point, and calibration.
  • Clinical context checks: a breast-density masking flag and an image-adequacy check.
  • A FastAPI demo: upload a mammogram, get a score, a heatmap, and an urgent or not-urgent triage.

stack: Python · PyTorch · torchvision · FastAPI · pydicom · OpenCV · scikit-learn · Grad-CAM · uv

yiorgos@papadopoulos:~$cat projects/model-pipeline.md

Model Pipeline

private, Zimmerman case study

Made 24 machine learning use cases in a production analytics service correct, reproducible, and small.

  • [ 24 use cases ]
  • [ GBs to ~1MB ]
  • [ 1,300+ tests ]
  • [ 100% coverage ]
  • Audited models across regression, classification, clustering, anomaly detection, optimization, network analysis, and causal inference.
  • Removed target leakage, fixed aggregation and train/test splits, and aligned prediction inputs with production data.
  • Capped model size, cutting saved artifacts from several GB to about 1MB.
  • Added experiment tracking (config, winning model, hyperparameters, data and git versions) and deterministic run replay.
  • Drove the service to 100% test coverage behind ruff, flake8, bandit, and type checking.

stack: Python · Flask · scikit-learn · Pandas · Pydantic · pytest · Swagger

yiorgos@papadopoulos:~$cat projects/narrative-engine.md

Narrative Engine

private, Zimmerman case study

Turns Global Fund country data and supporting documents into validated, cited written narratives with LLMs.

  • [ Cited outputs ]
  • [ Cost-guarded ]
  • [ 100% coverage ]
  • Collects country evidence and supporting documents, then generates narratives through LiteLLM with validation and citations.
  • Generation is an explicit, cost-guarded job with a persistent spend ledger, so model costs never surprise anyone.
  • Results are saved as versioned SQLite bundles; the API only serves saved content, so visitors never trigger a model call.
  • Feature-flagged integration with the Data Explorer frontend, behind 100% test coverage.

stack: Python · Flask · LiteLLM · Pydantic · SQLite · Docker · pytest

yiorgos@papadopoulos:~$cat projects/lead-gen.md

AI Lead Generation Agent

private, Zimmerman case study

Replaced a manual sales-research process with a pipeline that finds and qualifies leads in international aid funding data.

  • [ ~875K activities ]
  • [ 5 detectors ]
  • [ Cost-tracked LLM calls ]
  • [ 100% coverage ]
  • Queries the IATI Datastore (Solr, about 875K activities) to source and qualify leads.
  • Five organisation-level signal detectors: new funding, first-time publisher, activity spike, dormant publisher, and large commitment, each returning structured evidence.
  • Three-stage contact enrichment (cached runs, then IATI data, then OpenAI web search as a fallback) that cuts paid LLM calls, with per-run token and cost tracking.
  • A month-by-month historical replay to measure lead volume, at 100% test coverage.

stack: Python · Flask · Solr · OpenAI API · Pydantic · pytest

Experience

yiorgos@papadopoulos:~$git log --author="Yiorgos"

commit aaab150 (HEAD -> main)

Date: Feb 2026 to present

ML & LLM Systems Engineer @ Zimmerman

  • Building backend services that integrate ML, NLP, LLMs, and embedding-based retrieval, exposed through typed APIs and React frontends.
  • Owning backend features end to end, from design through PR review to deployment.
  • Working closely with senior engineers through multi-round code reviews on GitHub.
  • Shipping in agile sprints and presenting completed work to the engineering team.

Stack

yiorgos@papadopoulos:~$cat stack.toml

[machine_learning]

items = [

"PyTorch", "TensorFlow", "Keras", "scikit-learn", "Pandas", "NumPy", "OpenCV", "Grad-CAM",

]

[llms_and_retrieval]

items = [

"LiteLLM", "OpenAI API", "embeddings", "semantic search", "prompt evaluation",

]

[backend]

items = [

"Python", "Flask", "FastAPI", "Pydantic", "REST and Swagger", "SQL", "MySQL", "SQLite", "Solr",

]

[engineering]

items = [

"Git and GitHub", "code review", "pytest", "100% coverage", "pre-commit", "ruff", "Docker", "uv", "Jira",

]

[languages]

items = [

"Python", "SQL", "C++", "JavaScript", "HTML",

]

Education

yiorgos@papadopoulos:~$cat education.md

MSc in Artificial Intelligence and Applications

University of Thessaly · Oct 2026 to present

BSc in Computer Science and Telecommunications

University of Thessaly · 2021 to 2026

  • GPA 7.5/10
  • Specialization in Data Management and Artificial Intelligence
  • Thesis graded 10/10

Erasmus+ exchange

ISLA Polytechnic Institute, Porto · 2024 to 2025

certifications:

  • AI in Healthcare Specialization, Stanford University
  • Generative AI for Healthcare, Google Cloud (2026)

Try it

Welcome. You can type here.

Try help, or pick a command from the list.

yiorgos@papadopoulos:~$

Hi, I'm Yiorgos, a machine learning engineer from Thessaloniki, Greece.

I'm drawn to problems where a model has to be both accurate and trustworthy, such as reading medical images. Just as much, I enjoy building the typed, tested backends that bring those models to real people.

I studied Computer Science and Telecommunications at the University of Thessaly, spent an Erasmus+ year at ISLA Polytechnic Institute in Porto, and I'm now doing an MSc in Artificial Intelligence and Applications.

Outside code, I love fashion and the visual arts, and that eye for detail shapes everything I build.