Nine surfaces. Twelve doctrines.
The cross-cutting needs every business application has and keeps rebuilding badly, written as contracts with acceptance gates.
Adopted in coupling order.
Each wave depends on the one before it. Money comes last, deliberately.
Tenancy
Every record is stamped with a tenant. Companies are standalone, with their own modules and reports.
Config
Credentials and per-tenant settings held as data, read by RBAC and Integration.
RBAC
Every write is authorised. Deny by default, from the first endpoint.
Workflow
Routing, approval, escalation, and the queue that is the application.
Documents
Required evidence blocks progress until it is present.
Experience
The data-table contract, the eight states, export and print.
Integration
Code mapping, an outbox, and the gate that stops a dev box writing to production.
Runtime AI
Grounded-or-nothing drafting. A draft never becomes a posted document without a named human.
Accounting
Control accounts and dimensional sub-ledgers. Corrections are new documents, never edits.
Each one exists because something went wrong.
They are not style. Breaking one produces a specific, observed class of bug.
Deny by default
Append-only on anything financial or evidentiary
Idempotency by source id, not by server id
Missing data is a finding, never a licence to invent
Config is data, not code
Prove newness, not liveness
A control that can report a false result is worse than no control
Held is not blocked
Route to a position, never to a person
Timestamps are capture time, not sync time
One engine, channel-resolved input
State the denominator
The contract is common. The binding is not.
Accounting, integration and UI exist as shared patterns only. Chart of accounts, connectors and palette values are specific to each product or tenant, and Config is what carries that difference.
Build on a foundation you can trust.
Tell us about your domain and we will show you how the platform fits.
Talk to us →