AI/ML, Anomaly Detection & LLM-Assisted Data Workflows
DE Interview Prep

AI/ML, детекция аномалий и LLM-воркфлоу для данных
Подготовка к DE-интервью

Fast-revision cheatsheet for Data Engineering interviews. Tailored for Senior/Lead Data Management Professional / Data Engineer roles focused on automation/AI/ML/statistical techniques for ingestion, enrichment, validation, and monitoring.

Шпаргалка для быстрого повторения перед Data Engineering интервью. Заточена под Senior/Lead Data Management Professional / Data Engineer роли с фокусом на автоматизацию/AI/ML/статистические методы для приёма, обогащения, валидации и мониторинга данных.

z-score · IQR · STL · S-H-ESD Prophet / SARIMA range checksпроверки диапазонов driftдрифт: PSI · KS · chi-sq LLM in prodв продакшне · human-in-loop Untangler · Syntea GPT-4

The one-paragraph framingКлючевой фрейминг (один параграф)

Lead every answer here with the same meta-point: DQ is a layered system, and you climb from cheap deterministic checks to expensive AI only when the cheaper layer demonstrably fails.

Начинай каждый ответ с общего тезиса: DQ — это многослойная система, ты поднимаешься от дешёвых детерминистских проверок к дорогому AI только тогда, когда более дешёвый слой наглядно не справляется.

Frame every technique around client-facing reliability: the failure you prevent is "a wrong economic indicator / data point reaches a client." Bring up false-positive cost and human-in-the-loop unprompted; that is what separates someone who has run AI in production (you: Syntea, Untangler) from someone who has only read about it.

Обрамляй каждую технику в контексте надёжности для клиента: сбой, который ты предотвращаешь — это «неверный экономический показатель / точка данных доходит до клиента». Упоминай цену ложных срабатываний и human-in-the-loop без подсказки; это отличает того, кто запускал AI в продакшне (ты: Syntea, Untangler), от того, кто только читал.

Your honest angleТвой честный уголYou may not have worked this specific data domain before. Say it once, then pivot to the transferable rigor: point-in-time correctness, handling revisions, and sizing monitoring by downstream blast radius (the 6.2B-record entity-resolution fix at Meta).Возможно, ты раньше не работал с этим конкретным доменом данных. Скажи это один раз, затем переходи к переносимой строгости: точность на момент времени, обработка ревизий и калибровка мониторинга по радиусу поражения downstream (фикс entity-resolution 6.2B записей в Meta).

The method ladder (the meta-answer)Лестница методов (мета-ответ)

When asked "how would you add AI/ML to validation," do not name one algorithm. Show the ladder and say you climb only when forced.

Когда спрашивают «как бы ты добавил AI/ML к валидации», не называй один алгоритм. Покажи лестницу и скажи, что ты поднимаешься только когда вынужден.

1. Deterministic rules1. Детерминистские правила 2. Robust statistics2. Робастная статистика 3. Classical ML3. Классический ML 4. Embeddings / NN4. Embeddings / NN 5. LLM
RungWhat it handlesCost / explainability
RulesSchema, not-null, type, freshness, row-count, referential, arithmetic identities (components sum to total)Free, fully explainable, auditable
Robust statsValue outliers per series: median+MAD, IQR, STL residual, S-H-ESD, forecast intervalsCheap, explainable thresholds
Classical MLText classification / mapping with labels (TF-IDF + LogReg/GBM), Isolation Forest for multivariateCheap, mostly explainable, needs labels
EmbeddingsSemantic mapping when surface forms differ (vendor desc → canonical series)Moderate, less explainable
LLMAmbiguous residual: schema mapping, doc gen, anomaly triage, code refactorExpensive, non-deterministic, needs guardrails
СтупеньЧто обрабатываетЦена / объяснимость
ПравилаСхема, not-null, тип, свежесть, row-count, ссылочная целостность, арифметические тождества (компоненты дают сумму)Бесплатно, полностью объяснимо, аудируемо
Робастная статистикаВыбросы значений на серию: median+MAD, IQR, остаток STL, S-H-ESD, интервалы прогнозаДёшево, объяснимые пороги
Классический MLТекстовая классификация / маппинг с метками (TF-IDF + LogReg/GBM), Isolation Forest для многомерныхДёшево, в основном объяснимо, нужны метки
EmbeddingsСемантический маппинг, когда поверхностные формы различаются (описание вендора → канонический ряд)Умеренно, менее объяснимо
LLMНеоднозначный остаток: маппинг схем, генерация документации, триаж аномалий, рефакторинг кодаДорого, недетерминистично, нужны ограничители
Interviewer will probeО чём спросит интервьюер"When would you NOT use ML?" Answer: whenever a rule solves it, when you cannot tolerate non-determinism on a client value, when you lack labels to measure precision/recall, or when LLM-per-row cost exceeds value. Most DQ value is in good rules.«Когда ты НЕ использовал бы ML?» Ответ: когда правило решает задачу, когда ты не можешь допустить недетерминизм на клиентском значении, когда нет меток для измерения precision/recall, либо когда цена LLM-на-строку превышает ценность. Большая часть пользы DQ — в хороших правилах.

Statistical anomaly / outlier detectionСтатистическая детекция аномалий / выбросов

Pick the method by series shapeВыбор метода по форме ряда

MethodIdeaUse whenWatch out
Z-scorez=(x-μ)/σ, flag |z|>3Roughly normal, stationarySkew breaks it; outliers inflate σ and hide themselves
Robust zmedian + MAD instead of μ,σSame, but outlier-resistantStill assumes stationarity
IQR fencesQ1−1.5·IQR, Q3+1.5·IQRSkewed, distribution-free defaultFlags normal seasonal peaks
STL residualSplit trend+seasonal+resid, test residSeasonal econ series (employment, retail)Needs enough history per period
S-H-ESDDe-seasonalize → Generalized ESD on residSeasonal + multiple anomaliesMore params; Twitter's method
Forecast intervalProphet/SARIMA predict + flag outside bandForecastable, "expected-range" checkRefit on revisions; cold start
Isolation ForestTree-based, isolates rare pointsMultivariate (each field fine alone)Less explainable; harder threshold
МетодИдеяКогда использоватьПодводные камни
Z-scorez=(x-μ)/σ, флаг |z|>3Примерно нормальное, стационарноеСкошенность ломает; выбросы раздувают σ и прячут себя
Robust zmedian + MAD вместо μ,σТо же, но устойчиво к выбросамВсё ещё предполагает стационарность
IQR fencesQ1−1.5·IQR, Q3+1.5·IQRСкошенное, distribution-free по умолчаниюФлагает нормальные сезонные пики
STL residualРазделить тренд+сезон+остаток, тестить остатокСезонные эконом. ряды (занятость, розница)Нужно достаточно истории на период
S-H-ESDДесезонализация → Generalized ESD на остаткеСезонность + множественные аномалииБольше параметров; метод Twitter
Forecast intervalProphet/SARIMA прогноз + флаг вне полосыПрогнозируемое, проверка «ожидаемого диапазона»Переобучение на ревизиях; холодный старт
Isolation ForestНа деревьях, изолирует редкие точкиМногомерное (каждое поле само по себе ОК)Менее объяснимо; сложнее порог

Rule of thumb: stationary → robust z / IQR · seasonal/trending → STL residual or S-H-ESD · forecastable → prediction interval · multivariate combos → Isolation Forest.

Эмпирика: стационарное → robust z / IQR · сезонное/с трендом → остаток STL или S-H-ESD · прогнозируемое → интервал прогноза · многомерные комбо → Isolation Forest.

Robust z-score (the safe default)Robust z-score (безопасное по умолчанию)

import numpy as np
def robust_z_flags(x, k=3.5):
    med = np.median(x)
    mad = np.median(np.abs(x - med))
    # 0.6745 makes MAD comparable to σ# 0.6745 делает MAD сопоставимым с σ
    z = 0.6745 * (x - med) / (mad or 1e-9)
    return np.abs(z) > k

STL → residual outliersSTL → выбросы остатка

from statsmodels.tsa.seasonal import STL
res = STL(series, period=12).fit()
resid = res.resid
# IQR on the residual, not the raw series# IQR на остатке, а не на сыром ряде
q1, q3 = np.percentile(resid, [25,75])
iqr = q3 - q1
flags = (resid < q1-1.5*iqr) | (resid > q3+1.5*iqr)

Forecast-interval ("expected-range") checkПроверка интервалом прогноза («ожидаемый диапазон»)

history ──► fit Prophet/SARIMA ──► forecast next obs + 95% interval │ actual lands ───────────────────────────► compare │ inside band → OK · outside band → FLAG (severity by distance)
история ──► фит Prophet/SARIMA ──► прогноз след. наблюдение + 95% интервал │ факт пришёл ─────────────────────────────► сравнение │ внутри полосы → OK · вне полосы → FLAG (серьёзность по дистанции)
GotchaEconomic series revise. If you refit on the latest, still-unrevised points you bake error into the band. Down-weight or exclude the most recent unrevised observations, and refit on a schedule. New series have no history → fall back to IQR until enough data (cold start).Экономические ряды ревизируются. Если переобучаешь на последних, ещё не ревизированных точках, ты запекаешь ошибку в интервал. Понижай вес или исключай последние неревизированные наблюдения, переобучай по расписанию. Новые ряды без истории → фолбэк на IQR до достаточного объёма (холодный старт).
CV bridgeМост в CV"Same discipline as the default-prediction model I owned end-to-end at Front Tier (Scala/Spark on Hadoop + Flask API, 50% loss reduction): a model in production where a wrong output has money attached, so I care about point-in-time correctness and not leaking future/revised data."«Та же дисциплина, что и в модели предсказания дефолта, которую я владел полностью в Front Tier (Scala/Spark на Hadoop + Flask API, −50% потерь): модель в продакшне, где неверный вывод имеет денежные последствия, поэтому я забочусь о точности на момент времени и не допускаю утечку будущих/ревизированных данных.»

Drift detection (different from anomaly)Детекция дрифта (отличается от аномалий)

Keep these cleanly separate; conflating them is a junior tell.

Держи их чётко раздельно; их смешение — признак джуна.

Anomaly / outlierDrift
GrainPoint / windowDistribution over a batch
Question"Is this observation unexpected vs the series's own history?""Did the shape of incoming data change vs a reference?"
CatchesFat-finger value, spike, missing releaseVendor changed units (% → bps), rescaled, methodology revision, schema/semantic shift, rebasing
Methodsz / IQR / STL / forecast intervalPSI, KS test, chi-square, mean/variance shift
ReactionCan auto-reject/quarantineFires a review — drift may be real regime change
Аномалия / выбросДрифт
ЗерноТочка / окноРаспределение на батче
Вопрос«Это наблюдение неожиданно относительно собственной истории ряда?»«Изменилась ли форма входящих данных относительно эталона?»
ЛовитОпечатка в значении, всплеск, пропущенный релизВендор поменял единицы (% → б.п.), пересчитал, ревизия методологии, сдвиг схемы/семантики, ребейзинг
Методыz / IQR / STL / интервал прогнозаPSI, тест KS, chi-square, сдвиг mean/variance
РеакцияМожет авто-отклонить/карантинЗапускает ревью — дрифт может быть настоящей сменой режима
GotchaDrift is not always an error. A recession is genuine drift; a vendor silently switching units is a defect. So drift triggers human review, not auto-reject. An anomaly check on one GDP print will not notice the whole series was rebased to a new base year; a drift check will. You want both, watching different things.Дрифт — не всегда ошибка. Рецессия — подлинный дрифт; вендор молча поменявший единицы — дефект. Поэтому дрифт запускает человеческое ревью, а не авто-отклонение. Проверка аномалий на одном принте GDP не заметит, что весь ряд ребейзировали на новый базовый год; проверка дрифта заметит. Нужны оба, следят за разными вещами.

PSI (Population Stability Index) — the workhorsePSI (Population Stability Index) — рабочая лошадка

# bin both windows, compare proportions
PSI = Σ (actual% − expected%) * ln(actual% / expected%)
# <0.10 stable · 0.10–0.25 moderate shift · >0.25 significant
# разбиваем оба окна, сравниваем пропорции
PSI = Σ (actual% − expected%) * ln(actual% / expected%)
# <0.10 стабильно · 0.10–0.25 умеренный сдвиг · >0.25 значимый

KS test for continuous distributions, chi-square for categorical. For an ML model add feature drift, prediction drift (early warning when labels are delayed), and concept drift (input→output relationship changed — the textbook driver in finance is regime change).

Тест KS для непрерывных распределений, chi-square для категориальных. Для ML-модели добавь feature drift, prediction drift (раннее предупреждение, когда метки запаздывают) и concept drift (изменилось отношение вход→выход — в финансах типичный драйвер — смена режима).

NLP / classification for enrichment & mappingNLP / классификация для обогащения и маппинга

Mapping messy vendor feeds to a canonical modelМаппинг грязных вендорских фидов на канонический модель

Use cases: map a vendor's free-text series description → standard indicator/country/frequency; resolve entities across vendors; parse units / seasonal-adjustment flags from text; dedupe near-identical series.

Кейсы: маппинг текстового описания ряда вендора → стандартный индикатор/страна/частота; резолв сущностей между вендорами; парсинг единиц / флагов сезонной корректировки из текста; дедупликация почти идентичных рядов.

vendor label ─┬─► rules / lookup (high-freq, stable cases) auto-accept ├─► fuzzy match (Levenshtein, token-set) auto if > θ ├─► classifier (TF-IDF + LogReg/GBM) auto if conf > θ ├─► embeddings + NN (semantic, diff surface) auto if conf > θ └─► LLM (residual only) (constrained to taxonomy) → human review │ human corrections ◄─────────────┘ (retrain labels)
метка вендора ─┬─► rules / lookup (частые, стабильные) авто-приём ├─► fuzzy match (Levenshtein, token-set) авто если > θ ├─► classifier (TF-IDF + LogReg/GBM) авто если conf > θ ├─► embeddings + NN (семантика, разные формы) авто если conf > θ └─► LLM (только остаток) (ограничен таксономией) → ручное ревью │ исправления человеком ◄────────────┘ (переобучение меток)

Auto-accept above a confidence threshold; route low confidence to a human; feed corrections back as training labels. Track mapping accuracy as a DQ metric.

Авто-приём выше порога уверенности; направляй низкую уверенность на человека; подавай исправления обратно как обучающие метки. Отслеживай точность маппинга как метрику DQ.

CV bridgeМост в CV"This is entity resolution across 6.2B records at Meta, and forcing convergence on a shared customer/account spine across 8 brands at Career.io. Mapping heterogeneous sources to one canonical model is exactly this work."«Это entity resolution по 6.2B записей в Meta и принуждение к конвергенции на общий customer/account spine через 8 брендов в Career.io. Маппинг гетерогенных источников на единую каноническую модель — ровно эта работа.»
Interviewer will probeО чём спросит интервьюер"Why not just use an LLM for all of it?" → Cost and non-determinism at scale; LLM-per-row does not scale, and you cannot audit a black-box mapping for a client-facing series. LLM handles only the ambiguous residual the cheaper rungs could not.«Почему не использовать LLM на всё?» → Цена и недетерминизм на масштабе; LLM-на-строку не масштабируется, и ты не можешь аудировать чёрный ящик маппинга для клиентского ряда. LLM обрабатывает только неоднозначный остаток, с которым не справились более дешёвые ступени.»

LLM-assisted data-engineering workflowsLLM-воркфлоу для дата-инженерии

Where an LLM earns its place (and where it must not)Где LLM зарабатывает своё место (и где ему нельзя)

Good fits (propose, don't decide)Хорошие кейсы (предлагает, не решает)

  • Schema / field mapping of new vendor feeds
  • Documentation generation from code/lineage
  • Anomaly triage: draft a root-cause hypothesis (revision vs vendor error vs real move) for the human
  • Code refactoring of legacy pipelines
  • Fuzzy categorization of unstructured fields
  • Маппинг схем / полей новых вендорских фидов
  • Генерация документации из кода/lineage
  • Триаж аномалий: черновик гипотезы о первопричине (ревизия vs ошибка вендора vs реальное движение) для человека
  • Рефакторинг кода legacy-пайплайнов
  • Нечёткая категоризация неструктурированных полей

Never let the LLMНикогда не позволяй LLM

  • Be the source of truth for a published client value
  • Run per-row at scale in the hot path
  • Emit free-form output you don't validate against a schema
  • Decide high-blast-radius cases without human approval
  • Быть источником истины для опубликованного клиентского значения
  • Работать построчно на масштабе в горячем пути
  • Выдавать свободный вывод, который ты не валидируешь против схемы
  • Решать кейсы с высоким радиусом поражения без одобрения человеком

One-liner: an LLM is a high-recall, low-precision proposer; you wrap it in deterministic precision (schema constraints, validation, or a human).

Одной строкой: LLM — это proposer с высоким recall, низким precision; ты оборачиваешь его в детерминистский precision (ограничения схемы, валидация или человек).

Production controls (this is the senior signal)Контроли в продакшне (это senior-сигнал)

RiskControl
Non-determinismLow temperature; pin model + prompt versions in version control; reproducible enough to audit
HallucinationConstrain to schema (function calling / JSON mode); reject off-schema; validate against deterministic check or cross-source
Cost & latencyBatch, cache; invoke LLM only on the residual cheap heuristics couldn't resolve
Model drift (vendor changes API model)Pin versions; run an eval set on every model/prompt bump
Wrong value to clientHuman-in-the-loop for anything client-facing until measured accuracy + safe fallback justify automation
РискКонтроль
НедетерминизмНизкая temperature; закрепить версии модели + промпта в version control; достаточно воспроизводимо для аудита
ГаллюцинацииОграничить схемой (function calling / JSON mode); отклонять вне схемы; валидировать против детерминистской проверки или перекрёстного источника
Цена и задержкаБатчинг, кеш; вызывать LLM только на остаток, который не разрешили дешёвые эвристики
Дрифт модели (вендор меняет API-модель)Закрепить версии; прогонять eval-набор на каждом изменении модели/промпта
Неверное значение клиентуHuman-in-the-loop для всего клиентского, пока измеренная точность + безопасный фолбэк не оправдают автоматизацию
CV bridge — SynteaМост в CV — Syntea"I led Kafka ingestion and analytics for Syntea at IU Group, one of the first university-scale GPT-4 production deployments, 80,000+ students, featured by Microsoft as an Azure OpenAI case study. I have run LLMs in production at scale, not just prototyped."«Я вёл Kafka ingestion и аналитику для Syntea в IU Group, одно из первых GPT-4 развёртываний в продакшне на университетском масштабе, 80 000+ студентов, отмечено Microsoft как Azure OpenAI кейс. Я запускал LLM в продакшне на масштабе, а не только прототипировал.»
CV bridge — Untangler (lead with this)Мост в CV — Untangler (лидируй этим)"I won Meta's EMEA Data Engineering Hackathon 2026 with Untangler, a multi-agent AI methodology for pipeline restructuring, selected for internal tooling. Multi-agent matters because a critic agent catches the proposer's mistakes — that is the precision wrapper around a non-deterministic LLM, applied to the exact tech-debt/modernization work this role describes."«Я выиграл Meta EMEA Data Engineering Hackathon 2026 с Untangler, multi-agent AI методологией для реструктуризации пайплайнов, выбранной для внутренних инструментов. Multi-agent важен, потому что agent-критик ловит ошибки proposer — это precision-обёртка вокруг недетерминистского LLM, применённая ровно к tech-debt/модернизации, которую описывает эта роль.»

LLM schema-mapping pattern (onboarding a vendor feed)Паттерн LLM schema-маппинга (онбординг вендорского фида)

vendor columns + sample values + docs │ ▼ LLM proposes mapping → your canonical schema (output constrained to schema) │ ▼ validation pass (types, value ranges) → human approves once │ ▼ approved mapping = deterministic config (LLM NOT in per-row hot path)
колонки вендора + примеры значений + доки │ ▼ LLM предлагает маппинг → твоя канонич. схема (вывод ограничен схемой) │ ▼ проход валидации (типы, диапазоны) → человек одобряет один раз │ ▼ одобренный маппинг = детерминистский конфиг (LLM НЕ в построчном горячем пути)

Days of manual mapping collapse into a reviewed draft; once approved it is plain config. This is the Untangler propose-then-critique idea applied to ingestion.

Дни ручного маппинга сворачиваются в отревьюенный черновик; после одобрения это просто конфиг. Это идея Untangler «предложить, затем скритиковать», применённая к ingestion.

Productionization: false positives, monitoring, human-in-loopПродакшнизация: ложные срабатывания, мониторинг, human-in-loop

False positives are the real failure mode of DQЛожные срабатывания — настоящий режим сбоя DQ

Alert fatigue means the monitor is effectively offline. Put false-positive cost in the objective, not the footnotes. If a monitor fires too much:

Усталость от алертов означает, что монитор фактически офлайн. Ставь цену ложных срабатываний в цель, а не в сноски. Если монитор срабатывает слишком часто:

  1. Right method for the shape — z-score on a seasonal series fires constantly; switch to STL / forecast interval.
  2. Tune threshold per series, calibrated to a tolerable alert rate, not a global sigma.
  3. Robust stats (median + MAD) so past outliers don't inflate the band.
  4. Require persistence / corroboration — N consecutive breaches, or two independent checks agree.
  5. Severity tiering + routing — warn-only vs page; page only on high-precision checks.
  6. Feedback loop — humans label true/false; track the monitor's own precision/recall as an SLO.
  1. Правильный метод для формы — z-score на сезонном ряду срабатывает постоянно; переключись на STL / интервал прогноза.
  2. Настрой порог на серию, откалиброванный на допустимую частоту алертов, а не глобальную сигму.
  3. Робастная статистика (median + MAD), чтобы прошлые выбросы не раздували интервал.
  4. Требуй персистентности / подтверждения — N последовательных нарушений или два независимых чека согласны.
  5. Градация серьёзности + маршрутизация — только предупреждение vs пейдж; пейдж только на высокоточных проверках.
  6. Петля обратной связи — люди размечают true/false; отслеживай собственную precision/recall монитора как SLO.
Interviewer will probeО чём спросит интервьюер"How do you evaluate an anomaly detector with almost no labels?" → accuracy is useless (predict 'normal' → 99%). Use precision@k (ops review a budget), inject known past incidents to estimate recall, and treat the first weeks in production as the real labeling exercise via the feedback loop.«Как оцениваешь детектор аномалий почти без меток?» → accuracy бесполезна (предсказывай 'normal' → 99%). Используй precision@k (ops ревью ограниченного бюджета), впрыскивай известные прошлые инциденты для оценки recall, и относись к первым неделям в продакшне как к настоящей разметке через петлю обратной связи.

End-to-end ML-assisted DQ for hundreds of data feedsEnd-to-end ML-ассистируемый DQ для сотен фидов данных

land raw immutably (audit + replay, capture load_ts for revisions) │ ▼ Layer 0 rules: schema, not-null, freshness, row-count, referential ▼ Layer 1 per-series anomaly: robust-z / STL / forecast interval ▼ Layer 2 batch drift: PSI / KS / chi-square │ ▼ flag → queue (severity + owner) → LLM drafts triage hypothesis │ ▼ policy: block-on-fail (quarantine before client) vs warn-only │ ▼ observability: freshness/completeness SLAs, dedup+rate-limit alerts, monitor precision/recall as SLOs │ ▼ human-in-loop for client-facing → corrections retune thresholds/labels │ ▼ lineage: every value traceable vendor source → client-facing print
пишем сырое неизменяемо (аудит + replay, захватываем load_ts для ревизий) │ ▼ Уровень 0 правила: схема, not-null, свежесть, row-count, реф.целостность ▼ Уровень 1 аномалии на серию: robust-z / STL / интервал прогноза ▼ Уровень 2 дрифт батча: PSI / KS / chi-square │ ▼ флаг → очередь (серьёзность + владелец) → LLM черновик гипотезы триажа │ ▼ политика: block-on-fail (карантин до клиента) vs только предупреждение │ ▼ observability: SLA свежести/полноты, дедуп+rate-limit алертов, precision/recall монитора как SLO │ ▼ human-in-loop для клиентского → коррекции перенастраивают пороги/метки │ ▼ lineage: каждое значение прослеживается источник вендора → клиентский принт

Config-driven so adding a feed is config, not code. Block-on-fail vs warn-only is a per-check policy decision sized by blast radius.

Управляется конфигом, поэтому добавить фид — это конфиг, а не код. Block-on-fail vs warn-only — решение политики на проверку, калибруемое по радиусу поражения.

Gotcha — idempotency— идемпотентностьMake the ML/anomaly step a pure function of (input snapshot, pinned model/config version) and persist the version with the result. Re-runs and backfills then produce identical flags. Avoid detectors that depend on wall-clock or a live-updating baseline unless that baseline is itself snapshotted. Reproducibility is a DQ property too.Сделай ML/аномалию-этап чистой функцией (снэпшот входа, закреплённая версия модели/конфига) и персисть версию с результатом. Повторные запуски и backfill тогда дают идентичные флаги. Избегай детекторов, зависящих от wall-clock или живо обновляемого baseline, если baseline сам не снэпшотирован. Воспроизводимость — тоже свойство DQ.

Your stories, mapped to this topicТвои истории, привязанные к этой теме

StoryLead numberUse it for
Untangler (multi-agent AI)Hackathon win, adopted internally"AI applied to data workflows" — your flagship LLM story
Syntea GPT-4 ingestion80,000+ students, MS case studyLLM in production at scale; Kafka/streaming/semi-structured
Entity-resolution fix6.2B records, 100+ metrics/ML features restoredSilent DQ defect, blast-radius thinking, consumer-facing validation
10-system consolidation3.6B events/day, 47% redundancy cutDQ monitors on a consolidated model; canonical mapping
Default-prediction model50% loss reductionEnd-to-end ML in prod; point-in-time correctness; money attached
Telco segmentation/uplift+20% ARPU, 40+ campaignsRigorous measurement; concept drift via regime change
ИсторияГлавная цифраИспользовать для
Untangler (multi-agent AI)Победа на хакатоне, принят внутренне«AI применённый к дата-воркфлоу» — твоя флагманская LLM-история
Syntea GPT-4 ingestion80 000+ студентов, кейс MSLLM в продакшне на масштабе; Kafka/streaming/полуструктурированное
Фикс entity-resolution6.2B записей, 100+ метрик/ML-фич восстановленоТихий дефект DQ, мышление радиусом поражения, валидация для потребителей
Консолидация 10 систем3.6B событий/день, −47% избыточностиМониторы DQ на консолидированной модели; канонический маппинг
Модель предсказания дефолта−50% потерьEnd-to-end ML в продакшне; точность на момент времени; деньги привязаны
Сегментация/uplift в телекоме+20% ARPU, 40+ кампанийСтрогие измерения; concept drift через смену режима
Sequence to useПоследовательность использованияAI-in-pipelines prompt → lead Untangler, support with Syntea. DQ/anomaly prompt → entity-resolution defect + the layered monitor design. End-to-end ML prompt → default-prediction model. Always close on client-facing reliability.Промпт AI-в-пайплайнах → лидируй Untangler, поддержка Syntea. Промпт DQ/аномалии → дефект entity-resolution + слоёный дизайн мониторов. Промпт end-to-end ML → модель предсказания дефолта. Всегда закрывай на надёжность для клиента.

Self-quiz — flip to revealСамопроверка — тапни, чтобы перевернуть

Tap a card to flip. Answer out loud first.

Тапни карточку, чтобы перевернуть. Сначала ответь вслух.

AnomalyАномалия
When does a plain z-score betray you, and what do you switch to?
Когда обычный z-score тебя подводит, и на что переключиться?
tap to flipтапни чтобы перевернуть
Skewed/non-normal data, trending or seasonal series, and when outliers inflate σ and hide themselves. Switch to robust z (median + MAD), IQR, or detrend/deseasonalize first via STL residual / forecast interval.
Скошенные/ненормальные данные, ряды с трендом или сезонностью, и когда выбросы раздувают σ и прячут себя. Переключись на robust z (median + MAD), IQR или сначала удали тренд/сезон через остаток STL / интервал прогноза.
Drift vs anomalyДрифт vs аномалия
A vendor switches a rate from % to basis points but no single value looks wrong. Which check catches it?
Вендор переключил ставку из % в базисные пункты, но ни одно значение не выглядит неправильным. Какая проверка это поймает?
tap to flipтапни чтобы перевернуть
Drift detection (PSI / KS), not anomaly detection. The population shifted even though no individual point is an outlier vs the series's history. Drift fires a review, since it could also be a real regime change.
Детекция дрифта (PSI / KS), а не детекция аномалий. Популяция сдвинулась, хотя ни одна точка не выброс относительно истории ряда. Дрифт запускает ревью, так как это может быть и настоящая смена режима.
LLM in prodLLM в продакшне
Three controls that prove you've actually run an LLM in a pipeline?
Три контроля, которые доказывают, что ты реально запускал LLM в пайплайне?
tap to flipтапни чтобы перевернуть
Pin model + prompt versions (reproducible/auditable), constrain output to a schema + validate (no hallucinated client values), and human-in-the-loop + an eval set on every bump. Anchor with Syntea + Untangler.
Закрепить версии модели + промпта (воспроизводимо/аудируемо), ограничить вывод схемой + валидация (никаких галлюцинированных клиентских значений), и human-in-the-loop + eval-набор на каждом изменении. Якорь: Syntea + Untangler.
False positivesЛожные срабатывания
A DQ monitor fires so much the team ignores it. First move?
Монитор DQ срабатывает так часто, что команда его игнорирует. Первый шаг?
tap to flipтапни чтобы перевернуть
Check it's the right method for the series shape (z on a seasonal series fires constantly → STL/forecast interval), then tune the threshold to a tolerable alert rate per series, use robust stats, require persistence/corroboration, tier severity, and add a feedback loop. Treat the monitor's own precision as an SLO.
Проверь, что это правильный метод для формы ряда (z на сезонном ряду срабатывает постоянно → STL/интервал прогноза), затем настрой порог на допустимую частоту алертов на серию, используй робастную статистику, требуй персистентности/подтверждения, градируй серьёзность и добавь петлю обратной связи. Относись к собственной precision монитора как к SLO.
EvaluationОценка
Why is accuracy the wrong metric for an anomaly detector, and what do you use?
Почему accuracy — неверная метрика для детектора аномалий, и что использовать?
tap to flipтапни чтобы перевернуть
Anomalies are rare, so "always normal" scores ~99% accurate and 0% useful. Use precision/recall/F1, precision@k (ops review a fixed budget), inject known past incidents to estimate recall, and track live alert precision via the feedback loop.
Аномалии редки, поэтому «всегда normal» даёт ~99% accuracy и 0% пользы. Используй precision/recall/F1, precision@k (ops ревью фиксированного бюджета), впрыскивай известные прошлые инциденты для оценки recall и отслеживай precision живых алертов через петлю обратной связи.
ForecastingПрогнозирование
One gotcha when using Prophet/SARIMA for expected-range checks on macro data?
Один подводный камень при использовании Prophet/SARIMA для проверок ожидаемого диапазона на макроданных?
tap to flipтапни чтобы перевернуть
Revisions. Refitting on the latest, still-unrevised observations bakes error into the band. Down-weight/exclude recent unrevised points, refit on a schedule, and pair with drift detection (the interval assumes no regime change). New series → cold-start fallback to IQR.
Ревизии. Переобучение на последних, ещё не ревизированных наблюдениях запекает ошибку в интервал. Понижай вес / исключай недавние неревизированные точки, переобучай по расписанию и пари с детекцией дрифта (интервал предполагает отсутствие смены режима). Новые ряды → холодный старт на IQR.
When NOT to use MLКогда НЕ использовать ML
Name three situations where you reject ML/LLM for a DQ task.
Назови три ситуации, когда ты отказываешься от ML/LLM для задачи DQ.
tap to flipтапни чтобы перевернуть
A deterministic rule solves it (schema/freshness/arithmetic identity); you can't tolerate non-determinism on a client-facing value; you lack labels/history to measure precision-recall; or operational cost (LLM-per-row) exceeds value. Climb the ladder only when forced.
Детерминистское правило решает задачу (схема/свежесть/арифметическое тождество); ты не можешь допустить недетерминизм на клиентском значении; нет меток/истории для измерения precision-recall; либо операционная цена (LLM-на-строку) превышает ценность. Поднимайся по лестнице только когда вынужден.
Multi-agent
Why was Untangler multi-agent rather than a single LLM call?
Почему Untangler был multi-agent, а не одиночным вызовом LLM?
tap to flipтапни чтобы перевернуть
Separation of concerns: one agent understands the existing pipeline, one proposes the new structure, one critiques/validates. The critic is the precision wrapper around the non-deterministic proposer — the same propose-then-validate pattern you'd use for LLM schema mapping on vendor feeds.
Разделение ответственности: один агент понимает существующий пайплайн, один предлагает новую структуру, один критикует/валидирует. Критик — это precision-обёртка вокруг недетерминистского proposer — тот же паттерн «предложить, затем валидировать», который ты использовал бы для LLM schema-маппинга вендорских фидов.