ADR 003 — Frameworks as products¶
Status: Accepted Date: 2026-05-09
Context¶
Plan 96 added a second framework (RICS) alongside the EU AI Act. Plans 99 and 100 add UK Defence AI Playbook and Defence Standard 05-138. Plan 101 will add Secure by Design.
By v0.11.x the platform supports five frameworks. Different customers want different subsets:
- A UK chartered surveying firm wants RICS only.
- A defence supplier wants the UK Defence AI Playbook and 05-138.
- A central-government bidder additionally wants Secure by Design.
- A Berlin-headquartered fintech wants the EU AI Act only.
If every tenant sees every framework, the dashboard becomes noisy, the rule loader does redundant work for each tenant, and the billing model has nowhere to attach price differentiation.
Decision¶
Treat each framework as an independent SaaS product subscription.
Implementation (Plan 103, shipped):
- A
framework_subscriptionstable with(tenant_id, framework_slug, status, valid_from, valid_to). - An onboarding picker that asks the new tenant which frameworks they are regulated under.
- The rule loader reads
framework_subscriptionsper tenant and filters the in-memory rule index accordingly. - The dashboard navigation hides surfaces (e.g. the RICS Firm AI Register export) for tenants without that subscription.
- The marketing surface markets each framework as its own product
with its own
/use-cases/{framework}landing page.
Consequences¶
Positive¶
- Pricing can differ per framework. Defence pack at one price, RICS at another, EU AI Act at a third — and tenants pay only for what they use.
- Adding a sixth framework is a YAML drop plus a subscription SKU — no per-tenant configuration migration.
- The dashboard stays clean: a tenant only ever sees the frameworks they bought.
- Sales and marketing can talk about "the RICS pack" or "the Defence pack" without abstract talk about a single multi-purpose platform.
Negative¶
- A tenant that genuinely needs every framework has to buy every framework. We have not yet had to make this concrete with a bundle SKU; when we do, the subscription model is flexible enough to express it but the pricing page work is non-trivial.
- The rule loader filter on every tenant-scoped query adds an
extra
WHEREclause to the hot path. Benchmarks show no measurable impact at the current rule-book size, but it would bear watching past 200 rules total.