К содержанию
титов-ai.ru
работы

Что сделано и что можно потрогать

Здесь только свои и публичные проекты: их можно открыть, задать вопрос и посмотреть код. Каждое число замерено, а не взято из головы.

Часть работы — заказы под договором: чужие порталы и закрытые контуры, показать их нельзя. Поэтому ниже то, что принадлежит мне и открыто для проверки. По коммерческим проектам расскажу в переписке, без названий и доступов.

Нейросеть по законодательству: 34 697 фрагментов, ответ со ссылкой на статью

Работающий сервис, открытый для всех: отвечает на юридические вопросы по кодексам и федеральным законам, и каждый ответ даёт со ссылкой на конкретную статью.

34 697
фрагментов в базе
0,75 → 0,82
доля вопросов, где нужная статья попала в выдачу
0,41 → 0,55
позиция правильного ответа (MRR)
4,71 ₽
стоил пересчёт всей базы

Задача

Языковые модели охотно рассуждают о законе и так же охотно выдумывают номера статей. Проверить такой ответ нельзя, а значит нельзя и использовать. Нужна была система, которая отвечает только по загруженным документам и показывает источник.

Что сделано

  • →Корпус из 39 документов нарезан на 34 697 фрагментов с перекрытием: длинная статья не теряет контекст на границе куска
  • →Поиск по смыслу вместо совпадения слов, ответ собирается только из найденных фрагментов
  • →Замеры качества на контрольных вопросах с заранее известным ответом, до и после каждого изменения
  • →Смена модели эмбеддингов на bge-m3: пересчёт всей базы занял два часа и стоил 4,71 ₽
  • →Генерация документов в DOCX и PDF, 12 шаблонов
Python + FastAPIPostgres + pgvectorbge-m3 (Cloud.ru)Docker, 6 контейнеровLet's Encrypt

Что честно не так

Версия 0.9: ревью юристом не проходила, и в интерфейсе это написано. DOCX на вход не читает, только PDF и фото через распознавание. Отдельная сложность, которую видно на замерах: статья с одним номером встречается в семи кодексах сразу, и на вопрос про неустойку система может найти статью 330 не из того кодекса.

Мониторинг площадок с фильтром на нейросети: 1000+ отобранных заявок с апреля

Система следит за источниками заказов, отсеивает мусор нейросетью и присылает в Telegram карточку с оценкой и черновиком отклика.

1 000+
отобранных заявок с апреля
24/7
мониторинг без участия человека
$0,018
стоил полный прогон сбора

Задача

Подходящие заказы тонут в потоке из сотен объявлений и уходят за часы: на свежую публикацию прилетает больше тридцати откликов за первые два часа. Читать поток руками — несколько часов ежедневно, и половина всё равно пропускается.

Что сделано

  • →Сбор с нескольких площадок по расписанию, без ручного захода
  • →Фильтр на нейросети: объявление оценивается по описанию, а не по ключевым словам
  • →Карточка в Telegram с оценкой соответствия и черновиком отклика
  • →Защита от дублей: одно и то же объявление не приходит дважды
PythonPlaywrightOpenRouterSQLiteTelegram Bot API

Что честно не так

Система работает на мне с апреля и не выключается. Это её главное доказательство. Фильтр настраивается под критерии заказчика: какие заказы считать подходящими, решаете вы, и это часть работы, а не доплата.

Бот записи с админкой: демо открыто, запись проходит настоящая

Клиент выбирает услугу, мастера и время прямо в Telegram, владельцу приходит уведомление. Слоты и цены меняются через админку, без разработчика.

24/7
приём записей без звонка

Задача

Запись по телефону теряется вечером и в выходные, а онлайн-сервисы вроде YClients для небольшой студии избыточны по цене и по сложности.

Что сделано

  • →Выбор услуги, мастера и свободного слота в диалоге бота
  • →Проверка занятости: два клиента не займут одно время
  • →Админка для услуг, слотов и цен — меняются без правки кода
  • →Уведомление владельцу в момент записи
Python + FastAPIPostgresTelegram Bot APIDocker

Что честно не так

Бот работал в продакшене с августа 2026: запись проходила настоящая, не на скриншоте. Сейчас публичное демо выключено, покажу работу на видео по запросу. Напоминания клиентам и онлайн-оплата в демо не включены: их ставлю под конкретный бизнес, потому что правила отмены и предоплаты у всех свои.

Три инструмента на одном краулере: проверка сайта, парсер, аудит видимости

Общий движок обхода сайтов, на котором работают три бесплатных демо на этом сайте. Открыты без регистрации.

15 страниц
обходит за 26 секунд
100 позиций
парсер собирает за 3 секунды
0 ₽
и без регистрации

Задача

Скриншот в портфолио ничего не доказывает: по картинке не отличить работающую систему от макета. Поэтому инструменты открыты: посетитель запускает их сам и видит результат на своём сайте.

Что сделано

  • →Рекурсивный обход с ограничением глубины и уважением к robots.txt
  • →Проверка сайта: до 15 страниц, ищет риски по 152-ФЗ, формы без согласия, отсутствие политики
  • →Парсер: собирает данные с указанного источника в таблицу
  • →Аудит видимости: спрашивает нейросеть о бизнесе и показывает, называет она вас или конкурентов
Python + FastAPIasyncioDockernginx

Что честно не так

Замеры сделаны на живом бэкенде 02.09 и 04.09. На медленном сайте обход займёт дольше. Проверка на 152-ФЗ видит то, что доступно снаружи: срок хранения данных в вашей базе она проверить не может, туда придётся заглянуть самому.

Чат-виджет с согласием на обработку данных по 152-ФЗ

Встраиваемый виджет для сайта: отвечает по текстам компании, собирает заявки и ведёт журнал согласий.

101
тест в проекте
152-ФЗ
согласие, журнал и сроки хранения

Задача

Виджет, который собирает контакты, по закону превращает сайт в оператора персональных данных. Большинство готовых решений об этом молчат: форма есть, галочки согласия нет, срока хранения нет, отозвать согласие нельзя.

Что сделано

  • →Согласие на обработку данных отдельным действием, а не предзаполненной галочкой
  • →Журнал согласий: кто, когда и на какую редакцию политики согласился
  • →Сроки хранения заданы в коде, а не только обещаны в политике
  • →Ответы по вашим текстам и прайсу, передача сложного случая человеку
Python + FastAPIReactPostgresDocker

Что честно не так

Виджет отвечает по тому, что вы в него загрузили: по прайсу, услугам и частым вопросам. На вопрос за пределами этих материалов он не выдумывает ответ, а передаёт диалог человеку. Это осознанное ограничение, а не недоработка.

Открытый код: 11 репозиториев, которые можно прочитать

Одиннадцать репозиториев открыты целиком: MCP-сервер, автозаполнение тендерных документов, RAG без фреймворков, дообучение модели.

11
публичных репозиториев
60
тестов в MCP-сервере

Задача

Коммерческие проекты закрыты договором, и код по ним показать нельзя. Открытые репозитории закрывают этот пробел: их читают до разговора и видят, как я пишу.

Что сделано

  • →hh-mcp-server — MCP-сервер поверх Playwright, 60 тестов, работает после закрытия публичного API hh.ru
  • →tender-autofill — заполнение тендерных документов DOCX через function calling
  • →rag-from-scratch — RAG без фреймворков: ChromaDB, sentence-transformers
  • →llm-finetuning-demo — дообучение Qwen2.5-3B через Unsloth и LoRA, с замером до и после
  • →sql-rag-pipeline — гибридный поиск: SQL плюс вектора, FastAPI и Qdrant
PythonFastMCPPlaywrightChromaDBQdrantUnsloth

Что честно не так

Это рабочие решения под конкретные задачи, а не коробочные продукты с поддержкой. Зато код открыт целиком: видно, как написано, есть ли тесты и обработка ошибок. Оценить можно до того, как платить.

Похожая задача? Опишите её — скажу, что из показанного подойдёт, и во сколько обойдётся. Если решается проще и дешевле, скажу до старта.

Написать в Telegram