Applied AI & MLOps
I focus on the engineering side of AI: building reproducible, maintainable systems that work in production — not just in notebooks. My work spans the full lifecycle: data ingestion, quality control, feature engineering, experiment tracking, model registry, serving, monitoring, and CI/CD — from classical ML pipelines to LLM/RAG systems with agent routing, mandatory citations, and golden evals.
Projects
CAE Copilot – Engineering AI Copilot
May 2026 – Present | cae-copilot.dmitryivanov.dev LangGraph RAG FastAPI Qdrant Streamlit
CAE Copilot – Engineering AI Copilot
May 2026 – Present | cae-copilot.dmitryivanov.devEngineering AI Copilot for technical documentation, calculations, and traceable answers — an Applied AI portfolio project built with the same production mindset as SoccerPredictAI (tests, docs, CI, k8s).
Not solver automation. Live MVP: document-grounded RAG, engineering calculation tools, LangGraph routing, and structured reports with mandatory citations.
Public key numbers
| Metric | Value |
|---|---|
| CAE docs corpus | 9 manuals ingested |
| Maturity stage | Stage 2 shipped (RAG + citations, LangGraph, tools, eval) |
| Golden Q&A eval | 14 cases; offline baseline 100% intent / citation / tool |
| Deployment | Separate FastAPI + Streamlit images, Qdrant, Helm/k8s |
Architecture
Engineer → Streamlit UI → FastAPI → LangGraph
├─ RAG (Qdrant + citations)
└─ Engineering tools (beam, FoS, bolt joint, sections)
Traceable demo path: Question → Retrieval → Citation → Calculation tool → Report
Evidence & docs
- Problem statement & positioning: docs.cae-copilot.dmitryivanov.dev/portfolio/problem-statement
- Architecture overview, data flow, and demo walkthrough: portfolio overview
- Live demo: cae-copilot.dmitryivanov.dev
- API (Swagger): api.cae-copilot.dmitryivanov.dev/docs
Tech Stack
| Layer | Tools |
|---|---|
| Agent orchestration | LangGraph, Pydantic tool schemas |
| RAG | Qdrant, multilingual-e5-base, page-aware chunks |
| Serving | FastAPI, Streamlit |
| Infrastructure | Docker, Kubernetes, Helm |
| Quality | Golden Q&A eval, lint, typecheck, pytest |
| Docs | MkDocs |
Key Engineering Decisions
- Traceable knowledge workflows: retrieval → citation → calculation tool → report
- Reliability-first: deterministic Python tools, golden Q&A eval, citations, offline fallback
- Production layout: separate FastAPI and Streamlit images, Qdrant vector store, k8s Helm chart
Evidence pack (fast links)
For interviews, I use these pages to demonstrate traceable agent design: RAG with citations, tool routing, eval discipline, and production deployment.
SoccerPredictAI – End-to-End MLOps Platform
May 2025 – May 2026 | soccer.dmitryivanov.dev | GitLab MLOps Kubernetes XGBoost FastAPI MLflow DVC
SoccerPredictAI – End-to-End MLOps Platform
May 2025 – May 2026 | soccer.dmitryivanov.dev | GitLabA production-style pet project built to demonstrate the full ML lifecycle in a real domain (football match prediction). Deliberately engineered as a system, not a collection of notebooks — domain-agnostic proof of production ML/MLOps discipline.
Public key numbers
| Metric | Value |
|---|---|
| Holdout log-loss | 1.006 (bookmaker benchmark ~0.97) |
| Holdout ROC AUC | 0.643 |
| Calibration (ECE) | 0.004 |
| Holdout set size | 135,970 matches (2024+) |
| DVC pipeline stages | 22 |
| Test suite | 560+ passing tests |
| Infrastructure cost | <€30/month (single self-hosted VPS) |
Evidence & docs
- System overview, readiness matrix, results, and demo script live in the project docs: docs.soccer.dmitryivanov.dev
- End-to-end pipeline analysis reports (Quarto): Pipeline summary & stages 01–07
- Reproducibility golden path (
dvc pull→dvc repro→mlflow ui): see Quickstart in the docs
Pipeline & Architecture
Scraping → PostgreSQL/MinIO → Great Expectations (DQ)
→ Feature Engineering (rolling stats + ELO ratings)
→ Temporal CV screening (5 models × 6 data fractions, MLflow)
→ Optuna hyperparameter tuning (CV-only, no holdout leakage)
→ Final retrain on full dataset → Model Registry
→ FastAPI (sync) + Celery/RabbitMQ (async inference)
→ Kubernetes + Helm → Prometheus + Grafana + Evidently (drift, in progress)
Tech Stack
| Layer | Tools |
|---|---|
| Orchestration | Airflow, DVC |
| Data & Storage | PostgreSQL, MinIO (S3), Parquet |
| Data Quality | Great Expectations |
| Feature Engineering | pandas, NumPy, scikit-learn |
| ML / Tuning | XGBoost, scikit-learn pipelines, Optuna |
| Experiment Tracking | MLflow (tracking + model registry) |
| Config | Hydra, params.yaml |
| Serving | FastAPI, Celery, RabbitMQ |
| Infrastructure | Docker, Kubernetes, Helm |
| Monitoring | Prometheus, Grafana, Evidently |
| CI/CD | GitLab CI, pre-commit, SOPS + Age |
| Docs | MkDocs, Quarto |
Key Engineering Decisions
- Anti-leakage experiment design: model selection by CV logloss only; holdout evaluated once in a dedicated `final_train` stage
- MLflow nested runs: parent run per data fraction, child run per model — full comparison matrix in the UI
- DVC pipeline: all stages versioned with input/output hashes; reproducing any experiment is a single command
- Data quality gates: Great Expectations suites at raw, interim and features layers — pipeline fails on schema violations
- Temporal CV: walk-forward folds with `startTimeUtc` boundaries — no future leakage in cross-validation
- Kubernetes deployment: Helm chart, SOPS + Age secrets, GitLab CI quality gates on every push
Evidence pack (fast links)
For interviews, I use these pages to demonstrate production reality: reproducibility, architecture, quality gates, monitoring, and results.
Chemwatch – ML Pipeline for Multilingual Document Processing
Jan 2021 – Jan 2022 | Freelance | Remote, Australia NLP OCR Python
Chemwatch – ML Pipeline for Multilingual Document Processing
Jan 2021 – Jan 2022 | Freelance | Remote, AustraliaProblem: Chemwatch (AU) maintains a large database of chemical Safety Data Sheets (SDS/MSDS) in 20+ languages. Manual extraction of structured data (ingredient names, CAS numbers, proportions) was the bottleneck.
Approach:
- OCR pipeline to handle both text-native and scanned PDFs
- Multilingual NLP (rule-based + ML classifier) to locate the ingredients section across document formats
- Confidence scoring + human-in-the-loop filtering for uncertain cases
- Validation against known CAS registry
Result: Reduced manual data extraction workload by 95%. Deployed as a batch processing pipeline.
Key Engineering Decisions
- Processed 50,000+ documents in EN, DE, FR, ES, IT, NL, SV, PT, FI, SK, VI and more
- Built custom section-detection model handling non-standard SDS formats and OCR noise across 20+ document layouts
- Reduced manual extraction workload from ~8h/day to <30min/day (95% reduction) via confidence-scored human-in-the-loop filtering and CAS registry validation
- Stakeholder dashboards cut chemical safety analysis time by 40%; delivered as a scheduled batch pipeline
Sample annotated MSDS documents (section detection output)

Skills
Certifications & Courses
- LLM: From Understanding to Product — ODS.ai (2026)
- MLOps and Production in Data Science 2.0 — ODS.ai (2023)
- MLOps and Production in Data Science 3.0 — ODS.ai (2024)
- Machine Learning and Data Analysis Specialization — Yandex / MIPT (2020)
- Introduction to Machine Learning — HSE University (2020)
Coursera certificates for all 6 courses of the ML and Data Analysis specialization (Yandex / MIPT), Introduction to Machine Learning (HSE University), and Introduction to Data Science.
