Przejdź do treści

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_subscriptions table 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_subscriptions per 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 WHERE clause to the hot path. Benchmarks show no measurable impact at the current rule-book size, but it would bear watching past 200 rules total.