Capability·Driven

A methodology for architecture

The capability is the unit of decomposition.

Capability-Driven Design decomposes a system not by team, technology, or service, but by capability — a mandate-backed business function that owns its data, exposes a curated API to the channels that call it, and speaks to its peers only through events. Everything else is derived from that one commitment.

Philosophy

What a capability is, and why it is primary

A capability is not a service, a team, or a database. It is a business function the organisation is mandated to hold — and it is the primary unit around which the whole architecture is organised.

A capability is a mandate-backed business function — the primary unit of architectural decomposition.
Owns its data

A capability owns one or more databases or schemas, invisible to every other capability. No shared stores, no shared entities, no reaching into another capability's persistence.

Curated boundary

It exposes a single curated REST API for channels to call, and publishes events on a shared bus for peers to consume. You share contracts, never implementations.

Stable over decades

Capabilities change only when the mandate changes. Technology is derived from the capability's requirements — never the reverse.

Sized to a context window

A capability is sized to fit an AI agent's context window. This is the primary decomposition constraint — small enough for one agent to hold whole.

Mandate before market

Every capability is researched against its competitive landscape and regulatory horizon before it is drafted. A list derived from the org chart produces a shallow architecture.

Headless by design

The method produces a headless system specification. Channel UIs sit outside the system boundary and consume capability APIs — a separate development concern.

Two ways to build the same system.

The normal way
A conventional coupled architecture Web and mobile clients call an API gateway; it routes to auth, orders and payments services; those services also call one another directly, use a shared cache, queue and external card API, and every service reads and writes a single shared database. Web app Mobile API gateway Auth Orders Payments Card API Cache Queue shared database
Clients hit a gateway, services also call each other directly, and every service reads and writes one shared database — change one thing and the blast radius spreads.
The capability-driven way
Journey · Apply for a loan Journey · Send a payment
Two banking journeys as vertical slices through five horizontal capabilities Five stacked capability lanes — identity, accounts, payments, lending, notifications — each with services and its own database. A journey column on the left cycles between apply for a loan in indigo (touching identity, accounts and lending) and send a payment in teal (touching accounts, payments and notifications); each sends a pulse down its length and lights only the capabilities it touches. Identity Accounts Payments Lending Notifications
Each capability owns its data and talks only through events — a journey is a vertical slice, touching just what it needs.

Compare all five topologies, with pros and cons →

Where next

Three ways in

Adopt it the way it is meant to be adopted — one capability at a time.