Клиент — retail-сеть (80+ магазинов), отдел аналитики и региональные менеджеры. Простой отчёт «выручка по регионам за квартал» требовал заявки в BI-команду и занимал 1–2 дня. SQL знали единицы; дашборды в Looker покрывали только типовые срезы, ad-hoc вопросы оставались в очереди.
Задача: copilot для аналитики — вопрос на русском → безопасный SQL → таблица и график. Только read-only к витрине данных; без доступа к сырым PII и без возможности изменять данные.
Реализация:
• semantic layer: описание таблиц, метрик, связей на языке бизнеса (dbt/docs);
• агент NL→SQL: генерация запроса + валидация (только SELECT, whitelist таблиц и колонок);
• sandbox: лимит строк (TOP 1000), timeout 30 сек, EXPLAIN перед выполнением;
• ответ: таблица + auto-chart (bar/line/pie) + кнопка «показать SQL» для аудита;
• история запросов, избранное, шаринг ссылки на отчёт внутри компании;
• роли: менеджер (агрегаты) / аналитик (детализация) / admin;
• audit log всех запросов; блок JOIN к PII-таблицам и опасных конструкций.
Стек: Python, FastAPI, LangChain, PostgreSQL/ClickHouse, React, Plotly, Docker, SSO. Приёмка: 40 business-вопросов сверены с этalon SQL senior-аналитика.
Итог: 80% типовых отчётов — самообслуживание; очередь к BI-команде −60%. NDA: компания не публикуется.