Продукты
Всё перечисленное спроектировано, написано и выведено в прод личноAriel — платформа «сеть сайтов + CRM»
в продеархитектура · разработка · эксплуатация · с мая 2026, в бою с 3 июня 2026
Один код обслуживает сеть сайтов и сводит все обращения с них в одну воронку продаж — от клика по объявлению до подписанного договора.
- Сеть сайтов. Десятки доменов на одной установке; новый сайт — запись в базе, а не правка конфигов. Тексты и картинки редактируются прямо на странице, без админки. Общий каталог товаров с индивидуальным набором и порядком позиций на каждом сайте, галереи, отзывы, вопросы-ответы, SEO-метаданные.
- CRM. Воронка с этапами и подэтапами, произвольные поля под нишу, теги, задачи и отложенные напоминания, контроль просроченных, слияние дублей, архив, массовый перенос лидов между менеджерами, полная история обращений клиента.
- Документы. Коммерческое предложение и договор формируются из карточки сделки — менеджер не собирает их вручную.
- Все каналы в одном окне. Звонки с записью, привязанные к нужному сайту сети; переписка из Telegram, VK, MAX, Avito, SMS и «Одноклассников»; push менеджеру на телефон.
- Сквозная аналитика. Стоимость заявки, стоимость продажи и возврат на рекламу по каждой кампании: данные тянутся из Яндекс.Директа, события звонков уходят в Метрику. Видно, какая кампания приносит деньги, а не клики.
- Данные клиентов по 152-ФЗ. Аудит доступа, маскирование контактов, ежедневные копии в объектное хранилище, резервирование DNS.
- Интерфейс для языковых моделей. Лиды, звонки с расшифровкой, переписки и аналитика доступны ассистенту напрямую — вопросы по базе задаются словами.
От старта разработки до первой заявки — 9 дней: работа началась 25 мая 2026, первый лид пришёл 3 июня. С тех пор через систему прошло 306 лидов и 774 звонка с расшифровкой и разбором — на трёх сайтах сети, силами одного отдела продаж. Скорость отдачи после тюнинга: ассет 37 → 3 мс, страница 96 → 72 мс.
Телеком-платформа телефонных консультаций
в проде4 года в проекте, последние 2 — тимлидом · Франция и Бельгия
Клиент звонит консультанту: около 10 000 телефонных номеров в пулах разных операторов, маршрутизация вызовов, тарифы, расписания консультантов и мобильные приложения.
- Распределение номеров. Служба перераспределения по расписанию с двумя стратегиями — статическая привязка консультанта к номеру и динамическая для маркетплейса. Алгоритм строит ожидаемый набор номеров, сравнивает с текущим и применяет разницу одной транзакцией с откатом; есть режим сухого прогона для проверки на стенде.
- Динамический коллтрекинг. На витрине каждый посетитель получает свой номер — по тарифу, рекламной кампании и сессии, с промежуточным номером переадресации. Звонок связывается с визитом и с источником трафика.
- Административная часть: консультанты и их расписания, тарифы и операторы, промокоды, отзывы с модерацией, проверка личности, роли и права доступа, выгрузки и статистика, отдельное API для мобильных приложений.
- Контроль вместо тестов. Ограничения жёсткие: доступа к базе снаружи нет, журналов телефонной станции нет, а о сбоях узнают из жалоб клиентов. Поэтому проверка встроена в сам боевой код: после выполнения алгоритм доказывает себе, что результат корректен — нет дублей, нет осиротевших номеров, номер из своего пула, переадресация ведёт туда же. Расхождение пишется в журнал нарушений и уходит в Telegram.
- Мониторинг инцидентов: отдельная служба приёма событий с фронта и бэкенда, маршрутизация по важности в Telegram и push, внешняя проверка доступности, ежедневная сводка. Каждый разобранный инцидент превращается в постоянную проверку.
- Голосовые надстройки — разбор звонков, перевод разговора в реальном времени и объявления по расписанию — вынесены в раздел «Телефония и голос».
Встроенный контроль закрыл около 80 % классов регрессий без единой тестовой фикстуры — проверка идёт на живых данных, а не на стенде.
ERP позаказного производства
демо-стендсобственный продукт · учёт для цеха на 10–50 человек · 2026 · готов к пилоту, ищу первого заказчика
Отвечает владельцу цеха на два вопроса, которые он задаёт вслух: успеваем ли к сроку и что заказ принёс на самом деле.
- Техкарта — правило, а не бумага. Изделие описывается один раз; опции — длина, цвет, исполнение — меняют состав, а не только цену. Заказ сам разбирается в маршрут по участкам, потребность в материалах и время.
- Себестоимость до запуска. Материалы и труд по статьям и минимальная цена, ниже которой заказ убыточен. Наладка входит в партию один раз — видно, насколько штучный заказ дороже партии.
- План против факта в рублях: отдельно труд, отдельно материалы, а по материалам — переплатили при закупке или перерасходовали в цеху.
- Сроки и узкое место. Очередь каждого участка в сменах: заказ, который не успевает, виден заранее, а не в день отгрузки. Материал под запущенные заказы распределяется в порядке срока — дефицит виден до того, как встал цех.
- Брак заложен в запуск на всю глубину узлов: чтобы сдать 100 годных при 3 % брака, запускается 103. Отметка брака — с именем и расчётной массой; отходы возвращаются на склад по весу и уменьшают себестоимость.
- Материал живёт партиями: у каждой закупки своя цена и дата, списание от самой давней — факт считается по настоящим накладным, а не по средней цене за год.
Каждая роль видит своё: владелец — деньги и сроки, мастер — работу без сумм, кладовщик — очередь выдачи. Сознательно не берёт на себя то, что у производства уже работает: расписание станков, раскрой листа, зарплату. Ставится на сервер заказчика, без абонентской платы за доступ к собственным данным.
Landing Analyzer
в продесобственный продукт · поведенческая аналитика · с 2026
Показывает, что посетители на самом деле делают на лендинге и на каком экране теряются.
- Воронка по блокам с точками обрыва: видно, после какого экрана уходит большинство.
- Тепловые карты кликов и движения мыши поверх реального снимка блока, с переключением ширины экрана и фильтром «только мёртвые клики» — куда жмут там, где ничего не происходит.
- Профиль каждого блока: сколько человек до него дошло, сколько задержалось, сколько взаимодействовало.
- Качество рекламного трафика по кампаниям и ключевым фразам: живые, ботоподобные, дошедшие до цен, оставившие заявку.
- Связка визита с заявкой — видно, какая кампания и какая фраза привели платящего клиента.
- Версии лендинга фиксируются отпечатком структуры: правку блока можно сравнить «до и после» по поведению, а не по ощущениям.
Трекер написан с нуля: готовые счётчики не дают привязки поведения к конкретному блоку страницы. Персональные данные на аналитический сервер не уходят вовсе.
«Юность»
в продеплатформа образовательной организации · монорепозиторий · 2026
Занятия, роли, внутренний чат и уведомления в приложении, которое ставится на телефон как обычное.
- Голосовые сообщения в чате: запись, отправка, воспроизведение с волной на 40 полос, перемотка кликом, визуализация звука прямо во время записи. Одинаково работают на Android и iOS — под iOS запись и воспроизведение написаны отдельно.
- Push-уведомления на телефон о новых сообщениях. Уведомление не приходит, если человек уже читает эту переписку.
- Роли и права: доступ проверяется по владению данными, а не только по названию роли.
- Файлы и записи хранятся в объектном хранилище, выкат на прод — автоматический по отправке в основную ветку.
Проект вёлся распределённой командой ролей — бэкенд, фронтенд, devops, архитектор — с общим планом и обязательным ревью.
gruzpas
разработкабиржа грузоперевозок · обратный аукцион · с 2024, переписан в 2026
Клиент публикует задачу, перевозчики делают ставки, клиент выбирает исполнителя.
- Закрытая доска. Перевозчик видит заказ, но не телефон клиента; контакт раскрывается только выбранному — на этом построена монетизация.
- Клиент оформляет заявку квизом и получает ставки по ссылке из сообщения, вообще без регистрации.
- Перевозчик работает через Telegram-бота: водитель не станет заполнять форму на сайте с телефона.
- Каталог перевозчиков с профилем и рейтингом плюс посадочные страницы «услуга × город» — на них идёт поисковый трафик.
- Рабочее место оператора: очередь заявок по корзинам (без ставок дольше 15 минут, ждут ответа клиента, зависшие), карточка заказа с журналом рассылки и лентой событий, ставка от имени перевозчика для холодного старта, приглашение перевозчика одной ссылкой.
Заложена возможность добавить пассажирское направление без переписывания: анкета и параметры техники хранятся данными, а не кодом.
MyWayRent
в продеплатформа аренды автомобилей · веду с 2019 · текущая версия 2025 — 2026
Сайт аренды с каталогом, расчётом цены и бронированием.
- Калькулятор: пять тарифных ступеней по длительности, высокий и низкий сезон, дополнительные опции — детское кресло, навигатор, второй водитель, ранняя выдача, поздний возврат.
- Контент — автомобили, города, блог, вопросы-ответы, посадочные страницы — редактируется в привычной админке, сайт обновляется сам.
- Отзывы подтягиваются с Яндекс.Карт по расписанию.
- Заявка уходит менеджеру письмом, данные хранятся по 152-ФЗ, база копируется ежедневно.
Сайт работает с 2019 года, действующая версия переписана в 2025-м. Собран из четырёх независимых сервисов: если отключится калькулятор или сбор отзывов, сайт продолжает принимать заявки.
Что ещё сделано
коротко- Генератор контента для соцсети: выпускает посты в голосе бренда по контент-плану. Опирается на разбор 800 постов восьми конкурентов — форматы, время публикации, работающие заходы.
- Сервис выставления счетов с автотестами в непрерывной интеграции.
- Автотесты и приёмка для мультиплатформенного продукта: сквозные сценарии, ночные прогоны, отчётность, аудит покрытия и приём проекта после ухода прежней команды бэкенда.
- Административные панели и дашборды: разделение на независимо обновляемые части, вход по токенам, защита форм.
- Сервис реального времени на веб-сокетах с адаптивной частотой опроса источника.
Телефония и голос
Редкая часть профиля: работа со звонком на уровне протокола, а не готового виджетаПеревод разговора
реальное время · 13 языковПереводчик, включённый в живой телефонный звонок: слышит собеседника, переводит и говорит в линию, пока разговор идёт.
- Тринадцать языков, направление определяется по самому звонку, а не по набранному добавочному.
- Голос и манера речи настраиваются под конкретный сценарий; поддерживаются две схемы работы с общей историей разговоров.
- Административная панель: сценарии, языки, голоса, журнал звонков.
- Собственный телефонный агент и своя доставка звука — готовые библиотеки не держат ритм, и разговор рассыпается на десятой секунде.
Разбор звонков
расшифровка · анализ · интерфейсКаждый разговор превращается в текст с автоматическим разбором и ложится в карточку клиента.
- Рабочее место аналитика: карточки звонков, группировка по сотрудникам, графики за период, выгрузка диапазона, переход к нужному месту разговора кликом по расшифровке.
- Диалог с ассистентом поверх расшифровки — можно спросить про содержание разговора словами.
- Корректный учёт направлений и пропущенных: по пропущенному сразу ставится задача, чтобы клиент не потерялся.
Голосовые объявления
расписание · офисная громкая связьТекст и время — на выходе объявление, которое само звучит в офисной колонке.
- Расписание с часовыми поясами, очередь, журнал прозвучавшего и мониторинг: если объявление не прошло, об этом узнают.
- Звук готовится под громкую связь — гонг перед текстом, выравнивание громкости, повтор дважды. Иначе объявление либо бубнит, либо оглушает.
- Работает с чужой станцией, к которой есть только телефонный аккаунт и ничего больше.
Подключение к АТС
интеграция · маршрутизацияПодключаю CRM к телефонии при любом уровне доступа к станции — от готового HTTP-роута до собственного телефонного агента.
- Звонок привязывается к нужному сайту сети, попадает в карточку и в воронку.
- События звонков уходят в веб-аналитику: звонок считается конверсией наравне с заявкой с сайта.
- Автоматические задачи по пропущенным и корректная работа с записями разговоров.
AI и языковые модели
Не «прикрутить чат», а вывести модель в прод и научиться измерять её качествоДоступ модели к системам
три сервера в продеАссистент отвечает на вопросы по боевым данным компании — без выгрузок и отчётов.
- CRM: лиды и история активностей, звонки с расшифровкой и разбором, переписки мессенджеров, клиенты с маскированием контактов, аналитика по кампаниям, справочники. Доступ ограничен областью выданного токена.
- Аналитика сайтов: трафик, каналы, качество кампаний, ключевые фразы, воронки и точки обрыва, связка визита с заявкой.
- База знаний: хранилище решений и фактов с тегами и поиском.
Генерация текстов
с контролем качестваПоток текстов без ручного ввода, где качество не оценивается на глаз, а проверяется автоматически перед выпуском.
- Проверки на выпуск: длина и ритм, повторы между текстами, запрещённые обороты и штампы, однообразие построения, обещания и советы, которых давать нельзя.
- Забракованный текст переписывается с точечными замечаниями, а не целиком — и берётся лучший из полученных вариантов.
- Смысл задаётся системой, модель отвечает только за язык: тема, угол подачи и форма приходят из расчёта, а не из фантазии модели.
- Отдельный режим сравнения вариантов промпта на серии прогонов — чтобы отличать реальное улучшение от разброса.
Эксплуатация моделей
лимиты · стоимость · отказыРегулярный выпуск укладывается в бесплатный тариф провайдера и не падает на лимитах.
- Собственный регулировщик темпа по остатку лимита, обработка отказов, автоматическое переключение между моделями при исчерпании квоты.
- Расход каждого выпуска пишется в его метаданные — стоимость видна, а не угадывается.
- Голосовые модели: синтез речи и распознавание в реальном времени, с их тарифными и техническими ограничениями.
Свои расчёты
там, где модель не знает ответаВсё, что можно посчитать, считается кодом — модели остаётся только формулировка.
- Астрономический движок без внешних зависимостей: положения планет и Луны, фазы, обратные движения на любую дату. Точность лучше одной угловой минуты, проверена по независимым опорным точкам.
- Векторные представления текста и классические методы там, где они дешевле и предсказуемее модели: карта оценок по отзывам, перенос поведенческого знания между лендингами.
Инфраструктура и эксплуатация
Прод, который некому чинить кроме меня — поэтому он спроектирован не падатьРабота и доставка
серверы · выкаты · скорость
- Настройка и сопровождение серверов: веб-сервер, сертификаты с автопродлением, службы автозапуска, разделение проектов на одной машине.
- Автоматический выкат из репозитория, ночные прогоны тестов, откат к предыдущей версии.
- Ускорение отдачи: современный протокол, постоянные соединения, кеширование статики. Измеримый результат — ассет с 37 до 3 мс.
- Переезд боевой площадки без простоя: обе площадки работают параллельно, переключение по DNS занимает пять минут и так же откатывается.
Надёжность и данные
бэкапы · доступ · соответствие
- Ежедневные копии баз и файлов в объектное хранилище с проверкой восстановления.
- Резервирование DNS, мониторинг доступности и сертификатов с оповещением до того, как заметит клиент.
- Пароли и ключи не лежат в коде: подставляются в момент запуска, есть регламент ротации.
- Защита от перебора и лишнего трафика, ограничение доступа к служебным интерфейсам, аудит доступа к персональным данным и трек соответствия 152-ФЗ.
Стек
Инструмент выбирается под задачу и ограничения площадки, а не наоборотБэкенд
- PHP 8 без фреймворка, Laravel
- Bun, TypeScript, Hono, ElysiaJS
- Node.js
- Python — интеграции, телефония
- MySQL 8, PostgreSQL, SQLite
- Drizzle, Zod, MongoDB
Фронтенд
- SvelteKit, Svelte 5 runes
- React
- Tailwind CSS v4, shadcn
- PWA, мобильная адаптация
- Vanilla JS без сборки
- Серверный рендеринг: EJS, Blade
Интеграции
- SIP, RTP, Asterisk, Sipuni
- Telegram, VK, MAX, OK, Avito, SMS
- Яндекс.Директ, Метрика, VK API
- Синтез и распознавание речи
- Веб-сокеты, вебхуки, push
- Объектное хранилище, платежи
Как я работаю
Как принимаю решения и почему довожу до эксплуатации, а не до сдачиСчитаю деньги, а не только строки кода
Разобрал руками все 43 обращения, застрявшие в статусе «не дозвонились». Оказалось: 24 из них потеряны не клиентом, а системой — медиана до первого звонка 22 часа при норме в минуты, у части не было и двух попыток, SMS не ушло ни одного. В этой куче висел человек с подтверждённым интересом почти на 300 тысяч. Вывод владельцу был не «нужно больше рекламы», а «почините первое касание».
Влезаю в предметную область, а не только в стек
Чтобы написать распределение номеров, пришлось разобраться в тарифах и пулах операторов. Чтобы построить воронку мебельного производства — в цикле от замера до монтажа. Чтобы считать налог самозанятого — в правилах НПД. Чтобы вести склад металла — в прослеживаемости плавки, которую требуют пищевые клиенты. Без этого получается технически исправная система, которой никто не пользуется.
Решаю, чего не делать
Отклонённое обосновываю так же подробно, как сделанное — включая собственную работу. Разобрал свою первую версию продукта и признал: дешевле переписать, чем латать. Причём корень был не в стеке, а в том, что на сайте не стояло ни одной формы, и жалоба «реклама не даёт заявок» была непроверяемой в принципе.
Поломка должна быть громкой
Худший отказ — тихий: заголовок безопасности, который молча не применился; запись звука, которая отдаёт тишину; проверка текста, которая не срабатывает на кириллице. Симптом всегда один — результат выглядит слишком хорошо. Поэтому защиту проверяю на заведомо плохом входе, а инцидент заканчивается автоматической проверкой, а не заплаткой.
Гипотеза проверяется прототипом, а не совещанием
Стоимость проверки идеи за последние годы упала на порядок, и это изменило не скорость набора кода, а то, какие решения вообще можно принимать. Раньше «строить или не строить» решалось догадкой, потому что проверка стоила квартал. Теперь она стоит неделю — и догадка заменяется фактом. Поэтому предпочту работающий прототип через неделю идеальному плану через квартал: план проверить нечем, прототип показывает правду.
Спор «допустимо ли пользоваться моделями» считаю решённым — вопрос в том, как выстроить работу, чтобы результату можно было доверять. У меня это выстроено, а не стихийно: агенты разведены по ролям — бэкенд, фронтенд, инфраструктура, архитектурное ревью; у проекта есть письменные правила и общая память между сессиями; модели дан прямой доступ к боевым данным через собственные интерфейсы; сделанное принимается только живым запуском. Где у модели потолок, знаю по замерам, а не по ощущениям, и туда её не ставлю.
Граница простая: ускоряется проверка, а не мышление. Архитектура, выбор компромиссов и ответственность за то, что работает в проде, остаются на мне.
Веду команду, когда команда нужна
Четыре года в телеком-проекте, последние два — тимлидом команды из четырёх специалистов: бэкенд-разработчик, фронтенд-разработчик, дизайнер и специалист по телефонии. Постановка и приоритизация задач, разведение людей по ролям и зонам ответственности, код-ревью, планирование релизов, приёмка результата. Задача руководителя здесь простая по формулировке и трудная на практике — чтобы у каждого была работа с понятной границей и чтобы люди не мешали друг другу.
Поэтому одиночная работа — выбор под стадию, а не потолок. На проверке гипотезы команда только замедляет: согласований больше, чем кода. Когда продукт подтверждён и начинает расти, умею собрать людей и передать им контур — тут и окупается привычка фиксировать решения письменно, вместе с отклонёнными вариантами.
Довожу до прода и остаюсь с ним
Продукт сделан не тогда, когда закрыта задача, а когда он работает у клиента. Всё перечисленное выше я не только написал, но и держу в эксплуатации сам: серверы, выкаты, резервные копии, мониторинг и разбор инцидентов. Поэтому и проектирую с расчётом, что чинить это ночью придётся мне — а значит, чинить должно быть нечего.
Лаборатория
Некоммерческие исследования — то, чем занимаюсь для удовольствияЭто не портфолио, а полигон — короткие исследования вне работы. Иногда найденное там переезжает в продукт: механизм самообучающейся карты лёг в основу переноса поведенческого знания между лендингами. Ниже три, доведённые дальше остальных.
Noema
когнитивная архитектура
Собеседник без языковой модели внутри: память эпизодов и долговременная память, образное полушарие, планировщик реплики и отдельный слой её проговаривания, чувства как оценка событий, фоновая работа во время простоя. Независимость от внешней модели подтверждена контрольной проверкой.
HoloBase
весовая база данных
База, где запись — добавление к матрице весов, а запрос — сходимость к ближайшему устойчивому состоянию. Умеет вспоминать товар по слову из отзыва и усреднять группу записей одним вычислением. Отдельный модуль ночных ассоциаций накопил свыше трёхсот тысяч связок.
Images Engine
псевдоголограммы
Изображение, которое выглядит объёмным на обычном экране телефона. Разобрано, что работает параллакс движения, а не стереопара: искажение под одну точку зрения, слои, наклон устройства в руках, слежение за головой через камеру.



