Все работы
Кейс
AI-аналитик как SaaS: вопросы к базе данных и документам на обычном языке
Мультитенантный продукт: владелец бизнеса подключает базу данных или загружает документы и получает цифры, таблицы и графики в ответ на вопросы на русском, узбекском или английском — каждый SQL-запрос проверяется до выполнения.
- Клиент
- Собственный SaaS-продукт (Узбекистан и СНГ)
- Роль
- Основатель-инженер — исследование, архитектура, full stack, эксплуатация
- Сроки
- Исследование → MVP в продакшене
- Стек
- PythonFastAPIPostgreSQL + pgvectorsqlglotOpenAI / AnthropicaiogramReactTypeScriptVega-Lite
Задача
Малый и средний бизнес в регионе хранит данные в базах, учётных выгрузках и таблицах, но у него нет ни аналитика, ни BI-системы. Обычные чат-боты либо не могут добраться до данных, либо выдумывают цифры.
Продукт должен был отвечать на реальные вопросы по реальным данным — безопасно: AI никогда не должен иметь возможности изменить или слить базу клиента, а арендаторы не должны видеть данные друг друга.
Подход и архитектура
- Начал с исследования рынка и конкурентов, видения, архитектуры, дорожной карты и этапов M0–M8 — девятнадцать проектных документов до первого коммита.
- Движок не зависит от канала: он выдаёт типизированные события ответа из ограниченного цикла инструментов (выполнить SQL, описать схему, найти в знаниях, построить график) — у веб-приложения и Telegram-бота один «мозг».
- SQL-шлюз разбирает каждый сгенерированный запрос — только SELECT, разрешённые функции, лимиты строк — и выполняет его в read-only транзакции с таймаутами и circuit breaker.
- Семантический слой: схема считывается, LLM предлагает бизнес-описания, владелец их подтверждает; проверенные запросы переиспользуются через векторное сходство. Вопросы по документам — гибридный векторный и полнотекстовый поиск со ссылками на источники.
Результат
- MVP в продакшене с непрерывной поставкой: каждый push в main проходит линтеры, тесты, оценку качества и деплой с проверкой здоровья.
- Ответ приходит карточкой: переформулированный вопрос, таблица, график, подсказки следующих вопросов и панель «как посчитано».
- Веб-приложение, Telegram-бот и вход через Telegram Mini App работают на одном бэкенде.
Что обеспечило надёжность
- Изоляция арендаторов через row-level security на каждой таблице; учётные данные источников зашифрованы AES-GCM; пароли на argon2 и rate limiting.
- Корпус из 49 SQL-инъекций, которые должны быть заблокированы все, иначе merge не пройдёт, и порог качества ответов не ниже 90%.
- 160+ тестов, сквозные проверки в headless-браузере, ежедневные бэкапы базы и инструкция по эксплуатации.
Похожая задача?
Расскажите о ней — честно оценю объём, подход и то, каким может быть первый этап.