Leg 01 / Software vendor / 2026
Architecting a real estate SaaS suite
A software vendor launches a modular suite for real estate professionals, built by about thirty developers. I made the first commit of the monorepo, wrote the founding ADRs and worked on the accounting and lettings core.
Flight plan
- Period
- Since June 2026
- Role
- Architect
- Team
- About 30 developers
- Stack
- TypeScript, NestJS, React, PostgreSQL
- 42
- ADRs written, out of 115
- 8
- isolated business domains
- 30
- developers, roughly, across several teams
The layers of the suite
Each business domain exposes its use cases once. The UI, the other applications and AI agents all call them through the same contract.
- WP01Business domainsLettings, condominiums, accounting, master data
- WP02Typed contractOne shared, versioned layer, checked in CI
- WP03Event busCross-application messaging with idempotency
- WP04MCP toolsEvery use case can be called by an agent
Context
The vendor is building a single suite: lettings, condominium management, management accounting, master data and synchronisation. About thirty developers, split across several teams, work in the same monorepo.
What I did
- The repository’s first commit, with the initial ADRs: conventions, monorepo and domain boundaries, multi-schema persistence.
- 42 ADRs in total, covering SSO and multi-tenancy, RBAC, API versioning, events and graded CQRS, a cross-application event bus, audit log, a GDPR layer, latency budgets, OpenTelemetry and an accounting core designed for international use.
- The accounting and lettings core, as a contributor.
- How the suite’s teams are organised: a 3-layer model, with decisions taken as close to the teams as possible.
- Progress reporting to management: 8 projects, 532 tickets, and the trade-offs to settle.
What it shows
Setting the architecture of a product built by 30 people from day one, and documenting it well enough that teams can decide without me.
One decision
An AI-native architecture
- Context
- Users will increasingly work through AI agents, and every ad hoc integration would bypass business rules.
- Decision
- Every use case is exposed as an MCP tool, behind the same typed contract and access control as the UI.
- Consequence
- A single platform package exposes the use cases of all 8 domains; an agent goes through the same access control and audit log as a user.