Обсудить проект
Обсудить проект

01Closeflow — software engineering

Сложный backend, AI-системы и интеграции — от архитектуры до production.

Разрабатываем и развиваем программные продукты, где важны надёжность, производительность и корректность данных. Берём ответственность за архитектуру, реализацию и запуск.

Условия работы

  • Senior-led разработка
  • Договор и NDA
  • Работаем с существующим кодом
  • Проект / долгосрочный контракт
pgvectorN.01ВХОДвебхуки · формы · событияN.02APIдоступ · лимиты · контрактыN.03ОБРАБОТКАочереди · воркеры · повторыN.04ДАННЫЕPostgreSQL · RedisN.05ИИLLM · RAG · эмбеддингиN.06РЕЗУЛЬТАТCRM · отчёт · действие
fig. 1Типовой контур. Каждый узел — точка отказа, которую нужно спроектировать заранее.

02Когда мы нужны

Когда имеет смысл
подключать Closeflow

  1. Серверная часть перестала выдерживать рост.

    задержки · конкурентность · хранение · очереди

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

  2. Сервисы живут отдельно и постоянно ломают процессы.

    API · вебхуки · CRM · маркетплейсы · платежи

    Контракты, очереди, повторы и сверка вместо скриптов, которые падают молча.

  3. ИИ-прототип пора превращать в рабочую систему.

    RAG · LLM · GPU · наблюдаемость

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

  4. Задача не укладывается в веб-фреймворк.

    C++ · нативное ПО · CAD / BIM · производительность

    Нативные приложения, рендеринг, интеграции с инженерным ПО и предметные области с формальными ограничениями.

  5. Ручная работа начинает стоить бизнесу денег.

    воркеры · ETL · планировщики

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

  6. Команде не хватает сильного инженера на конкретный проект.

    контракт · модуль под ключ · субподряд

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

03Проекты

Проекты в формате инженерных досье

Сначала задача, масштаб и результат, затем архитектура. Открытые проекты — со ссылкой на код, коммерческие — без имён и деталей заказчика. Метрик, которые нельзя проверить, здесь нет.

Задача
Развитие экосистемы краткосрочной аренды
Масштаб
Web, iOS / Android, внутренние кабинеты, единый backend
Роль
Техническое руководство, архитектура, реализация, релизы
Результат
Единый серверный контур для нескольких клиентских приложений
Подтверждение
Публичный продукт; цифры и скриншоты — по согласованию с заказчиком

Проблема

Экосистема для посуточной аренды: поиск и бронирование, мобильное приложение, операционные инструменты хоста, PMS-интеграции, платежи и отчётность собственникам. Десятки backend-модулей · сотни версионированных миграций · большой контур фоновых и периодических задач.

Архитектура

Бэкенд — многодоменное Django-ядро: бронирования, платежи, PMS-синхронизация, фоновые задачи, WebSocket-коммуникации и API для нескольких клиентских приложений; PostgreSQL / PostGIS, Redis, Celery. Web — публичный клиент и кабинеты на Vue 3: поиск, карточки объектов, бронирование, кабинеты хоста и организаций, отдельный виджет бронирования и собственный пререндер для SEO. Мобильное приложение — Flutter для iOS и Android с гостевым и хостовым контурами: поиск и бронирование, карты, поездки, QR-вход, push-уведомления, deep links, биометрия и Sign in with Apple (Flutter · Dart · bloc · dio · OneSignal · Yandex MapKit · Codemagic · fastlane). Внутренние системы — две отдельные React / Express-системы: операционный кабинет хоста и хаб финансовой отчётности собственников.

Инженерные решения

  1. Интеграции: PMS и каналы бронирования, эквайринг, мессенджеры, push, Google Sheets, карты и геокодинг.
  2. Надёжность: фоновые очереди, повторы и идемпотентность, сверка броней и платежей, проверки качества данных, трассировка и мониторинг.
  3. Один бэкенд обслуживает гостей, хостов и собственников через веб, мобильное приложение и внутренние кабинеты.
  4. Наблюдаемость и поставка: OpenTelemetry, Prometheus, Grafana, Docker, GitHub Actions.

Результат

Вёл техническую часть: архитектура, код-ревью, процесс релизов; работал над бэкендом, Vue-клиентом, Flutter-приложением и двумя Node.js-системами.

Задача
Довести ИИ-продукт от прототипа до системы под нагрузкой
Масштаб
Несколько коммерческих платформ: чат, генерация изображений, биллинг
Роль
Архитектура, backend, интерфейс, эксплуатационный контур
Результат
Платформы с биллингом, мониторингом и резервными сценариями
Подтверждение
Коммерческий проект, детали ограничены NDA: показан инженерный контур, а не реализация

Проблема

ИИ-продукт на демо и ИИ-продукт под нагрузкой — разные системы. Провайдеры моделей падают и меняют цены, диалог теряет контекст, генерации изображений нужны GPU, а каждая лишняя тысяча токенов — прямые расходы.

Архитектура

Это не обёртка над одним LLM API, а платформа. Серверная часть на Go, интерфейс на Next.js и React, потоковый чат через WebSocket и SSE. Единый шлюз поверх нескольких LLM-провайдеров: умная маршрутизация по модели и цене, circuit breaker, резервные маршруты, подсчёт токенов и биллинг. Поверх шлюза — память и семантический кэш на pgvector, граф-редактор workflow с собственным движком исполнения и контуры проверки качества (eval). Отдельный контур — обучение LoRA для SDXL и FLUX и генерация через ComfyUI на арендуемых GPU.

Инженерные решения

  1. Маршрутизация между провайдерами: выбор модели под задачу и стоимость, автоматическое отключение сбойного провайдера (circuit breaker), повторы и резервные маршруты — сбой одной модели не роняет продукт.
  2. Память в три слоя: краткосрочный контекст в Redis, структурированные факты в PostgreSQL, семантический поиск в pgvector. Найденное взвешивается по уверенности, промпт собирается под бюджет токенов.
  3. Семантический кэш ответов и eval-контур с LLM-судьёй: качество и стоимость измеряются, а не угадываются; A/B-эксперименты на реальных сценариях.
  4. Биллинг без потерь: резервирование баланса в Redis, сверка платежей фоновым воркером. Защитные фильтры и проверка персонажа до и после генерации.
  5. Движок workflow из узлов: граф-редактор в интерфейсе и исполнение шагов на сервере с наблюдаемостью каждого узла.
  6. Отдельный GPU-контур: обучение LoRA, генерация через ComfyUI, сохранение внешности персонажа между генерациями; мощности арендуются в RunPod и Vast.ai.
  7. Наблюдаемость и проверка под нагрузкой: метрики в Prometheus и Grafana, нагрузочное тестирование с k6, миграции без простоя, бэкапы, CI / CD.

Результат

Системы разработаны от архитектуры до релиза и эксплуатационного контура: с биллингом, мониторингом и резервными сценариями. Детали заказчиков закрыты NDA: описан инженерный контур, а не конкретная реализация.

Схема: Клиент, API · Go, Память, LLM-шлюз, Генерация, Провайдеры, GPUКлиентWebSocket · SSEAPI · Goсессии · биллингПамятьRedis · pgvectorLLM-шлюзмаршрутизация · кэшГенерацияочередь задачПровайдерыbreaker · резервGPUComfyUI · LoRA
fig. Шлюз выбирает провайдера и собирает промпт из трёх слоёв памяти под бюджет токенов. Генерация изображений идёт отдельной очередью на GPU.

Задача
Показать, что «один эффект на событие» достижим на практике
Масштаб
Эталонный стенд: шлюз, outbox, Kafka, потребитель
Роль
Автор: архитектура, код, тестовые сценарии
Результат
Воспроизводимые сценарии: дубли событий, отказы relay, проверка инвариантов, p95 / p99
Подтверждение
Открытый код и тесты на GitHub

Проблема

Клиент повторяет запрос по таймауту. Брокер доставляет сообщение повторно. Воркер падает после списания, но до коммита. Доставки «ровно один раз» в распределённой системе не существует — а списание, заказ или письмо должны случиться ровно один раз.

Архитектура

Шлюз на Node.js принимает событие только с Idempotency-Key и в одной транзакции пишет его вместе с записью в outbox. Ретранслятор на Java / Spring Boot доставляет outbox в Kafka (в стенде — Redpanda) с повторами и ограничением частоты. Потребитель на Java дедуплицирует через inbox-таблицу и выполняет бизнес-эффект в той же транзакции, что и отметку об обработке.

Инженерные решения

  1. Доставка как минимум один раз (at-least-once) плюс идемпотентный приём дают бизнес-эффект ровно один раз. Гарантия держится на инвариантах в БД, а не на надежде.
  2. Повтор с тем же ключом возвращает тот же ответ; параллельный дубль видит статус «в обработке», а не создаёт вторую запись.
  3. Redis — быстрый кэш ответов и ограничение частоты. Если он недоступен, шлюз деградирует на PostgreSQL, а не падает.
  4. Нагрузочные профили с 30% дублей и сценарии отказов воспроизводятся в docker compose; генератор нагрузки — на Python.

Результат

Открытый референсный проект: схема БД, сервисы, генератор нагрузки и описание экспериментов. Тот же подход — outbox, inbox, ключи идемпотентности — применим к платежам, заказам и интеграциям.

Схема: HTTP, Шлюз · Node, Redis, PostgreSQL, Метрики, Ретранслятор, Redpanda, Потребитель, Бизнес-эффекттранзакция 1транзакция 2HTTPIdempotency-KeyШлюз · Nodeприём · дедупRedisкэш · лимитыPostgreSQLсобытие + outboxМетрикиPrometheus · логиРетрансляторJava · повторыRedpandaat-least-onceПотребительJava · inbox-дедупБизнес-эффектinbox + эффект · tx
fig. Две транзакционные границы. Между ними всё может упасть — эффект всё равно один.

Задача
Лёгкий нативный PDF-редактор вместо Electron
Масштаб
C++23, PDFium, AppKit; слоистая система библиотек
Роль
Автор: архитектура и реализация
Результат
Нативный редактор с тайловым рендерингом и тестами производительности
Подтверждение
Открытый код на GitHub

Проблема

Полноценные PDF-редакторы либо продаются по подписке, либо собраны на Electron: долгий старт, сотни мегабайт памяти, тормоза на больших документах. Цель — нативный редактор, который работает локально, быстро и без аккаунтов.

Архитектура

Слоистая система из статически линкуемых библиотек: core, render, editor, ui, платформенный слой и адаптер PDF-движка. PDFium спрятан за собственными интерфейсами Rivet, AppKit — за платформенными. Свой интерфейс с сохраняемым деревом элементов (retained mode) — без GUI-фреймворка и без браузера внутри.

Инженерные решения

  1. Тайловый рендеринг с ограниченным кэшем — плавный скролл и зум без пересчёта всей страницы и без неконтролируемого роста памяти.
  2. Сериализованный доступ к документу: PDF-движок не потокобезопасен, а интерфейс не должен ждать.
  3. Стабильная идентичность страниц — основа undo / redo для перестановки, поворота, кадрирования, аннотаций и правки содержимого.
  4. Правка настоящего содержимого PDF: перемещение объектов, редактирование существующего текста, замена изображений.
  5. Фоновое сохранение с атомарной заменой файла: документ не повреждается при сбое. PDF JavaScript и XFA отключены, ключевые решения зафиксированы в ADR.
  6. CI собирает и тестирует портируемые слои на macOS и Linux; тесты производительности ловят регрессии до релиза.

Результат

Сборка для macOS: просмотр, поиск, работа со страницами, аннотации, правка текста и изображений. Портируемые слои не зависят от платформы; нативные оболочки для Windows и Linux — следующий этап.

Схема: Действие, rivet_app, platform, rivet_editor, save, rivet_render, rivet_pdf, rivet_pdfium, PDFiumДействиеклик · ввод · скроллrivet_appокна · контроллерыplatformAppKit · CoreTextrivet_editorкоманды · undosavetmp + renamerivet_renderтайлы · кэшrivet_pdfинтерфейсыrivet_pdfiumадаптерPDFiumJS · XFA выкл.
fig. Зависимости идут строго сверху вниз. Движок и платформа изолированы адаптерами.

Ещё из практики

Проблема

Первые варианты планировки здания — долгая ручная работа: требования девелопера нужно совместить с планировочными ограничениями и нормами, а потом перенести результат в CAD. Каждая новая итерация — снова вручную.

Архитектура

ИИ-агент строит черновые варианты планировки из требований девелопера и планировочных ограничений. Нормативные требования, включая ГОСТ, вынесены в отдельный обновляемый слой знаний. Результат передаётся в AutoCAD и Revit как структурированные данные, а не как картинка.

Инженерные решения

  1. Нормы — это данные, а не код: при изменении требований обновляется слой знаний, а не логика агента.
  2. Ограничения формализованы: варианты планировки строятся в рамках правил, а не на впечатлении модели.
  3. Интеграция с AutoCAD и Revit: планировочные данные попадают в привычный инструмент проектировщика и дорабатываются там.
  4. ИИ вне чат-бота: модель — один из компонентов инженерной системы, рядом с геометрией, правилами и CAD-интеграциями.

Результат

Система формировала черновые варианты планировок на ранней стадии проектирования и передавала их в CAD / BIM. Детали заказчика и реализации закрыты NDA.

Схема: Требования, Нормы, Ядро · C++, Слой знаний, ИИ-агент, AutoCAD, RevitТребованиядевелопер · участокНормыГОСТ · правилаЯдро · C++геометрия · связиСлой знанийобновляемыйИИ-агентчерновые вариантыAutoCADчертежиRevitBIM-модель
fig. Нормы живут в отдельном слое знаний. Агент работает в их рамках и передаёт в CAD структуру, а не картинку.

Проблема

Продуктам, принимающим криптовалюту, не должна быть нужна собственная логика наблюдения за сетями, финализации платежей, повторной доставки событий и финансовой сверки. Ошибка в таком коде стоит денег, а не только неудобства.

Архитектура

Отдельный multi-project платёжный шлюз: приложение создаёт платёжный заказ, а шлюз наблюдает за сетями, фиксирует поступления, ведёт финансовый ledger и сообщает результат подписанными вебхуками. Адаптер на каждую сеть — TRON, EVM, Bitcoin и Solana; клиенты подключаются только через HTTP API и вебхуки, SDK на Go и TypeScript. Серверная часть на Go, хранилище SQLite с миграциями.

Инженерные решения

  1. Двойная бухгалтерская запись (double-entry ledger): каждая проводка балансируется, финансовые и аудиторские таблицы защищены от изменений на уровне БД (append-only).
  2. Transactional outbox: событие и запись о нём фиксируются в одной транзакции, поэтому «оплачен» не теряется при сбое.
  3. Идемпотентный API и вебхуки с подписью HMAC: доставка повторяется с нарастающей паузой до явного подтверждения (ACK) от клиента.
  4. Reconciliation: периодические проверки находят неподтверждённые события и зависшие возвраты.
  5. Постоянные курсоры наблюдения за блокчейном, учёт финализации и реорганизаций цепочки; недоплата, переплата и поздний платёж обрабатываются явно.
  6. Ключи изолированы: шлюз не хранит приватных ключей, подписание — в отдельном сервисе; возвраты закрыты по умолчанию (fail-closed) и считают адрес только по данным сети.

Текущее состояние

Реализован инженерный контур шлюза и мультичейн-наблюдения. Проект используется как самостоятельная инфраструктурная разработка; публичные показатели эксплуатации не заявляются.

Схема: Приложение, API · Go, Наблюдатели, Ledger, Подписант, Outbox, Вебхукодна транзакцияПриложениезаказ · ключAPI · Goпроекты · ключиНаблюдателисети · курсорыLedgerпроводкиПодписантключи отдельноOutboxсобытие · txВебхукHMAC · до ACK
fig. Событие и запись в outbox фиксируются одной транзакцией. Что бы ни упало дальше, вебхук доедет до подтверждения.

Проблема

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

Архитектура

Демон на Go запускает задачи в отдельных Linux namespaces с лимитами через cgroup v2 и фильтром системных вызовов seccomp. Ограниченный планировщик (bounded scheduler) не даёт очереди расти без предела. HTTP API принимает задачи, логи выполнения идут потоком по SSE, метрики отдаются в Prometheus.

Инженерные решения

  1. Изоляция на уровне ядра: namespaces, cgroup v2 и seccomp.
  2. Ограниченный планировщик: нагрузка не может исчерпать хост.
  3. Наблюдаемость сразу в составе: SSE-логи выполнения и метрики Prometheus.

Текущее состояние

Работающий демон — доказательство системной разработки на уровне Linux. Проект экспериментальный: это не готовый коммерческий контейнерный движок.

Проблема

Работа с LLM через внешний API скрывает то, что определяет цену и задержку: как формируются батчи, как используется KV-кэш, что происходит при отмене запроса.

Архитектура

Рантайм принимает запросы, объединяет их в батчи, переиспользует KV-кэш, стримит токены клиенту и умеет отменять генерацию на лету. Состояние и нагрузка видны в метриках.

Инженерные решения

  1. Батчинг запросов для загрузки вычислителя.
  2. KV-кэш для переиспользования уже посчитанного контекста.
  3. Потоковая выдача токенов и отмена генерации.
  4. Метрики очереди, задержек и использования.

Результат

Показывает, что работа с LLM не ограничивается вызовами чужого API: механизмы inference понятны и воспроизведены. Проект не позиционируется как замена vLLM.

Проблема

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

Архитектура

TypeScript-сервис получает тарифы Wildberries, сохраняет их в PostgreSQL и обновляет Google Sheets.

Инженерные решения

  1. Данные хранятся в PostgreSQL, а не только в таблице: есть история и основа для проверок.
  2. Выгрузка в Google Sheets, с которой команда уже работает.

Результат

Ручной процесс превращён в автоматизированный. Максимально понятный бизнесу пример прикладной интеграции.

Собственные разработки / R&D

Проблема

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

Архитектура

Мультитенантный модульный монолит на Java 21 и Spring Boot 3; модули общаются событиями через Kafka. Приём и нормализация заявок, первый ответ, цепочки касаний, маршрутизация, эскалация по SLA, атрибуция и отчёт об окупаемости. Интерфейс — Next.js, хранение — PostgreSQL и Redis.

Инженерные решения

  1. Модульный монолит вместо россыпи сервисов: одна сборка и одно развёртывание, но строгие границы модулей и общение только через события.
  2. Цепочка касаний останавливается, как только клиент ответил: входящие письма и сообщения сопоставляются с цепочкой по каждому ящику и каналу.
  3. Коннекторы к CRM, рекламным кабинетам, формам, почте, мессенджерам и телефонии. Сбой одной интеграции не останавливает остальные.
  4. Биллинг, наблюдаемость и ИИ-помощник поддержки — модули той же платформы, а не внешние таблицы и скрипты.

Текущее состояние

Реализован основной технический контур: приём и нормализация заявок, интеграции, маршрутизация, автоматические цепочки, SLA, атрибуция, биллинг и наблюдаемость. После завершения MVP развитие продукта приостановлено: перед повторным запуском нужно пересмотреть часть бизнес-логики и стратегию вывода на рынок.

Продуктовый вывод

Рабочая техническая архитектура не заменяет проверенную бизнес-модель. Дальнейшие вложения в разработку остановлены до пересмотра продукта и каналов продвижения.

Схема: Каналы, CRM · реклама, Приём, Коннекторы, Kafka, Цепочки, Маршрутизация, Атрибуция, PostgreSQLмодульный монолитКаналыформы, почта, звонкиCRM · рекламавнешние APIПриёмнормализация · дедупКоннекторылимиты · повторыKafkaсобытия модулейЦепочкикасания · остановкаМаршрутизацияSLA · эскалацияАтрибуцияисточник → выручкаPostgreSQLарендаторы · отчёты
fig. Все каналы сходятся в один поток событий. Модули не вызывают друг друга напрямую.

04Компетенции

Шесть направлений, из которых собирается рабочая система

node / svc

Серверные системы

Сервисы и API, которые выдерживают нагрузку, повторы и рост требований без переписывания.

  • Go
  • Python · Django
  • Java · Spring Boot
  • Node.js · TypeScript
  • C# / .NET
  • REST · WebSocket · SSE
  • очереди · фоновые процессы

В проектах02 ИИ-платформы10 Платформа автоматизации входящих продаж01 Reho2406 Криптоплатёжный шлюз

Подробнее о направлении: Backend-разработка

node / db

Данные

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

  • PostgreSQL · PostGIS
  • Redis
  • MySQL
  • MinIO / S3
  • Kafka · Redpanda
  • ETL / ELT
  • ledger · сверка · outbox

В проектах03 Execute-once10 Платформа автоматизации входящих продаж01 Reho2406 Криптоплатёжный шлюз

node / ai

ИИ и ML

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

  • LLM-шлюзы · маршрутизация
  • RAG · агенты · память
  • эмбеддинги · pgvector
  • eval · workflow-движки
  • SDXL · FLUX · LoRA
  • ComfyUI
  • TTS / STT

В проектах02 ИИ-платформы05 ИИ для CAD / BIM

Подробнее о направлении: AI/LLM-системы

node / sys

Системная разработка

Нативное и производительное ПО там, где веб-фреймворка недостаточно: рендеринг, редакторы, инженерные программы.

  • C++23 · CMake
  • PDFium
  • нативный десктоп
  • CAD / BIM
  • AutoCAD · Revit
  • Flutter · Dart · iOS / Android
  • bloc · dio · push · deep links
  • Codemagic · fastlane

В проектах04 Rivet05 ИИ для CAD / BIM01 Reho24

node / api

Интеграции

Внешние API со своими лимитами и сбоями, связанные в одну предсказуемую систему.

  • CRM
  • маркетплейсы · закупки
  • платежи · вебхуки: HMAC · ACK
  • PMS
  • почта · мессенджеры · телефония
  • бизнес-API
  • Web3 API

В проектах10 Платформа автоматизации входящих продаж01 Reho2406 Криптоплатёжный шлюз

node / ops

Инфраструктура

Окружение, в котором систему можно развернуть, наблюдать и чинить без героизма.

  • Docker · Linux · Nginx
  • GitHub Actions · CI / CD
  • Prometheus · Grafana
  • OpenTelemetry
  • k6
  • GPU: RunPod · Vast.ai

В проектах02 ИИ-платформы03 Execute-once04 Rivet

05Процесс

От разбора системы до спокойной передачи

  1. 01 —

    Разбираем систему

    Данные, ограничения, зависимости, бизнес-правила и точки отказа.

    итогкарта системы и рисков

  2. 02 —

    Фиксируем архитектуру

    Интерфейсы, хранение, потоки данных, границы ответственности и риски.

    итогADR · контракты API · схема данных

  3. 03 —

    Собираем рабочий контур

    Сначала — сквозной срез через всю систему, готовый к эксплуатации. Потом — ширина.

    итогработающий сквозной срез

  4. 04 —

    Проверяем поведение при сбоях

    Повторы, дубли, деградация зависимостей, мониторинг и алерты.

    итогсценарии отказов · алерты

  5. 05 —

    Запускаем и передаём

    Развёртывание, документация и понятное владение системой — без зависимости от автора.

    итогрегламенты · документация · развёртывание

06С чего начать

Три входа в проект с понятным результатом.

Большой проект не нужно согласовывать сразу. Выберите вход под вашу ситуацию — границы работ и оценку фиксируем до старта.

  1. S.01Технический аудит и план работ
    Когда подходит
    Система тормозит, ломается или требует развития.
    Результат
    Список проблем, приоритеты, архитектурное решение и оценка работ.

    Ориентир по срокамориентир: 1–2 недели

  2. S.02Разработка модуля под ключ
    Когда подходит
    Нужен backend, интеграция, автоматизация или AI-функциональность.
    Результат
    Понятные границы, критерии приёмки и работающий результат.

    Ориентир по срокамориентир: 3–8 недель

  3. S.03Долгосрочная разработка
    Когда подходит
    Развитие продукта, архитектурные изменения, подключение к вашей команде.
    Результат
    Помесячная работа инженера или небольшой команды Closeflow.

    Ориентир по срокамориентир: от 3 месяцев

Сроки и стоимость — ориентиры: окончательно они определяются после технической оценки задачи. Жёсткого прайса на сложные проекты нет. После короткого разговора называем диапазон бюджета и состав работ, чтобы порядок цифр был ясен до старта.

Обсудить задачу

07Форматы работы

Четыре формата работы. Выбирается под задачу, а не наоборот.

ФорматЧто этоПодходит, когда
F.01ПроектРазработка отдельной системы или модуля в рамках согласованного объёма — от архитектуры до запуска.Цель понятна, нужен результат, а не часы.
F.02Контрактная работаПодключение инженера к команде на несколько месяцев: ваши процессы, репозиторий и ревью.Команда есть, но не хватает сильного инженера на серверную часть.
F.03СубподрядРазработка под брендом агентства или интегратора: серверная часть, интеграции, ИИ. Клиент остаётся вашим.Агентство взяло проект шире своей экспертизы.
F.04КомандаНебольшая инженерная команда под задачу: 2–3 человека, ответственность за архитектуру — на одном инженере.Сроки или объём больше, чем под силу одному человеку.

08Принципы

Почему Closeflow — в четырёх инженерных решениях

  1. Нет: Лишние технологии

    Архитектура соразмерна задаче

    Kafka не нужна там, где хватает таблицы в PostgreSQL. Сложность добавляется, только когда её оправдывает нагрузка или риск.

  2. Нет: Хрупкое демо под видом готовой системы

    Сценарии отказа — с первого дня

    Повторы, таймауты, дубли и недоступные зависимости продумываются до релиза, а не после первого инцидента.

  3. Нет: Религия фреймворков

    Стек выбирают ограничения

    Go, Python, Java, C# или C++ — по требованиям к задержкам, команде, экосистеме и сопровождению, а не по моде.

  4. Нет: Исчезнуть после релиза

    Систему можно понять и передать

    Документация, ADR, регламенты эксплуатации и код, который читается без автора.

09Опыт

От прикладного бэкенда до систем, где ошибка стоит денег

  1. Основа

    Серверная разработка и интеграции

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

    API · базы данных · интеграции · автоматизация

  2. Продуктовые системы

    От сервисов к целой экосистеме

    В Reho24 зона ответственности выросла до продуктовой экосистемы: общий backend, публичный web-клиент, Flutter-приложение, внутренние React / Node.js-системы, платежи, PMS-интеграции и эксплуатационный контур.

    Django · Vue 3 · Flutter · React · Celery · PostgreSQL / PostGIS

  3. ИИ-платформы

    Не вызов LLM API, а платформа вокруг него

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

    Go · pgvector · LLM-шлюз · eval · workflow

  4. Системная разработка

    Нативное ПО и конкурентный доступ

    Параллельно появилась системная разработка: C++23, PDFium, управление конкурентным доступом, рендеринг, кеширование и нативный desktop-контур.

    C++23 · PDFium · AppKit · тайловый кэш

  5. Платёжная инфраструктура

    Корректность состояния важнее скорости

    В платёжных системах фокус сместился на корректность состояния: double-entry ledger, transactional outbox, идемпотентность, подтверждаемая доставка вебхуков, reconciliation и изоляция ключей.

    Go · ledger · outbox · HMAC · мультичейн

Общее в каждом слое: состояние данных, границы ответственности, поведение при сбоях

10Об инженере

Инженер серверных, системных и ИИ-решений · основатель Closeflow

Кирилл Зализкий

Опыт охватывает весь контур сложных продуктов: серверные системы и интеграции, web- и мобильные клиенты, ИИ-платформы, платёжную инфраструктуру и нативное ПО.

В проектах отвечаю не за отдельные функции, а за архитектуру, реализацию, надёжность и передачу системы в эксплуатацию. Когда объём требует — собираю небольшую команду из 2–3 инженеров.

github.com/Husqvarnalox
Опыт
6+ лет в промышленной разработке, из них 1,5+ года — прикладной ИИ
Языки
Go · Python · TypeScript / JavaScript · Java · C# / .NET · C++23 · Dart
Системы
PostgreSQL · Redis · Kafka / Redpanda · Docker · наблюдаемость · платёжная инфраструктура: ledger, outbox, reconciliation · GPU-инфраструктура
Ещё в опыте
Web3 и Solana: кошельки, транзакции, обработка блокчейн-событий · кроссплатформенная мобильная разработка на Flutter · техническое управление проектами, API-контракты, документация

11Частые вопросы

Вопросы перед началом работы.

Вы работаете с существующим кодом?

Да. Сначала короткий разбор, затем доработка, рефакторинг или поэтапная замена модулей. Переписывать всё с нуля для этого не нужно.

Кому принадлежат исходники?

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

Можно подписать NDA до обсуждения?

Да. NDA подписываем до обсуждения деталей, если это нужно.

Как организована оплата?

Договор с ИП, счёт, акты. Проекты оплачиваются по этапам, долгосрочная работа — помесячно.

Что происходит после релиза?

Передаём документацию и инструкции по эксплуатации. Можно остаться на сопровождении в формате помесячной работы.

Можно начать с небольшого этапа?

Да, так и рекомендуем: аудит или один модуль. Границы и результат понятны, риск минимален.

12Контакт

Расскажите, что
должно работать.

Опишите задачу, текущую систему и ограничения. Если проект подходит по профилю — предложим следующий шаг: обычно это короткий созвон с вопросами о данных, интеграциях и сроках.

brief.form4 поля · 2 минуты

Бюджет необязательно