Платформа исследований для внутреннего аудита банковских продуктов. Вопрос на русском — аналитический отчёт со ссылками на первоисточники, графиками и PDF за 1–3 минуты. Каждое число привязано к дословной цитате со страницы, которую система действительно прочитала.
Быстрый старт · Онбординг разработчика · Документация · Архитектура · Troubleshooting
Утренний выпуск: передовица, «пульс дня» из шести детерминированных метрик, риск-карточки с кнопками «Разобраться» и «Спросить ИИ», лента новостей для аудитора.
Аналитики и аудиторы банковского сектора, которым нужно регулярно сравнивать продукты разных банков, искать данные по ставкам/тарифам/жалобам клиентов и готовить отчёты для руководства. AuditLens заменяет ручной обзвон 5–10 сайтов банков, копирование цифр в Excel и склеивание в Word — на один запрос на русском языке.
Принцип, на котором построена система: числа считает детерминированный код, LLM только формулирует. Всё, что модель могла бы выдумать, сверяется с фактами — а графики и сравнительные таблицы строятся вообще без LLM.
📰 Обзор — ежедневный брифинг. Утренний выпуск для аудитора: передовица, «пульс дня» из шести метрик, риск-карточки с механикой «Разобраться» и «Спросить ИИ». Все числа — детерминированный SQL; модель зовётся трижды в сутки на всех, дальше день живёт из кэша.
🔬 Deep Research. Кондуктор разбирает вопрос — интент, субъекты, что считать раскрытым, — дальше движок ведёт прогон: подзапросы, поиск, чтение страниц, сжатие, отчёт. В отчёт попадает не свободный текст, а типизированные факты с дословной цитатой. Типичное время 1–3 минуты, первые строки появляются через пару секунд.
🛡 Проверка утверждений. Числа берутся только из прочитанной страницы, не из сниппетов выдачи. Каждый факт несёт дословную цитату, а критик работает в два слоя: дешёвый подтверждает точное совпадение и снимать не вправе, остаток судит модель — пересказ синонимами не делает цитату ложной. Утверждения без опоры на источник из отчёта убираются.
📚 Цитаты и доверие к источнику. Каждое утверждение несёт ссылку [N] на цитату. Вес источника задаёт домен: регуляторы (cbr.ru, pravo.gov.ru) — 0.98, порталы gov.ru — 0.95, официальные сайты банков — 0.92, агрегаторы — 0.7, деловые СМИ — 0.6, отзовики — 0.5, площадки пользовательских блогов — 0.35. Ссылки проверяются на доступность, у источника видна дата публикации, а не дата сбора.
💬 Отзывы — риск-радар. Единый корпус 181 тыс. отзывов из четырёх источников (banki.ru, финуслуги, сравни.ру, bankiros). Темы выводит модель из самого корпуса — 26 тем, привязка отзыва к теме векторная, списка регулярок в коде нет. Всплески ловятся по медиане и MAD, устойчиво к самому пику; есть гео-аномалии на 100 тыс. населения и сравнение с рынком.
🕳 Лазейки. Отдельный агент ищет схемы, которыми клиенты и ИП обходят комиссии и лимиты. Персональные данные маскируются до отправки в модель, находки складываются в таблицу с дедупом и вердиктом.
📊 Графики и PDF. Числовые сравнения визуализируются автоматически. PDF собирается через Playwright Chromium: A4, встроенные шрифты, графики, список источников.
🧠 Любой продукт без хардкода. Тему, синонимы, субъектов и потребность в источниках регулятора определяет кондуктор. Списков слов в парсере и индексаторе нет — это условие, а не пожелание.
| Шаг | Что делает | Модуль |
|---|---|---|
| 01 · Кондуктор | Разбирает вопрос: интент, субъекты, что считать раскрытым | research/v2/conductor.py |
| 02 · Поиск | Подзапросы → метапоиск → чтение страницы: кэш, затем HTTP, затем браузер. Отличает «не смогли прочитать» от «банк не раскрывает» | research/gptr/{planner,retriever,scraper}.py |
| 03 · Факты | Типизированные факты с дословной цитатой и стороной свидетельства: заявлено организацией, наблюдается в жалобах, установлено регулятором | research/gptr/facts.py |
| 04 · Критик | Дешёвый слой подтверждает дословное совпадение и снимать не вправе; остаток судит модель | research/gptr/critic.py |
| 05 · Отчёт | Сквозные [N], ведущие на цитату; графики и таблицы считаются отдельно, кодом |
research/gptr/{citations,stream}.py |
Поисковое ядро — движок gpt-researcher с нашими адаптерами: свой метапоиск, свой скрапер с эскалацией до браузера, свой планировщик подзапросов. Слой фактов, критик и цитирование — наши.
Полное описание — docs/ARCHITECTURE.md: тиры моделей, бюджеты времени, анти-галлюцинации, специфика Cloud.ru.
Стек:
- Python 3.11+, FastAPI, SQLAlchemy 2, asyncio, SSE
- PostgreSQL 17 + pgvector — гибридный поиск: вектор (1024d, BGE-M3, HNSW) и русский полнотекст, слияние по RRF. Порога по косинусу нет намеренно: в этом проекте абсолютный порог по векторному сходству трижды оказался неработоспособен — честный сигнал даёт словесная нога
- React 18 без бандлера — Babel-standalone компилирует JSX в браузере, ни npm, ни webpack
- Playwright Chromium — скрейп за антиботами и PDF-экспорт
- LLM — любой OpenAI-совместимый эндпоинт. В проде — Foundation Models Cloud.ru; пять тиров моделей (fast / smart / reasoning / analyst / insight) с деградационной цепочкой
- Web search — SearXNG. Набор движков подбирался замером:
bingпришлось отключить — он деградировал до случайного шума на банковских запросах,dogpileдержит 88% годных результатов
Модели (прод):
| Тир | Модель | Где |
|---|---|---|
| fast / smart | deepseek-ai/DeepSeek-V4-Flash |
навигация по выдаче, извлечение фактов, критик |
| reasoning / analyst | anthropic/claude-opus-4.8 |
план вопроса, нарратив отчёта |
| insight | anthropic/claude-sonnet-4.6 |
«Обзор», «Отзывы» (3 вызова в сутки) |
| фолбэк | deepseek-ai/DeepSeek-V4-Pro |
когда основной тир недоступен |
Рассуждение (reasoning_effort) на горячем пути выключено намеренно: на планировании оно стоило 315 с против 24 с, на извлечении фактов — 204 с против 50 с, а качество плана не менялось.
| Где взять | |
|---|---|
| Python 3.11+ | brew install python@3.12 (mac) · sudo apt install python3.12 (Linux/WSL) |
| Docker Desktop | Mac (Apple Silicon) · Mac (Intel) · Windows · Linux |
| Git | brew install git (mac) · sudo apt install git (Linux/WSL) |
| Ключ к LLM | любой OpenAI-совместимый эндпоинт. Для локального старта проще всего fireworks.ai (бесплатные $15). В проде — Foundation Models Cloud.ru |
# 1. Скачать
git clone https://github.com/SashaEee/auditLens.git
cd auditLens
# 2. Один скрипт = всё установлено (Docker, БД, Python deps, миграции)
bash scripts/setup.sh
# 3. Впиши ключ и эндпоинт в .env
open -e .env # mac (откроет TextEdit)
# или: nano .env # любая ОС (Ctrl+X для выхода)
# LLM_BASE_URL=... LLM_API_KEY=... LLM_MODEL_NAME=...
# 4. Запусти сервер
source .venv/bin/activate
uvicorn bank_audit.web.app:app --host 127.0.0.1 --port 8000Открой http://127.0.0.1:8000 → введи вопрос → готово.
📖 Не уверен в командах? → docs/SETUP.md — пошаговый гайд с разделением по mac/Windows/Linux 🔑 Где взять API-ключ? → docs/API_KEYS.md ☁️ Развернуть в облаке Cloud.ru? → docs/DEPLOY_UVA.md
Полный гайд с десятками примеров → docs/USAGE.md
Сравнительные исследования (включи 🔬 Deep Research):
Семейная ипотека: ставки, первый взнос, требования к доходу
в Сбер, ВТБ, Альфа-банк, ДомРФ
Сравни премиальные дебетовые карты Сбер Прайм, Тинькофф Premium,
Альфа Wealth по комиссиям, кешбэку, привилегиям
РКО для ИП с оборотом до 10 млн/год: тарифы, эквайринг, бесплатные
операции — Сбер, Тинькофф, Точка, Модульбанк
Быстрые запросы (без Deep Research):
Топ-10 жалоб клиентов Тинькофф за последний месяц
Покажи актуальные ставки по вкладам от 1 млн руб на 12 мес
Чат с Deep Research: живой прогресс по стадиям, ход мысли модели, план отчёта, источники с trust-индикаторами.
Агент ищет схемы обхода комиссий и лимитов; найденное с вердиктом и trust-score попадает в таблицу.
auditlens/
├── README.md ← ты здесь
├── LICENSE ← MIT
├── assets/readme/ ← иллюстрации этого файла (SVG)
├── pyproject.toml ← зависимости
├── .env.example / .env.prod.example ← шаблоны конфига
├── docker-compose.yml ← Postgres + SearXNG
├── Dockerfile ← прод-образ (+ Playwright)
├── docs/
│ ├── SETUP.md ← детальная установка
│ ├── ONBOARDING.md ← онбординг разработчика
│ ├── API_KEYS.md ← где брать ключи
│ ├── USAGE.md ← примеры вопросов
│ ├── ARCHITECTURE.md ← как устроена система
│ ├── DEPLOY_UVA.md ← развёртывание в облаке
│ ├── TROUBLESHOOTING.md ← типовые проблемы
│ └── img/ ← скриншоты для README
├── migrations/ ← SQL миграции (001–062 + ensure_vector)
├── config/
│ ├── sources.yaml ← реестр источников (10 источников)
│ └── ca_bundle_combined.pem ← certifi + Russian Trusted Root
└── src/bank_audit/
├── ai/ ← LLM-утилиты, тиры моделей, clarify
├── research/gptr/ ← движок: поиск, факты, критик, цитаты
├── research/v2/ ← кондуктор и оценка доверия к источникам
├── rag/ ← embedder, retriever, отзывы, trust
├── digest/ ← «Обзор» — ежедневный брифинг
├── loophole/ ← «Лазейки» — nanobot-агент
├── sources/ collectors/ ← адаптеры источников, Playwright
├── normalizer/ quality/ ← нормализация (SCD2), контроль качества
└── web/ ← FastAPI + React UI + PDF export
- Deep Research — кондуктор, движок поиска, слой фактов с дословными цитатами
- Критик из двух слоёв: дешёвая проверка подтверждает, модель судит остаток
- Universal product support (любой банковский продукт без хардкода)
- PDF export с графиками
- «Обзор» — ежедневный брифинг с детерминированным пульсом
- «Лазейки» — агент поиска схем обхода
- Гибридный поиск (вектор + русский полнотекст) во всех вкладках
- Проверка доступности ссылок и дата публикации источника
- Развёртывание в облаке + Foundation Models
- Загрузка собственных PDF из UI
- Excel-экспорт сравнительных таблиц
- Snapshot-based diff («что изменилось в условиях по вкладам за месяц»)
- Telegram/Slack бот-интерфейс
PR'ы welcome. Перед отправкой:
pip install -e ".[dev]"— поставит pytest + ruffruff check src/— линтерpytest tests/— тесты (если есть для твоей области)- Опиши зачем изменение, не только что сделано
MIT — свободное использование с указанием авторства.
- gpt-researcher — каркас движка исследования
- pgvector — векторный поиск в Postgres
- SearXNG — open-source мета-поисковик
- BGE-M3 — multilingual embeddings
- nanobot-ai — harness агента «Лазеек»
- Chart.js — графики в UI и PDF







