
One Engine, Many Skins: The Inite Thesis on Shipping 15 Vertical SaaS Products on Shared Runtime
How Inite ships 15 vertical SaaS products on one shared platform. The constitution-vs-runtime operating model, why three layers beat two, and the four-week clone cycle that proves it scales.
Fifteen products, one engineering team
By May 2026 Inite ships fifteen vertical SaaS products: car rental, real estate, agentic commerce, ticketed events, longevity wellness, AI tutor, restaurants, travel, sports clubs, community, AI visibility, content publishing, cover generation, pitch decks, consultancy. Each one is a full multi-tenant SaaS with its own customers, marketing site, KPI dashboard. They share auth, billing, the multi-tenant inbox, the LLM assistant runtime. They share no lines of domain code.
The number that matters is four. Across four 2026 deployments — rent, estate, shop, events — the median calendar time from empty repository to live tenant taking payment, with one to three automated workflows running in production, was four weeks. Engineering, four weeks. Customer-side discovery — interviewing operators, capturing real workflow data, choosing which processes to automate first — takes longer and decides whether the four engineering weeks ever happen.
How fifteen products fit one engineering team is what this post is about.
The shared bones
Every vertical implements the same five core entities: a user, a tenant, the user's role inside that tenant, an API key, and a per-user permission override. From there it declares which optional capability bundles it consumes — an inbox if it talks to customers in chat, a billing module if it takes payment, a storefront builder if its tenants need a public-facing site, an incidents pipeline if its operators need an alert queue. Below those, each product owns its own domain: vehicles for rent, properties for estate, events and tickets for the ticketing product, restaurants and menus for the food product.
Five entities shared by everyone. Capabilities chosen per vertical. Domain owned by the vertical. The interesting question is how that division gets enforced — and how the platform stops itself from absorbing things that belong to the product.
Three layers, not two
A typical shared-platform setup has two layers: a runtime library every product imports, plus the products themselves. It works until two products disagree about what an entity should look like. One product calls its end-customer customer, another calls the same thing lead, the shared inbox tries to handle both, and the shared inbox ends up subtly broken in both directions.
Inite splits the platform three ways. A spec repository ships no executable code at all — only the schemas, validators, and manifest templates that define what a vertical must declare to join the ecosystem. A runtime SDK implements those declarations identically for every product that adopts them. The fifteen vertical products inherit the runtime and apply the contract to their specific domain.
Calling these three layers a constitution, a government, and citizens is the metaphor. The mechanical effect is that contracts get validated before code ships. Both the rental product and the estate product declare the shape of their end-customer entity against the same schema. The validator rejects mismatches. The shared inbox knows nothing about cars and nothing about properties; it knows about conversations, messages, and channel adapters, and refuses to reach into the domain layer of any product.
What four weeks of cloning looks like
Week one stands up the multi-tenant scaffolding and the five core entities. Week two pulls in the capability bundles the vertical needs and wires the LLM-driven assistant. Week three builds the per-vertical screens, configures the storefront preset, ships the AEO content surface so AI assistants can see the product. Week four connects payments and channel adapters (Telegram, WhatsApp, web), then opens the agent-callable interfaces that let Claude or ChatGPT drive the product directly.
The output is the same shape every time: a multi-tenant SaaS an operator can hand to a real customer on launch day. Week-by-week breakdown drifts in detail between deployments. The four-week cadence holds.
The four weeks are engineering cost. Discovery cost lands before engineering starts and is the real constraint — and it is also the cost that decides whether a project ships at all.
inite.fund is outside this stack
inite.fund does not run on the SaaS platform. It is an autonomous portfolio control plane for operators trading their own capital on their own venue keys — trading positions, an encrypted vault for venue credentials, a hash-chained audit log of every action, an MCP-callable approval queue with human-in-the-loop. The multi-tenant SaaS shape does not fit any of that. inite.fund does not implement the five core entities and does not consume the shared runtime.
The architecture underneath shares the operating philosophy: explicit contracts on every boundary, audit-chained state, no irreversible action without a human acknowledgment. inite.fund runs on a Python and Go stack with zero shared code with the SaaS runtime. The SaaS platform proves the model on fifteen tenants; inite.fund proves the same operating discipline generalizes outside the multi-tenant SaaS shape.
Why this is the moat
Per-vertical SaaS companies compete on domain depth and each rebuild the same plumbing. Horizontal platform companies compete on breadth and leave the domain to customers. Either model rarely scales to fifteen products on one engineering team.
A spec-plus-runtime model competes on a different axis. One engineering team moves at the speed of a horizontal platform and ships at the depth of a per-vertical company. The fifteen products are go-to-market bets sitting on top of a single engineering substrate. When a vertical proves a market, the engineering for the next adjacent vertical is four weeks. When a capability proves itself — a new billing flow, a new channel adapter, a new agent integration — every product that opts in inherits it without any vertical-specific work.
That accumulates. The fifteenth product takes the same four weeks as the second. The companion post on the AEO diagnostic engine (how Inite builds vertical AI products) covers the visibility product that inite.ai ships, one of fifteen. This post is the operating model underneath all of them.
01Why split a multi-product company into a spec repo and a runtime repo?+
Because the alternative is the monorepo trap. When the runtime and the spec live in the same repo, every product change ripples into the contract and every contract change ripples into every product. The Inite split is deliberate: inite-ecosystem is the constitution (what every vertical MUST describe to be a citizen), inite-shared is the government (the generic runtime that executes the contract), and the 15 verticals are the citizens (they apply the contract to a specific domain - cars, properties, ticketed events, restaurants). The constitution has zero runtime imports and zero domain logic by design. This is what lets a real-estate vertical and a car-rental vertical share the same multi-tenant inbox capability without either pulling the other's code.
02What is the difference between Ring 1, Ring 2, and Ring 3?+
Ring 1 (Core) is mandatory for every conforming vertical: 5 entities - User, Company, UserCompanyRole, ApiKey, CompanyPermissionOverride. Removing or breaking any of them is a MAJOR spec bump. Ring 2 (Standard capabilities) is capability-gated: optional bundles like inbox, billing, incidents, notifications. If a vertical declares `capabilities: [inbox]` in its manifest, it MUST implement the entire inbox contract exactly - the conformance test will fail otherwise. Ring 3 (Domain) is whatever the vertical needs and the ecosystem does not constrain its shape: Vehicle for inite.rent, Property for inite.estate, Event for inite.events, Restaurant for inite.food. The 3 rings let verticals diverge in Ring 3 without forking Ring 1.
03How long does it really take to clone a vertical?+
Measured on 4 deployments in 2026 (inite.rent as pilot, inite.estate, inite.shop, inite.events). Median end-to-end: 4 weeks. Week 1 - scaffolding: clone the template, declare the manifest, wire 5 Ring-1 entities via the @inite/auth and @inite/tenant packages, set the Postgres tenant_id column, pass the conformance validator. Week 2 - capabilities: pull the @inite/* bundles the vertical needs (typically inbox + billing + storefront), implement the Ring-3 domain entities, wire the assistant via @inite/assistant. Week 3 - per-vertical UX: the [companySlug] router, the storefront preset, the AEO content surface (llms.txt, ai.txt, FAQPage schema), the KPI dashboard. Week 4 - integration: payment, channel adapters in inbox (Telegram, WhatsApp, Max, web), API key issuance, ops monitoring, agent-callable MCP server. The bottleneck across all 4 deployments was customer-side discovery (interviews, real workflow data), not engineering.
04What goes wrong when you skip the spec repo?+
Two failure modes show up immediately. (1) Drift - the runtime and the verticals start to disagree about what an entity looks like. inite.rent calls it `customer`; inite.estate calls it `lead`; the shared inbox capability tries to be both and breaks both. The spec repo prevents this by forcing every vertical to declare its entity shape against a JSON Schema validator, and by failing CI when a vertical's shape contradicts the contract it claims to implement. (2) Fork-on-pressure - the first time a vertical needs a feature the runtime does not have, the team forks @inite/inbox into the vertical's repo and the fork never merges back. The spec repo prevents this by separating capability bundles (Tier 2 entity contracts) from runtime packages (the generic executor). When a vertical needs something new, it adds it to its Ring 3 - and if the addition turns out to be cross-vertical, the spec absorbs it in the next minor.
05How does this relate to the AEO diagnostic engine in inite.ai?+
inite.ai is one of the 15 verticals. It happens to be the vertical that ships the AEO diagnostic - the 9-step pipeline that takes a URL and returns a citation plan. The diagnostic engine itself lives in initeai/lib/ai/ - it is Ring 3 of inite.ai. What inite.ai shares with the other 14 verticals is the Ring 1 entities, the Ring 2 capability bundles, and the runtime packages. The other verticals do not get the AEO engine - they get the same multi-tenant auth, billing, and inbox that inite.ai gets. This is the model that makes shipping inite.health, inite.estate, or inite.events fast: the operating model is generic; only the domain is per-vertical.
06How does inite.fund fit into the ecosystem?+
inite.fund is the financial-trading product in the INITE ecosystem - an autonomous portfolio control plane for operators running their own capital on their own venue keys. It is NOT a Ring-3 vertical on the shared SaaS runtime. inite.fund does not consume the @inite/* packages and does not implement the 5 Ring-1 multi-tenant entities. Its domain - trading positions, fill ledgers, encrypted venue-key vaults, hash-chained audit logs, MCP-driven approval queue - belongs to a different model than the multi-tenant SaaS verticals. The brand-canonical lists inite.fund as a sub-brand for Knowledge Graph disambiguation so Google merges inite.ai and inite.fund into one company entity. Architecturally it runs on a separate Python + Go stack with its own Astro marketing surface. The shared operating philosophy is what binds them - explicit contracts, audit-chained state, human-in-the-loop on guardrail breaches - not shared code.
07What is the conformance status of the 15 verticals today?+
Per registry/verticals.yaml as of 2026-05-03. Pilot (1): inite.rent - source of canon for the spec. Drift (3): inite.club, inite.estate, inite.shop - consume @inite/* packages but no manifest yet. Migration_pending (5): inite.education, inite.health (also listed as `break3`), inite.food, inite.travel, inite.sport, inite.ai (gated on Company model). Non_conforming (2): inite.events (Hi.Events external API), inite.health (longevity portal). Candidate (2): inite.studio, inite.solutions. Legacy_or_consolidating (1): inite.figma - possibly superseded by inite.content. 0 of 15 are at `conforming` status - the bar is intentionally high. Drift is the expected steady state for a working ecosystem; the goal is not 100% conformance but 100% conformance-checkable.

