> {{ kickerTyped }}

{{ h1Typed }}

I build AI systems for domains that resist automation — agents that need less trust, not more. Blind trust in an LLM is Morty trusting Rick: fine, right up until the episode turns dark.

View my work Read writing  →
Google
ex-Yandex ex-Huawei ex-Altium ex-Citi
Forever Ph.D.
Dmitry Grishchenko
{{ stickerTyped }}
ENGINEER // OPTIMIZER // POWERLIFTER
Trajectory
TWO ARCS · ONE HABIT: FORMALIZE → CONSTRAIN → VERIFY → THEN THE MODEL
Arc I · from theory to practice
OCT 2017 — NOV 2020 · UGA
Math optimization

PhD on proximal methods that reduce dimension on their own. Main takeaway: if the math isn't provable, the algorithm may fail somewhere — no matter how many experiments converged.

AUG 2020 — NOV 2021 · HUAWEI
Applied math → R&D

Tech lead of a PCB-router team built from zero: hiring, delegating, an integer geometry library from scratch. Exact science — no floating-point slack, and every algorithm judged on speed and optimality. Not a high-RPS service; the first time math had a deadline and a team.

NOV 2021 — DEC 2022 · YANDEX
R&D → users

Driver-position prediction on the road graph — the first thing I built that I could watch working from the back seat. −20% wrong assignments, −15% cancellations. Learned to listen to the business, take their metric and translate it into one the algorithm can optimise — no cost or cancellation counts inside the model.

JAN 2023 — MID 2026 · GOOGLE · BEFORE AI
SRE, by hand

Before AI got strong enough for people to lean on it blindly. Automation for reliable resource use across internal services. On-call. Incident management, postmortem culture — the domain here is failure itself, and it can be formalized too.

MID 2026 — NOW · GOOGLE · THE AI ERA
SRE, with AI

Everyone started trusting AI blindly and calling it a replacement for people. It isn't — too many hallucinations, and someone still has to own the outcome. So I build agents that need less trust, not more: formalize the failure modes, constrain the actions, then let the model in.

Arc II · under the bar
2020 — NOW · ATHLETE
Trained with a coach

Lifting since 2020, first meet in 2021. Long cycles, slow progress, and the cost of over-reacting to one bad day.

2025 — NOW · COACH
Trained as a coach

Coaching one athlete since 2025 — competing since the same year. First on my own programmes adapted to his life, then on plans written with ChatGPT from the literature. It works when you control it: "what I saw at training" has to become "drop the weight" correctly. So AI is the translator from plain speech into the app; the maths stays honest — from papers and proven programmes.

2026 — NOW · FOUNDER
Built the coach

PowerliftME — for people who chase the weight on the bar, not the abs in the mirror. Programmes and progression logic first; the app runs fully without the model. One model ships inside — as a translator, never a decider. Coding agents made building it alone realistic: AI as the means, not the point.

I started in a world where the hard part was finding a solution. Now a solution is generated in seconds. The scarce resource is understanding: is the problem posed right, can the answer be trusted, who owns the consequences.

Selected work
PowerliftME cockpit — 225 kg on the bar, plates per side, target RPE
PowerliftME — Today
CoachON-DEVICE
{{ m.text }}
Tell the coach how today feels…
PowerliftME
iOS · solo — engine to app

A powerlifting planner that works fully without AI: log your training honestly and the 16-week engine does the rest. One fine-tuned model ships inside, on-device — it phrases, never decides. Plus a plan linter I'm hardening in public: one detector shipped, four to go.

Swift MLX · llama.cpp Gemma · Qwen3 Hummingbird API
powerlift.me  →
Latest writing
See all posts  →
The model doesn't compute. It talks.
4 SEP 2026 · {{ readTalks }} · AI SYSTEMS
The proof I can't link to
DRAFT · RELIABILITY
Everyone can write a generator. Almost nobody writes a linter.
DRAFT · METHOD

Research archive

Peer-reviewed, unlike this website. The optimisation years — where the habit of formalising first comes from.

Citationsh-indexi10 17375 Google Scholar →
Papers Talks Teaching
{{ holding }}{{ utc }} LOCAL
{{ t.name }} {{ t.n }}
IDTitleYearVenueTopicCitedLink
{{ p.id }} {{ p.title }}
{{ p.authors }}
{{ p.year }} {{ p.venue }} {{ p.topic }} {{ p.citedText }} {{ p.linkLabel }} · PDF
Record
{{ recTitle }}
Venue
{{ recVenue }}
Note
{{ recNote }}
Keywords
{{ recKeywords }}
DateTalkWhereMaterial
{{ t.date }} {{ t.title }} {{ t.where }} {{ t.slidesLabel }} · Video

Links go to the talk pages of the 2016–2021 site (abstracts, dates, venues). Slide PDFs were never committed to the repo — they return once the files are added to /files/.

YearsCourseWhereWhatMaterials
{{ c.years }} {{ c.course }} {{ c.where }} {{ c.what }} Course page

Three years as a teaching assistant at UGA: numerical optimisation, convex and distributed optimisation, and the pre-MSc refresher. Before that, calculus at HSE and five years grading the Tournament of Towns.

Custodian: D. Grishchenko
Institute: Université Grenoble Alpes
Interests
optimization · sparsification · distributed algorithms
Writing
Archive/Notes/Ideas
AI systems
03
On-device models, fine-tuning, and the boundary between code and model.
+
Optimization
02
Control loops, lookup matrices — where the PhD still earns its keep.
+
Agents
01
Building agents that reason, act, and stay inside their limits.
+
Reliability
02
Systems, SRE, and agents that get paged so people don't have to.
+
Method
04
How a messy domain becomes an engine with validators.
+
{{ p.date }} {{ p.title }} {{ p.read }} {{ p.cat }}
View all posts  →{{ shown }}
The series has a constitution
EIGHT RULES · EVERY POST OBEYS THEM
  1. 01Don't mistake an observation for a proof.
  2. 02Don't mistake a system's capability for its reliability.
  3. 03Don't mistake the technically best solution for the optimal one for a real product.
  4. 04Don't ship a technology because it's fashionable.
  5. 05The cheaper generation gets, the more verification is worth.
  6. 06A maths education is worth more for how it makes you think than for what it makes you know.
  7. 07Strong engineering usually starts with the right problem statement and metric, not with code.
  8. 08AI can be the tool that makes a product possible while staying a minor part of the product.
← Writing

{{ essay.title }}

{{ essay.date }}·{{ essay.read }}·{{ essay.tagline }}

{{ essay.dek }}

{{ b.t }}

{{ b.t }}

‹{{ b.t }}›

{{ b.t }}
{{ r.n }}
{{ r.l }}
CAN'T TELL YOU
{{ b.cant }}
CAN TELL YOU

CV

One page, A4. This is the print layout — the PDF is the same file.

Download PDF ↓
Dmitry Grishchenko
AI engineer for messy domains
domain → engine → validators → model — the order matters

Optimization PhD turned SRE turned applied-AI builder. I take folklore-heavy expert domains, formalize them into engines with validators, and only then put fine-tuned models to work inside — most recently a fully on-device AI coach, built and shipped solo. Reliability discipline from production SRE; mathematical rigor from a PhD in optimization. Every claim below links to something you can check.

Projects
PowerliftME — AI powerlifting coach, founder2026 — now
  • Formalized the domain: canonical 16-week periodization engine; 2-D adaptation matrix as the single source of truth
  • Validators before AI: a plan linter, rules-first like the engine — 1 of 5 detectors shipped, 4 in progress; documented the spec/code gap in public rather than hide it
  • Fine-tuned 3 models (Gemma 4 E2B + two Qwen3), one shipped on-device (GGUF · llama.cpp, imatrix-quantized to 3.25 GB) as a translator only — the app is fully functional without it; trained with LoRA on MLX; coach-gemma-e2b live on HuggingFace
  • Swift monorepo: iOS app + Hummingbird API + shared SPM contract enforced by the compiler
Experience
SWE-SRE — Google, MunichJan 2023 — now
  • Built an internal agent from scratch, now hardening reliability across thousands of internal services · on-call, incident response, postmortems
Senior Software Developer — Yandex, MoscowNov 2021 — Dec 2022
  • Driver positioning on the road graph: snapped noisy GPS traces, predicted future positions, built the quality metrics for both
  • Cut erroneous trailing-order assignments 20% — ride cancellations dropped 15%
Senior Software Developer, team lead — Huawei, MoscowAug 2020 — Nov 2021
  • Built the C++ team from zero and shipped the router's integer geometry library from scratch (contractor from Aug 2020, team lead from Feb 2021)
PhD researcher & teaching assistant — Université Grenoble AlpesOct 2017 — Nov 2020
Software Developer — Altium, Moscow2016 — 2017
Selected publications
Skills
algorithms & optimization C++ Go reliability / SLOs incident response evals & validators LoRA fine-tuning MLX · llama.cpp · on-device Swift · SwiftUI Python distributed systems
Education

PhD, applied mathematics — Université Grenoble Alpes, 2020

MSc, applied mathematics — HSE, Moscow, 2017

BSc, mathematics — HSE, Moscow, 2015

Languages
Russiannative
Englishfluent
GermanB1 → B2
Also

Competing powerlifter & coach
Ex first-team Russia, logic puzzles
Codeforces Candidate Master

LAB // EXPERIMENT REGISTRYUNDER CONSTRUCTION
NODE: M5 / 32GB · MLX (train) · llama.cpp (device)API SPEND: 0STATIC · LAST BUILD {{ buildDate }}
WIP — entries are being written up from notes. Numbers here are working figures, not published results; the essays are the checked version. registry v0 · dates pending
STATUS · SNAPSHOT AT BUILD
{{ l.prompt }}{{ l.text }}
dmitry@lab:~$ {{ labCmdTyped }}
RUNNING NOW
{{ x.id }}{{ x.title }}
THE RULE OF THIS PLACE

Nothing here is a claim until it has been through the harness. Killed experiments stay in the registry — a negative result is still a result.

EXPERIMENTS · {{ nAll }} · NEWEST FIRSTclick = cat · j/k = move
{{ x.id }} {{ x.status }} {{ x.title }} {{ x.tag }}
hypothesis{{ x.hypothesis }}
method{{ x.method }}
result{{ x.result }}
verdict{{ x.verdict }}
cost{{ x.cost }}
HARNESS · HOW EVERY EXPERIMENT GETS JUDGED

There is no reference API to compare against. So the instrument is checked before the model, and three independent loops have to agree.

1 gate 2 fact scorer 3 hard holdout manual read
1 · gate51 parser fixtures + 8 chat probes. Field accuracy EN ≥ 90%, RU ≥ 80%. Chat: Cyrillic share · no markdown · 1–4 sentences · non-degenerate. Relevance is judged by hand — and the harness says so.
2 · scorerAn answer counts only if the language matches, every kg-number traces to ground truth or the fact block, and the key number is within one plate (2.5 kg; weeks exact or ±1).
calibrationThe scorer runs on the gold answers first and must score ~100%: 99.7 / 100 / 100 / 99.4. A model well below that line has a real failure, not a parser quibble.
3 · holdoutSplit by programme, never by pair — a programme cannot sit on both sides. When the old set saturated (80/80), it was retired: a test that always passes measures nothing.
manualStill finds what no check does. Three corpus holes on holdout v2 came from reading, not from metrics.
WHY THIS MUCH

A finite run of good results is evidence, not proof — the PhD lesson. Generation got cheap; verification did not. This page is where that bill gets paid.

POSTMORTEMS · {{ nPm }} · BLAMELESSclick = open

Every killed or shelved experiment gets the same report an SRE writes after an incident. Same headings, same rule: no blame, only causes and actions.

{{ p.id }}{{ p.status }}{{ p.title }}{{ p.sev }}
summary{{ p.summary }}
impact{{ p.impact }}
root cause{{ p.root }}
trigger{{ p.trigger }}
detection{{ p.detection }}
lessons{{ p.lessons }}
action items{{ p.actions }}
LOG · NEWEST FIRST
{{ e.d }}{{ e.tag }}{{ e.t }}
DMITRY(1)USER COMMANDSDMITRY(1)
NAME
dmitry — AI engineer for production-critical domains
SYNOPSIS
dmitry [--formalize DOMAIN] [--constrain] [--verify] [--model LAST]
DESCRIPTION
Takes a domain that resists automation, writes it down as an engine with validators, and only then lets a model in. Refuses to call a result proven on experiments alone. Ships alone when needed; prefers a team with clear roles.
OPTIONS
--formalizeTurn expert knowledge into rules code can run. Default; cannot be disabled. --constrainBound what the model may decide before it decides anything. Not one number from the model. --verifyGate → scorer → hard holdout → manual read. Instrument calibrated before the model. --offlinePrefers on-device. API spend on the current project: 0. --metricTranslates a business question into something an algorithm can optimise, and back. --oncallHas been paged. Writes the postmortem.
EXIT STATUS
0shipped · in harness · with a receipt 1killed · with a postmortem 2shelved · by a constraint, not by the data
BUGS
Over-tightens correctness when "good enough, on time" was the goal.
‹second known bug›
‹third known bug›
ENVIRONMENT
M5 / 32 GB · MLX for training · llama.cpp on the phone · Munich
SEE ALSO
cv(1), essays(7), experiments(8), mail(1)
grishchenko.org{{ buildDate }}DMITRY(1)
dmitry@lab:~$ {{ promptLine }}
terminal is navigation, not a shell · exit to site