# ADR-007: ML / AI tooling (A11)

- **Status:** Accepted
- **Date:** 2026-05-17
- **Deciders:** Дмитрий

## Context

The `A11 «ML / AI-разработка»` map section had zero tooling. Лидерра ships no
ML/AI code; `calc_lead_score` is a deterministic SQL function. A toolset is needed
for the day AI features (LLM-backed) or a scoring model are scoped.

## Decision

A11 adopts a six-position toolset in two subcategories:

- **LLM integration** — the claude-api skill (build), promptfoo (test prompts),
  Sentry MCP (observe). All reuse or new-light.
- **Classical ML** — a vendored Data Scientist skill (workflow knowledge). The
  executable part, **Jupyter MCP**, is **deferred**: it needs a Python ML runtime
  the deliberately-minimal native-Windows machine lacks, and there is no model to
  train. Jupyter MCP is a reserved registry slot, installed by a separate task
  when a concrete model is scoped.
- promptfoo runs manually / CI only — never in a hook (paid LLM calls).
- A11 tools are non-UI → the `ml-ai-tooling` off-phase category.

## Consequences

- Positive: A11 populated; AI features have a build+test+observe toolchain.
- Risk: the Data Scientist skill is third-party (CC BY 4.0 content) — mitigated by
  vendoring with attribution into `.claude/skills/data-scientist/`.
- Cost: promptfoo is a heavy devDependency (~1090 transitive packages, one native
  module). Accepted — it is dev-only tooling, not shipped to the app.
- Deferred: no Python runtime until a model is scoped — accepted, this is the
  decision.

## Enforcement

None — A11 tools are advisory; verified by use and code review.
