Machine Learning Engineer · Aachen, Germany

I build ML systems
that actually work

Clinical ML · LLM engineering · production deployment — from ICU mortality models to LLM-powered wealth analytics.

M.Sc. Data Science, RWTH Aachen · Research Assistant at Uniklinik RWTH · Working Student at Aixigo AG. Full ML lifecycle: data engineering, model training, SHAP explainability, Docker/Azure deployment, and model monitoring. Open to MLE roles in Munich and Germany.

IK
0.978
AUC-ROC
ICU mortality · MIMIC-III/IV · LSTM
0.892
Avg Precision
Patient-level splits · temporal windowing · calibrated
10K+
Clinical Notes
Bio_ClinicalBERT · FAISS · local LLaMA · RAG
<800ms
p95 Latency
FastAPI · Docker · Azure CI/CD
01 /

Featured Projects

Clinical ML

ICU Mortality Prediction System

LSTM-based predictor on MIMIC-III/IV. Full ETL → feature engineering → training → containerised inference API. XGBoost + SHAP explainability dashboards validated by ICU clinicians.

AUC 0.978 · AP 0.892
LLM · RAG

Clinical Notes RAG Pipeline

Hybrid retrieval over discharge summaries. Bio_ClinicalBERT dense embeddings + keyword search, DSPy-optimised prompt chains, local LLaMA generation — precision@k + faithfulness eval harness.

Faithfulness evaluated
FinTech · LLM

Smart Portfolio Insider

LLM-powered analytics over financial dataframes at Aixigo AG. LangChain + DSPy RAG, prompt guardrails, streaming UX. Integrated into the Bloxx wealth platform in production.

Production deployed
02 /

Experience & Education

Work Experience
Aug 2024 – Dec 2025
Research Assistant — Clinical ML
Uniklinik RWTH Aachen · Institute for Computational Biomedicine
ICU mortality (LSTM, AUC 0.978, AP 0.892), production RAG pipeline, XGBoost + SHAP clinician dashboards, model monitoring with retraining triggers, Docker/Azure CI/CD.
Jan 2023 – Apr 2024
AI & Software Development (Working Student)
Aixigo AG
Smart Portfolio Insider (LangChain + DSPy RAG), ML microservices (PyTorch, scikit-learn) via FastAPI + Docker, ETL pipelines, GitLab/Jenkins CI, FitNesse testing.
Sep 2019 – Sep 2020
Technical Consultant
Buzzware Tech
End-to-end project delivery, Agile/Kanban, data warehouse schemas, ETL pipelines, Power BI dashboards.
2017 – 2019
Software Developer
EBMAC · MADD Solutions
RESTful APIs (Python/Java), SQL/NoSQL backends, front-end dashboards, CI and containerisation.
10+ years
Freelance Full-Stack & ML/AI
Fiverr (IkramKhan8)
Full-stack development, custom ML models, LLM fine-tuning, ETL pipelines for international clients.
Education
2020 – 2025
M.Sc. Data Science
RWTH Aachen University, Germany
Thesis: Combinatorial optimisation (vertex elimination in graphs) using branch and bound on NVIDIA GPUs — CUDA-accelerated.
2013 – 2017
B.S. Computer Science
University of Management & Technology (UMT), Pakistan
Certifications
Celonis: Use and Interpret Views · Celonis Foundations
CITI Program (MIT): Human Research & Data/Specimens Only Research 2 · Conflicts of Interest
Languages
English — C1 (Professional working proficiency)
German — A2, actively pursuing B1
Profiles
github.com/IkramKhan8 huggingface.co/IkramKhan8 ikramkhan.de
02 / PROJECTS

What I've Built

Four projects spanning clinical ML, LLM/RAG engineering, financial ML, and process mining. Real engineering work — systems built with production discipline.

Python · PyTorch · XGBoost · SHAP · Docker · Azure

ICU Mortality Prediction System

End-to-end mortality prediction on MIMIC-III/IV ICU data. Strict patient-level splits, temporal windowing (6–12h bins), leakage controls, model calibration. XGBoost + SHAP clinician dashboards. Deployed on Azure via Docker CI/CD. Built under PhysioNet/IRB protocols.

⬡ github.com/IkramKhan8
0.978
AUC-ROC
0.892
Avg Precision
<800ms
p95 Latency
The Clinical Problem

ICU teams generate massive volumes of time-series EHR data. Early identification of deteriorating patients is manually demanding and inconsistent. The system flags high-risk patients using historical ICU trajectories with an explainable probability score clinicians can act on at 3am.

Data governance: the repo uses a synthetic data generator replicating MIMIC schema distributions. Anyone can clone and run the full pipeline without PhysioNet credentials — a design choice I now cite in interviews as proof of data governance awareness.

Pipeline Architecture
MIMIC-III/IV raw data ──→ ETL (temporal alignment, normalisation)
Feature engineering ──→ LSTM training (6–12h bins)
XGBoost + SHAP ──→ Clinician explainability dashboard
FastAPI inference service ──→ Docker → Azure CI/CD
Monitoring ──→ Drift detection + automated retraining
Tech Stack
PyTorchLSTMXGBoostSHAPscikit-learnFastAPIDockerAzureMLflowEvidently AIPandasNumPyPrometheus
Results
  • AUC-ROC 0.978 and AP 0.892 on held-out cohort with strict patient-level splits
  • Temporal windowing using 6–12 hour bins; leakage controls enforced at data splitting level
  • Model calibration verified across risk deciles — not just raw AUC
  • SHAP explanations validated by ICU clinicians, reducing black-box concerns for high-risk flags
  • Prediction drift detection and automated retraining triggers in production monitoring
  • p95 inference latency under 800ms; containerised FastAPI served on Azure
Technical Approach

LSTM trained on 48-hour ICU windows with strict patient-level train/test splits to prevent temporal leakage — a common failure mode in clinical ML. Feature engineering: forward-fill imputation, time-step delta features, rolling statistics over physiological signals.

Two complementary models: LSTM for sequence modelling, XGBoost for explainability. Tree SHAP values are faster and more interpretable than gradient attribution on recurrent networks, making XGBoost the right choice for the clinician-facing dashboard.

What I'd Do Differently

Introduce a feature store (Feast or Hopsworks) to decouple feature engineering from training. Add multi-task learning for additional clinical outcomes. Replace ad-hoc monitoring with a proper ML observability platform like Arize or WhyLabs.

DSPy · LangChain · Bio_ClinicalBERT · LLaMA · FastAPI · Docker

Clinical Notes RAG Pipeline

Hybrid retrieval-augmented generation over clinical discharge summaries. Dense + sparse retrieval, DSPy-driven prompt optimisation, local LLaMA generation, privacy-preserving on-premise inference. Full precision@k + faithfulness + hallucination rate eval harness.

⬡ github.com/IkramKhan8
The Problem

Clinical notes are dense and unstructured — discharge summaries, progress notes, radiology reports. Keyword search fails on medical abbreviations and terminology. A semantic QA system needs to retrieve the right passages and generate grounded answers without hallucinating clinical facts.

Privacy: local LLaMA generation keeps all inference on-premise. No patient data leaves the network. Built on public datasets (PubMedQA, MedQA, synthetic clinical notes) for open reproducibility. Also used DSPy-driven prompt optimisation to generate augmented clinical notes grounded in historical data, expanding rare-case coverage in offline evaluations.

Architecture
Clinical notes ──→ Bio_ClinicalBERT embeddings
FAISS dense index + keyword search → hybrid retrieval (top-k)
DSPy prompt chain ──→ local LLaMA generation
Eval harness ──→ precision@k · faithfulness · hallucination rate
Tech Stack
Bio_ClinicalBERTFAISSDSPyLangChainLLaMA (local)FastAPIDockerW&BDVCHuggingFace
Results & Evaluation
  • Precision@k retrieval evaluation with configurable k and score thresholds
  • Answer faithfulness scoring comparing generated answers to reference ground truth
  • Hallucination rate tracked as a first-class metric — not an afterthought
  • DSPy compiler automatically searches demonstration space; outperforms manual prompt templates
  • Full Docker Compose stack — clone and run in one command, no proprietary data needed
  • W&B experiment tracking + DVC data versioning for reproducible lineage
Why These Choices

Bio_ClinicalBERT over general encoders: domain-adapted on MIMIC notes, it substantially outperforms sentence-transformers on clinical abbreviation resolution and entity matching. Hybrid retrieval adds keyword recall for rare drug names and ICD codes that dense search misses.

DSPy over raw prompting: the DSPy compiler searches the few-shot demonstration space programmatically. You define the signature; DSPy finds the optimal examples. This cuts prompt engineering iteration time significantly and produces more robust chains.

Local LLaMA over API: privacy-preserving, no data egress, reproducible behaviour across runs, zero inference cost at scale.

LangChain · DSPy · Python · Docker

Smart Portfolio Insider (Aixigo AG)

LLM-powered analytics over financial dataframes built during my working student role at Aixigo AG. RAG with LangChain + DSPy, prompt guardrails, streaming UX. Integrated into the Bloxx wealth platform for live client use.

Context

Aixigo AG is a wealth management software company. The Smart Portfolio Insider is an LLM-powered analytics layer over time-series financial dataframes, allowing analysts to query portfolio data in natural language. Schema-aware prompt templates ensure the LLM understands the financial data model. Output guardrails validate generated analysis before it reaches clients. Streaming I/O keeps the UX responsive on large portfolio datasets.

Tech Stack
LangChainDSPyPythonDockerFastAPIFlaskPyTorchscikit-learnGitLab CIJenkinsFitNesse
Engineering Work at Aixigo
  • Smart Portfolio Insider shipped to production and integrated into the Bloxx wealth platform
  • ML microservices (PyTorch, scikit-learn) via Flask/FastAPI + Docker with GitLab/Jenkins CI — significantly reduced manual deployment overhead
  • Shell/Python ETL pipelines for large-scale portfolio data; improved data freshness for downstream model training
  • Automated testing (FitNesse), developer documentation (MkDocs), Agile delivery via Jira sprints
  • Java API services for platform integration
Public Demo Version

A public demo replicates the same LLM + dataframe pattern using Yahoo Finance data — fully open-source, no proprietary data required. Demonstrates schema-aware prompting, output validation, and reproducible evaluation.

Celonis EMS · RapidMiner · ProM 6.11

Process Mining — Ticket System Analysis

Descriptive, predictive, and prescriptive analysis on IT ticket event logs. Conformance checking, bottleneck identification, and KPI impact reporting to stakeholders.

Approach

Applied the three-tier process mining methodology to an IT service desk ticket system. Descriptive analysis revealed the actual process model from event logs (vs. the assumed process). Predictive analysis identified ticket attributes correlating with SLA breaches. Prescriptive analysis recommended routing and prioritisation changes.

Tech Stack
Celonis EMSRapidMinerProM 6.11
Deliverables
  • Process discovery: actual vs. intended ticket resolution flow from raw event logs
  • Conformance checking to flag deviations and non-compliant cases
  • Bottleneck identification with queue time and waiting time breakdown per activity
  • KPI impact reporting to stakeholders — actionable recommendations for process improvement
03 / ABOUT

The Story So Far

IK
Open to MLE roles in Germany
📍 Aachen, GermanyMunich preferredRemote-friendly
🇬🇧 English C1🇩🇪 German A2 → B1

I started as a software developer — building APIs, backend systems, and full-stack products at EBMAC and MADD Solutions in Pakistan, alongside more than 10 years of freelance work on Fiverr. At some point, writing systems that moved data around wasn't enough. I wanted to build systems that could learn from it.

So I came to Germany. My M.Sc. in Data Science at RWTH Aachen was genuinely demanding — signal processing, combinatorial optimisation, statistical learning at depth. My thesis took me into CUDA territory: GPU-accelerated branch and bound for vertex elimination in graphs on NVIDIA GPUs. That intersection of algorithms and hardware performance is something I keep coming back to.

At Uniklinik RWTH I worked with real ICU data under PhysioNet/IRB protocols, with clinicians who would actually use the outputs. Building a mortality predictor that hit AUC 0.978 and AP 0.892 mattered less than making the SHAP explanations meaningful to a doctor at 3am. That experience shaped how I think about ML: models are only as good as the trust they earn.

At Aixigo AG I learned what production ML engineering actually demands: versioned models, monitored services, LLM integrations with guardrails, CI/CD pipelines, and code other engineers can extend. Not notebooks — systems.

What I'm looking for next: a team building real ML products, where the work is measurable and the engineering discipline is serious. Based in Aachen, open to Munich, willing to relocate. German A2 and actively working toward B1.

2026 — NOW
Machine Learning Engineer
Seeking MLE roles · Munich & Germany Remote
Open to roles with production ML, engineering rigour, and measurable impact.
Aug 2024 – Dec 2025
Research Assistant — Clinical ML
Uniklinik RWTH Aachen · Institute for Computational Biomedicine
ICU mortality prediction (AUC 0.978, AP 0.892), clinical RAG pipeline (Bio_ClinicalBERT, local LLaMA), XGBoost + SHAP clinician dashboards, model monitoring with automated retraining, Docker/Azure CI/CD.
Jan 2023 – Apr 2024
AI & Software Development (Working Student)
Aixigo AG
Smart Portfolio Insider (LangChain + DSPy RAG), ML microservices in production, GitLab/Jenkins CI, ETL pipelines, FitNesse testing, Java API services.
2020 – 2025
M.Sc. Data Science
RWTH Aachen University
Thesis: GPU-accelerated branch & bound for combinatorial optimisation (vertex elimination in graphs) on NVIDIA GPUs using CUDA.
Sep 2019 – Sep 2020
Technical Consultant
Buzzware Tech
End-to-end client delivery, Agile/Kanban, data warehouse design, ETL pipelines feeding Power BI dashboards.
2017 – 2019
Software Developer
EBMAC · MADD Solutions
RESTful APIs (Python/Java), SQL/NoSQL backends, front-end dashboards, CI and containerisation.
2013 – 2017
B.S. Computer Science
University of Management & Technology (UMT), Pakistan

Technical Skills

ML / Deep Learning
PyTorchLSTMXGBoostSHAPTensorFlowscikit-learnCUDA / GPU optimisationONNXNLPmodel calibration
LLM / RAG Engineering
DSPyLangChainFAISSBio_ClinicalBERTLLaMA (local)HuggingFace TransformersPrompt engineeringRetrieval evalprivacy-aware inference
MLOps & Infrastructure
DockerFastAPIAzureKubernetesGitHub ActionsJenkinsGitLab CITerraformMLflowW&BEvidently AIDVCPrometheus
Data & Cloud
PythonPandas / NumPyPySparkSQLAzure DatabricksAzure Data FactoryKafkaPower BI
Backend & Languages
PythonJavaREST / gRPCSQLAlchemyPydanticAsyncIOTypeScript / ReactLinux / BashGit
Process & Tools
Celonis EMSRapidMinerProM 6.11Jira / AgileMkDocsFitNesseMaven
04 / BLOG

Writing

Honest technical write-ups on what I'm building and learning. Not tutorials — accounts of real engineering decisions, what worked, what didn't, and why.

March 2026

Building an ICU Mortality Prediction System with LSTM and SHAP

How I designed a fully reproducible clinical ML pipeline under data governance constraints — and what AUC 0.978 + AP 0.892 actually required to achieve.

Read post →
Coming — April 2026

How I Added MLflow Experiment Tracking to My MIMIC Project

Integrating MLflow into an existing PyTorch training loop — runs, artifacts, model registry, and what it changes about how you iterate.

Coming Soon
Coming — May 2026

Detecting Data Drift Between MIMIC-III and MIMIC-IV with Evidently AI

Measuring feature distribution shifts across two MIMIC versions and what it implies for model reliability when training and serving distributions diverge.

Coming Soon
Coming — June 2026

Optimising LSTM Inference: PyTorch vs ONNX Benchmarks

Exporting my ICU mortality LSTM to ONNX and benchmarking against the PyTorch baseline. Targeting 2–5× speedup — what I measured and where the gains came from.

Coming Soon
Coming — July 2026

What I Learned Building a RAG Pipeline for Clinical Notes

Embedding model selection (why Bio_ClinicalBERT beats general encoders here), DSPy vs. raw prompting, and measuring answer faithfulness without a human eval loop.

Coming Soon
Coming — August 2026

Adding Model Monitoring to My ML Pipeline with Evidently AI

End-to-end monitoring: Prometheus metrics on FastAPI, Evidently drift reports, and automated retraining triggers in a production-like CI loop.

Coming Soon
05 / CONTACT

Let's Talk

Open to MLE roles in Germany

I'm currently looking for Machine Learning Engineer positions in Germany — Munich is the top preference, but I'm open to NRW, Berlin, and remote across Germany.

If you're building ML systems in production and need an engineer who cares about the full lifecycle — data, models, deployment, monitoring — let's connect.

Recruiters, hiring managers, and engineers are all welcome. Response time: typically within 24 hours.

Send a message

Or email directly: ik_khan1@icloud.com

What I'm looking for
  • Machine Learning Engineer roles in Germany (Munich preferred)
  • Companies with ML actually running in production — not just planning it
  • Teams that care about engineering quality, not just model accuracy
  • Remote-friendly or hybrid setups considered across Germany / EU
  • Open to relocation — Aachen → Munich is an easy move