Michał Nawrotmnawrot@gibson:~$Michał's LaboratoryMichał Nawrot · 10⁰ mMichał Nawrot · Op. 26MN · 145 BPM

Lead Machine Learning EngineerAI Team Lead > role: lead_ml_engineer | ai_team_lead Top secret · Lead ML Engineer · AI Team Lead Mission log · Lead ML Engineer · AI Team Lead Nocturne for Lead ML Engineer & small AI ensemble Live set · Lead ML Engineer × AI Team Lead

Michał Nawrot

I build generative AI that earns its keep in production. My work has run from a decision tree to a GPU platform, and from writing most of the code to leading the people who write it. Today I lead a small AI team that takes LLM features from a first prototype to models running on our own GPUs.

  • Since2023 · LLMs in production
  • StackPython · vLLM · Terraform · GCP
  • Leadsa small AI team

Part One; ===== SECTION .text =====Experiment No. 110⁷ m · Low Earth orbitI. Allegro con brioTrack 01 · Peak time

Selected work

Systems, not notebooks. Each one is built to run in production.

01

Product content engine

Generative enrichment for e-commerce product feeds

Challenge
Ad channels reward complete, well-written listings. Merchant feeds rarely are: titles are thin, categories are missing, and attributes are buried in free text.
What I built
A Python service that writes titles and descriptions in several languages, maps products onto Google and Amazon taxonomies with exact, fuzzy and model-based matching, and extracts attributes such as color, size, material, gender and age group. It also detects language and scores title quality with XGBoost.
Where it stands
In production at DataFeedWatch since 2023. My team keeps adding new capabilities to it.
  • Python
  • OpenAI
  • Vertex AI
  • Open-weight LLMs
  • Celery
  • RabbitMQ
  • PostgreSQL
  • XGBoost

02

LLMs on our own GPUs

Open-weight models, served like a product

Challenge
Sending every product through a paid API limits control over cost, latency and data. Self-hosting gives that control back, but only if it's reliable.
What I built
An asynchronous LLM server that runs open-weight models with vLLM on our own GPU cluster. It uses spot and standard capacity, a pre-baked machine image for each vLLM release, and an endpoint test suite that gates promotion from dev to stage to prod.
  • vLLM
  • Open-weight LLMs
  • FastAPI
  • Docker
  • GCP

03

The platform, as code

A cloud migration you can read in a pull request

Challenge
The AI stack needed a new Google Cloud home, and every part of it had to be reproducible.
What I built
A Terraform Cloud control plane with four layers of modules and a private registry. Team permissions are code, deploys are keyless through Workload Identity Federation, and networking, DNS, Cloud SQL, GPU instance groups and smoke-test runners are all defined in it. Once it was live, I tore the old environment down.
Scale
About a hundred infrastructure pull requests in a single quarter.
  • Terraform Cloud
  • GCP
  • AWS
  • WIF
  • Checkov
  • TFLint

04

Smaller tools, real leverage

Support copilot, agents over MCP, classic ML

  • Support copilot. A Jira-integrated, RAG-style assistant that finds similar past tickets and drafts replies for the support team. Tickets are processed by our self-hosted LLM.
  • Agents over MCP. Exploring how AI assistants can work safely with our platform through the Model Context Protocol.
  • Classic ML. An XGBoost model improved with PySpark and deployed on AWS with Terraform.
  • RAG
  • Vector search
  • Jira API
  • MCP
  • Self-hosted LLM
  • PySpark

Part Two; ===== SECTION .path =====Experiment No. 210⁻¹ m · Optical tableII. Andante cantabileTrack 02 · Build-up

The path here

Physics lab, then consulting, then data science, then production ML.

  1. 2022 — now

    Lead Machine Learning Engineer

    DataFeedWatch by Cart.com

    Generative AI for product advertising: hybrid open-weight and proprietary LLMs, GPU serving on GCP, Flask, Celery and RabbitMQ services, CI/CD and Terraform. I lead the AI team.

  2. 2020 — 2022

    Senior Data Scientist

    Codility

    Led a churn-prediction system (FastAPI, Docker, EKS) and a data denormalization project (Airflow, S3, Redshift). Built Grafana monitoring and ran adaptive-testing research.

  3. 2019 — 2020

    Data Scientist

    Accenture AI

    Predictive models with scikit-learn pipelines, served as Flask APIs on Kubernetes and Seldon, with NLP features extracted from free text.

  4. 2018 — 2019

    Business Analyst & Scrum Master

    Sollers Consulting

    Requirements, solution design and user testing with clients. Ran the team's Scrum.

  5. 2012 — 2017

    PhD studies, experimental physics

    University of Warsaw

    Lasers and optical systems: experiments, calibration and data analysis, with results presented in France, Latvia, Spain and the USA.

Part Three; ===== SECTION .rodata =====Experiment No. 310⁻⁶ m · NanostructuresIII. ScherzoTrack 03 · Acid line

Toolbox

Generative AI & ML

OpenAI, Vertex AI, open-weight LLMs, vLLM, agents, MCP and structured output, RAG and vector search, XGBoost, scikit-learn, PySpark

Services & MLOps

Python, FastAPI, Flask, Celery, RabbitMQ, PostgreSQL, Docker, Kubernetes, Helm, GitHub Actions

Cloud & infrastructure

Google Cloud (GPU, Cloud SQL, Artifact Registry), AWS, Terraform Cloud, Workload Identity Federation, CodeQL, Checkov, TFLint

Leading

Code review and releases, AI-assisted engineering with Claude Code, and explaining ML to people who don't need the math

Intermission; ===== SECTION .bss =====Coffee break10⁻¹⁰ m · AtomsIntermezzoChill-out room

Off the clock

Physicist by training. I play piano (Chopin, Rachmaninov, Satie, Tiersen), and I'm into cosmology and rockets, Goa trance and visuals, Heroes III and Kerbal Space Program, and memory palaces.

Finale; ===== SECTION .exit =====Final experiment10²⁶ m · Observable universeIV. Finale: PrestoSunrise

Let's build something that ships.HACK THE PLANET.Let's cook up something brilliant!Let's launch something.Too many notes? Let's talk.Let's make some noise.

Happy to talk about applied ML, LLM platforms and building AI teams.