Задача
Перед договором или авансом бизнес хочет понять, надёжен ли контрагент. Сигналы в основном открыты — ЕГРЮЛ, бухгалтерская отчётность, арбитражные дела, исполнительные производства, госконтракты, — но лежат в разных местах, и разбирать их долго. К тому же сам вопрос размыт: ответа «можно работать» нет ни в одном реестре.
Нужны были не сырые данные, а основа для решения: понятный первый сигнал, его причины и короткий список того, что проверить перед сделкой. И важное условие: «нет данных» не должно выглядеть как «проблем нет».
Объём первой версии
- Вошло
- Один вход — ИНН. Ограниченный набор открытых источников через один агрегатор данных. Один отчёт: вердикт, причины, подтверждённые факты, риски и открытые вопросы, ограничения и что проверить перед сделкой. Защита от злоупотреблений и суточные лимиты, чтобы демо нельзя было использовать как бесплатный API.
- Не вошло
- Учётные записи, оплата и другие коммерческие функции, полное досье по всем источникам, мониторинг компании во времени.
Что сделано
В демо сразу открыт сохранённый отчёт по реальной компании — ИНН вводить не нужно; пять примеров покрывают зелёный, жёлтый и красный вердикт. По новому ИНН сервис получает свежие данные, сразу показывает вердикт, а отчёт выводит по мере того, как модель его пишет.
API получает данные агрегатора с жёсткими ограничениями по времени и объёму и оставляет только то, что важно для оценки. Вердикт рассчитывают правила, объяснение пишет языковая модель за один вызов, а строгая проверка отбраковывает текст, если он расходится с данными в ключевых пунктах.
Моя роль
- Сделано мной
- Исходный продукт RISK: концепция и основной сценарий, ядро бизнес-логики, получение данных через агрегатор Checko и работа с сырыми данными компаний, построение запросов к LLM, сценарий анализа и генерации, основной пользовательский сценарий и первоначальный интерфейс.
- Использовано позже
- Коммерческий продукт Легикон позже использовал это ядро.
- Другой разработчик
- В коммерческой фазе другой разработчик переработал внешний вид и вёрстку, добавил регистрацию и учётные записи, email, тарифы, биллинг и оплату.
- Текущее демо
- Работает на том же ядре, вынесенном в отдельный пакет. Слой демо — светофор, сохранённые примеры и защиту — я сделал с AI-агентами: продуктовые решения, ревью кода, тесты и релизы — мои.
Ключевые решения
- Цвет задают правила, модель его объясняет
- Вердикт должен быть воспроизводимым и проверяемым, а языковая модель хорошо объясняет, но не гарантирует одинаковый результат. Поэтому модель получает готовый вердикт и изменить его не может.
- Сохранённый отчёт на первом экране
- У большинства посетителей нет ИНН под рукой, а пустая форма ничего не показывает. Из пяти прототипов первого экрана я выбрал не тот, что рекомендовал агент.
- Перенос ядра вместо переписывания
- Версия на TypeScript уже была, но не было доказательства, что она считает так же. Исходное ядро на Python перенесено в отдельный пакет без изменений и сверено по контрольным суммам SHA-256.
- Собственная защита вместо внешней капчи
- Внешняя капча проверялась только в браузере и при сбое пропускала запросы. Её заменила проверка ALTCHA (proof-of-work) в самом API: одноразовые доказательства и счётчики в SQLite, без новых сервисов.
Проверка
- Около 200 модульных тестов ядра и зафиксированные примеры для контроля размера промпта.
- Перед релизом — тесты API, фронтенда и предрелизные проверки; релиз 1 октября 2026 года — 248 модульных, 107 интеграционных, 22 предрелизных и 27 UI-тестов.
- Сохранённые примеры проверяются без сети: каждая сумма, дата и номер дела сверяются с исходными данными.
- Каждый релиз проверяется в браузере на компьютере и телефоне — на той самой сборке, что уходит в работу, — и ещё раз после выкладки.
Статус
RISK публичен с марта 2026 года, текущая версия — с октября 2026. Новая проверка занимает 15–30 секунд, большую часть этого времени пишет модель, поэтому вердикт показывается первым. Лимиты: 20 новых проверок с одного IP-адреса и 100 всего в сутки. Это публичное демо, а не коммерческий сервис.
Технологии
- Фронтенд
- Nuxt 3, Vue 3, TypeScript; статическая сборка за nginx
- API
- Python, FastAPI, потоковый вывод (SSE), SQLite для лимитов и одноразовых доказательств
- Ядро
- Python-пакет без зависимостей: правила, сжатие данных, промпты, проверка ответа
- AI
- Один потоковый вызов LLM через OpenRouter на проверку; детерминированные вердикт и проверки ответа
- Данные
- Агрегатор Checko поверх открытых реестров
- Инфраструктура
- Docker Compose за nginx; сборка и рабочий сервер разделены