ML Engineer

Dimitris Effrosynidis Portfolio

PhD data scientist with 15 published papers and a Kaggle kernel winner. Portfolio covers RAG, FAISS, and sentiment analysis — a benchmark for ML researcher portfolios.

PythonHugging FaceRAGDeep Learning

Location

Not listed — probably too busy shipping to update the bio.

Credentials

  • Ph.D. in Data Science

Skills

PythonHugging FaceRAGDeep Learning

Notable

  • Published 15 papers
  • "EDA is Fun!" Kaggle kernel with 110,000+ views and 2,100+ upvotes, won 1st prize for most informative/upvoted kernel

What makes it work

A breakdown of the choices that make this portfolio stand out.

1

A single README as a full topic index, not a project list

The repo is organized as one long, emoji-headed README — "How to Create a RAG System Step-by-Step," "Mastering LLM Interactions," "Traditional vs. Generative AI for Sentiment Classification," "Topic Modeling on my Watched Movies," "Outlier Detection," "Time Series Analysis," "Clustering Neighborhoods," "Pandas Tutorial" — each linking out to its own notebook. It reads less like a portfolio of three or four flagship projects and more like a maintained personal curriculum spanning fundamentals through frontier techniques.

2

"Highlights" bullet lists under every entry

Rather than a one-line description per project, each section breaks its own notebook down into a short numbered or bulleted process — e.g. the RAG walkthrough lists Data Preparation and Chunking, Embedding the Data, Indexing with FAISS, Retrieval of Relevant Chunks, Grounded Generation with an LLM as five distinct highlighted steps. That format forces the same discipline as a case study: showing the steps, not just the destination.

3

Deliberate juxtaposition of classical and current techniques

The index places "Traditional vs. Generative AI for Sentiment Classification" (TF-IDF and logistic regression vs. zero-shot and task-specific LLMs) right alongside RAG, quantization, and LoRA-adjacent topics. Explicitly comparing the old approach to the new one, in the same repo, does more to demonstrate range than simply listing the newest technique alone would.

4

Kaggle kernel upvote count as public peer review

A Kaggle kernel with 2,100+ upvotes and 110,000+ views is not just a project — it is thousands of other data scientists saying "this is good work." That social proof mechanism is unique to the ML/DS community and worth displaying explicitly, and it sits naturally alongside the GitHub repo's own star/fork/watch counts as a second, independent signal.

What ML Engineers can take from this

Specific, actionable tips to apply to your own portfolio — no generic advice.

  • Structure a large personal portfolio as one indexed README with emoji or icon section headers rather than dozens of separate, undiscoverable repos — it turns years of scattered notebooks into one browsable curriculum.

  • Under each project, list the actual steps (data prep, method, evaluation) as short bullets instead of a single description sentence. It reads as more rigorous and is far faster for a reviewer to scan.

  • Explicitly contrast an old/classical method against a new one on the same problem in a single write-up — it demonstrates judgment about tradeoffs, not just familiarity with the latest technique.

  • Kaggle kernels with methodology explanations — not just code — accumulate upvotes over time and become permanent credentials. Cite the exact upvote count somewhere visible.

  • Keep at least one project updated to use the current year's recommended libraries and techniques (RAG, quantization, LoRA). A portfolio frozen on older techniques signals stagnation even if the fundamentals sections are still valuable.

Case studies

Less a showcase than a syllabus. Dimitris Effrosynidis runs the portfolio as one indexed README where each entry lists its steps under “Highlights”, and logistic regression sits beside a fine-tuned Flan-T5 on the same sentiment problem — range shown as a comparison, not a list.

Case StudyadvancedOngoing production work (NTT Data, 2025)

Skill Gap Analysis & Skill/Occupation Extraction Pipelines (Europass/ESCO)

PythonTransformer-based NLPCross-encoder rankingSemantic skill mappingAPIs

Production work at NTT Data for the Europass platform and the ESCO ecosystem. It consists of two skill and occupation extraction pipelines built as 3-model and 5-model workflows: text splitting, semantic skill mapping, classification and cross-encoder ranking. On top of them sits a Skill Gap Analysis engine that compares a user's current skills with a target occupation's requirements, identifies missing skills, and computes a readiness score.

Multi-stage NLP inference with cross-encoder reranking, running against a standard taxonomy (ESCO) at European scale. This is production ML engineering: model orchestration, configurability and safe deployment, not a notebook result.

  • Split → map → classify → rerank pipeline design, in 3- and 5-model variants

  • Readiness score turns a skill diff into a single user-facing number

  • Configurable model selection and thresholds per client, plus zero-downtime model patching

Projects

ResearchadvancedPhD research (published 2022)

Exploring Climate Change on Twitter: 15.8M Tweets, Seven Aspects

PythonNLPSentiment analysisStance classificationTopic modelingGeospatial analysis

Two peer-reviewed papers from his PhD research. The first, "The climate change Twitter dataset" (Expert Systems with Applications, 2022), builds a dataset by merging three existing Twitter climate-change collections and enriching them with machine-learning labels. The second, "Exploring climate change on Twitter using seven aspects" (PLOS ONE, 2022), analyzes 15,789,411 tweets spanning 13 years (2006–2019) across stance, sentiment, aggressiveness, deviation from historic temperature, user gender, topics, and 4,913 natural-disaster events.

Large-scale, labelled social-media data joined with climate and disaster records, with every claim peer-reviewed. That is evidence of experimental design and of handling messy real-world text at scale.

  • 15.8M tweets over 13 years, about a third of them geolocated

  • Seven enrichment dimensions, joined with an external dataset of 4,913 disasters

  • Public dataset on Mendeley Data, so other researchers can build on it

ML Modelintermediate2–4 weeks (estimate)

Emotion Detection on Movie Reviews

Pythonscikit-learnIMDbPYTF-IDFChi-square feature selectionEnsemble learning

A 7-class classifier (anger, disgust, fear, happiness, sadness, surprise, no emotion) for sentences from IMDb reviews. Keyword-matched sentences were pulled via IMDbPY (2,514 in total). Three human judges labelled them, agreement was measured with Cohen's kappa (0.54 overall), and 2,002 sentences where at least two judges agreed were kept. Chi-square and TF-IDF feature ranking were compared across 8 classifiers, with the cutoff chosen at 3,000 features. The write-up also tests 16 pre-processing techniques, 14 engineered count features and 3 emotion lexicons.

The project builds its own labelled dataset and measures inter-annotator agreement before training anything. It also reports what did not help (lexicons with poor coverage, pre-processing combinations) — the kind of honesty reviewers look for.

  • Hand-labelled dataset with Cohen's kappa reported per emotion and judge pair

  • Feature selection compared across 8 classifiers before the model was chosen

  • Negative results reported: emotion lexicons covered only 19.7–49.6% of words, and adding them lowered performance

ML Modelintermediate1–2 weeks (estimate)

Traditional vs. Generative AI for Sentiment Classification

Pythonscikit-learnHugging Face TransformersSentenceTransformersFlan-T5

A head-to-head comparison of five ways to classify Flipkart product reviews as positive or negative (3-star neutral reviews excluded): logistic regression on TF-IDF, logistic regression on all-MiniLM-L6-v2 embeddings, zero-shot classification via embedding cosine similarity, a fine-tuned generative Flan-T5, and the task-specific juliensimon/reviews-sentiment-analysis model.

Putting a cheap interpretable baseline next to an LLM on the same data — and scoring cost and labelling needs, not just accuracy — shows the judgment teams want when deciding whether an LLM is worth it.

  • Five methods on one dataset, from TF-IDF to fine-tuned Flan-T5

  • Evaluation criteria include compute cost and labelled-data needs, not just accuracy

  • Companion fine-tuning notebook: 79% → 89% accuracy

Ready to build your portfolio?

Follow the ML Engineer roadmap — skills, projects, and timeline to get hired.

ML Engineer Roadmap