
Один движок, много обличий: тезис Inite о выпуске 15 вертикальных SaaS-продуктов на общей рантайм-платформе
Как Inite выпускает 15 вертикальных SaaS-продуктов на одной общей платформе. Операционная модель constitution-vs-runtime, почему трёх слоёв достаточно, и четырёхнедельный цикл клонирования как доказательство, что это масштабируется.
Пятнадцать продуктов на одной инженерной команде
К маю 2026 Inite выпускает пятнадцать вертикальных SaaS-продуктов: прокат машин, недвижимость, агентная коммерция, билетные мероприятия, лонгевити и wellness, AI-тьютор, рестораны, путешествия, спортивный клуб, комьюнити, AI-видимость, контент-паблишинг, генерация обложек, питч-деки, консалтинг. Каждый - полностью функциональный мультитенантный SaaS со своими клиентами, маркетинговым сайтом, KPI-дашбордом. Все они делят auth, billing, мультитенантный inbox, рантайм ассистента. И не делят ни одной строки доменного кода.
Цифра, на которую стоит смотреть - четыре. На четырёх деплоях 2026-го (rent, estate, shop, events) медианное календарное время от пустого репо до живого тенанта с приёмом платежей и одной-тремя автоматизациями в проде составило четыре недели. Инженерия - четыре недели. Customer-side discovery - интервью операторов, сбор реальных данных воркфлоу, выбор первых процессов для автоматизации - идёт дольше и решает, начнётся ли вообще инженерия.
Как пятнадцать продуктов живут на одной инженерной команде - предмет этого поста.
Общий скелет
Каждая вертикаль реализует одни и те же пять core-сущностей: пользователь, тенант, роль пользователя внутри тенанта, API-ключ, переопределение прав на пользователя. Дальше она декларирует, какие из стандартных capability bundles она потребляет: inbox, если общается с клиентами в чате; billing, если берёт оплату; конструктор storefront, если её тенантам нужна публичная страница; пайплайн инцидентов, если её операторам нужна очередь алертов. Ниже этого каждая вертикаль владеет своим доменом: машинами для проката, объектами для недвижимости, событиями и билетами для тикетинга, ресторанами и меню для food.
Пять сущностей делятся между всеми. Capabilities выбираются под вертикаль. Домен - суверенный. Сложный вопрос - как именно это разделение принудительно соблюдается, и как платформа не даёт себе случайно поглотить то, что должно принадлежать продукту.
Три слоя, а не два
У типичной общей платформы два слоя: рантайм-библиотека, которую импортирует каждый продукт, и сами продукты, которые её потребляют. Работает до момента, когда два продукта расходятся в том, как выглядит одна и та же сущность. Один называет конечного клиента customer, другой - lead для той же сущности, общий inbox пытается работать с обоими и в итоге слегка ломается с обеими сторонами.
Inite режет платформу на три слоя. Спецификационное репо не содержит исполняемого кода вообще - только схемы, валидаторы и шаблоны манифестов, описывающие, что вертикаль обязана задекларировать, чтобы войти в экосистему. Рантайм-SDK реализует эти декларации одинаково для каждого продукта, который их принимает. Пятнадцать вертикалей наследуют рантайм и применяют контракт к своему конкретному домену.
Назвать эти слои конституцией, правительством и гражданами - это метафора. Механический эффект другой: контракты валидируются до того, как код попадает в прод. Продукт проката и продукт недвижимости декларируют форму сущности конечного клиента против одной и той же схемы. Валидатор отбрасывает расхождения. Общий inbox ничего не знает про машины и про объекты недвижимости - он знает про беседы, сообщения и канал-адаптеры, и отказывается лезть в доменный слой любого из продуктов.
Из чего складываются четыре недели клонирования
Первая неделя поднимает мультитенантный каркас и пять core-сущностей. Вторая подтягивает capability bundles, которые нужны вертикали, и подключает LLM-ассистента. Третья строит экраны вертикали, конфигурирует пресет storefront, ставит AEO-поверхность, благодаря которой AI-ассистенты видят продукт. Четвёртая подключает платежи и канал-адаптеры (Telegram, WhatsApp, web), затем открывает агент-доступные интерфейсы, позволяющие Claude или ChatGPT драйвить продукт напрямую.
Выход всегда одинаковой формы: мультитенантный SaaS, который оператор передаёт реальному клиенту в день выпуска. Пошаговая разбивка между деплоями дрейфует в деталях. Каденция четырёх недель держится.
Четыре недели - это инженерная стоимость. Стоимость discovery приходится раньше и составляет настоящее ограничение - и она же определяет, дойдёт ли проект до инженерии.
inite.fund стоит вне этого стека
inite.fund на SaaS-платформе не работает. Это автономная панель управления портфелем для операторов, торгующих собственным капиталом на собственных биржевых ключах: торговые позиции, зашифрованное хранилище для credentials бирж, аудит-лог с хэш-цепочками по каждому действию, очередь approval через MCP с human-in-the-loop. В форму мультитенантного SaaS ничто из этого не вписывается. inite.fund не реализует пять core-сущностей и не потребляет общий рантайм.
Архитектурная дисциплина под ним делится с SaaS-стороной операционной философией: явные контракты на каждой границе, audit-chained state, отказ делать что-то необратимое без подтверждения человека. inite.fund работает на стеке Python + Go, не делящем ни строки с SaaS-рантаймом. SaaS-платформа доказывает модель на пятнадцати тенантах; inite.fund доказывает, что та же операционная дисциплина обобщается за пределы мультитенантной SaaS-формы.
Почему это и есть моат
Компании per-vertical SaaS конкурируют глубиной доменной экспертизы и каждая заново строит ту же сантехнику. Горизонтальные платформенные компании конкурируют широтой инструментария и оставляют домен клиентам. Ни одна из этих моделей обычно не масштабируется до пятнадцати продуктов на одной инженерной команде.
Модель «спецификация плюс рантайм» конкурирует по другой оси. Одна инженерная команда движется со скоростью горизонтальной платформы и поставляет глубину per-vertical компании. Пятнадцать продуктов сидят как пятнадцать go-to-market ставок на едином инженерном субстрате. Когда вертикаль доказывает рынок, инженерия следующей соседней - четыре недели. Когда capability доказывает себя - новый billing-флоу, новый канал-адаптер, новая интеграция с агентом - каждый продукт, который её принимает, наследует её без работы под конкретную вертикаль.
Это накапливается. Пятнадцатый продукт занимает те же четыре недели, что и второй. Компаньон-пост про AEO-диагностический движок (как Inite строит вертикальные AI-продукты) описывает продукт видимости, который поставляет inite.ai - один из пятнадцати. Этот пост - операционная модель под всеми пятнадцатью.
01Зачем разделять многопродуктовую компанию на репо спецификации и репо рантайма?+
Потому что альтернатива - ловушка монорепо. Когда рантайм и спецификация живут в одном репо, каждое изменение продукта расходится в контракт, и каждое изменение контракта расходится в каждый продукт. Разделение Inite сделано намеренно: inite-ecosystem - это конституция (что каждая вертикаль ДОЛЖНА описать, чтобы быть гражданином), inite-shared - это правительство (общий рантайм, который исполняет контракт), а 15 вертикалей - это граждане (они применяют контракт к конкретному домену - машины, недвижимость, билетные мероприятия, рестораны). У конституции по дизайну ноль рантайм-импортов и ноль доменной логики. Именно это позволяет вертикали недвижимости и вертикали проката машин делить одну и ту же мультитенантную capability inbox, не таща код друг друга.
02В чём разница между Ring 1, Ring 2 и Ring 3?+
Ring 1 (Core) обязателен для каждой конформной вертикали: 5 сущностей - User, Company, UserCompanyRole, ApiKey, CompanyPermissionOverride. Удаление или поломка любой из них - это MAJOR бамп спецификации. Ring 2 (стандартные capability) - capability-gated: опциональные bundles вроде inbox, billing, incidents, notifications. Если вертикаль объявляет `capabilities: [inbox]` в своём манифесте, она ОБЯЗАНА реализовать весь контракт inbox целиком - иначе тест conformance упадёт. Ring 3 (Domain) - это всё, что нужно вертикали, и экосистема не ограничивает его форму: Vehicle для inite.rent, Property для inite.estate, Event для inite.events, Restaurant для inite.food. 3 кольца позволяют вертикалям расходиться в Ring 3, не форкая Ring 1.
03Сколько реально занимает клонирование вертикали?+
Измерено на 4 деплоях в 2026 (inite.rent как пилот, inite.estate, inite.shop, inite.events). Медиана end-to-end: 4 недели. Неделя 1 - каркас: клонировать шаблон, объявить манифест, прошить 5 сущностей Ring 1 через пакеты @inite/auth и @inite/tenant, добавить колонку tenant_id в Postgres, пройти валидатор conformance. Неделя 2 - capabilities: подтянуть нужные bundles @inite/* (типичный минимум inbox + billing + storefront), реализовать сущности Ring 3, подключить ассистента через @inite/assistant. Неделя 3 - UX вертикали: роутер [companySlug], пресет storefront, AEO-поверхность (llms.txt, ai.txt, FAQPage schema), KPI-дашборд. Неделя 4 - интеграция: платежи, канал-адаптеры в inbox (Telegram, WhatsApp, Max, web), выпуск API-ключей, мониторинг операций, MCP-сервер, доступный агентам. Узким местом на всех 4 деплоях был discovery на стороне клиента (интервью, реальные данные воркфлоу), а не инженерия.
04Что идёт не так, если пропустить репо спецификации?+
Два режима отказа выявляются сразу. (1) Дрейф - рантайм и вертикали начинают расходиться в том, как выглядит сущность. inite.rent называет её `customer`; inite.estate - `lead`; общая capability inbox пытается быть обеими и ломает обе. Репо спецификации предотвращает это, заставляя каждую вертикаль декларировать форму сущности против JSON Schema валидатора и упирая CI, когда форма вертикали противоречит контракту, который она утверждает. (2) Форк-под-давлением - первый раз, когда вертикали нужна фича, которой нет в рантайме, команда форкает @inite/inbox в репо вертикали, и форк никогда не возвращается. Репо спецификации предотвращает это, разделяя capability bundles (Tier 2 контракты сущностей) и рантайм-пакеты (общий исполнитель). Когда вертикали нужно что-то новое, она добавляет это в свой Ring 3 - и если добавление оказывается кросс-вертикальным, спецификация впитывает его в следующем минор-релизе.
05Как это связано с AEO-диагностическим движком в inite.ai?+
inite.ai - это одна из 15 вертикалей. Она случайно оказывается той, что поставляет AEO-диагностику - 9-шаговый конвейер, который берёт URL и возвращает план цитирования. Сам диагностический движок живёт в initeai/lib/ai/ - это Ring 3 inite.ai. То, что inite.ai разделяет с остальными 14 вертикалями - это сущности Ring 1, capability bundles Ring 2 и рантайм-пакеты. Другие вертикали не получают AEO-движок - они получают ту же мультитенантную auth, billing и inbox, что и inite.ai. Это и есть модель, которая делает выпуск inite.health, inite.estate или inite.events быстрым: операционная модель общая; только домен - на вертикаль.
06Как inite.fund вписывается в экосистему?+
inite.fund - это финансово-торговый продукт экосистемы INITE: автономная панель управления портфелем для операторов, торгующих собственным капиталом на собственных биржевых ключах. Это НЕ вертикаль Ring 3 на общем SaaS-рантайме. inite.fund не потребляет пакеты @inite/* и не реализует 5 мультитенантных сущностей Ring 1. Его домен - торговые позиции, ledger исполнений, зашифрованные хранилища ключей бирж, аудит-логи с хэш-цепочками, очередь approval через MCP - принадлежит другой модели, не той, что у мультитенантных SaaS-вертикалей. brand-canonical перечисляет inite.fund как sub-brand для дизамбигуации в Knowledge Graph, чтобы Google склеил inite.ai и inite.fund в одну компанию. Архитектурно работает на отдельном стеке Python + Go со своей Astro-маркетинговой поверхностью. Общая операционная философия - явные контракты, audit-chained state, human-in-the-loop на нарушениях гайдрейлов - это то, что их связывает, а не общий код.
07Какой conformance-статус у 15 вертикалей сегодня?+
По registry/verticals.yaml на 2026-05-03. Pilot (1): inite.rent - источник канона для спецификации. Drift (3): inite.club, inite.estate, inite.shop - потребляют пакеты @inite/*, но без манифеста. Migration_pending (5): inite.education, inite.health (также как `break3`), inite.food, inite.travel, inite.sport, inite.ai (упирается в модель Company). Non_conforming (2): inite.events (внешний API Hi.Events), inite.health (портал лонгевити). Candidate (2): inite.studio, inite.solutions. Legacy_or_consolidating (1): inite.figma - возможно, заменена на inite.content. 0 из 15 в статусе `conforming` - планка намеренно высокая. Drift - это ожидаемый стабильный режим для рабочей экосистемы; цель не в 100% conformance, а в 100% проверяемости на conformance.

