Status is marked honestly throughout. Live means running in our production deployment. Built means the code exists with test coverage but isn't wired to a live broker or transport yet. Planned means designed and not built.
Content · Pure CMS
Wagtail
Typed structured blocks: content as data, not HTML
pages · block_utils
Posts, events, scheduling
blog · cms_calendar
Site sign-up audiences
cms_mailing_list
Swappable look, no core edits
theme apps
Your brand voice and business facts, for grounding AI
context_store
In-editor drafting with business context
streamfield_ai · wagtail_ai
Business · Pure CRM
swappable abstract models
Contact, Opportunity, Organisation, sale stages
models · pipelines
Take card payments
crm_payments · pinpayments
Agreements, plans, seats, licences
crm_billing
Invoices and ledger, synced to Xero
crm_accounting · xero
Campaigns from the same contacts
crm_marketing · mailchimp
Invitations, member areas, cases
context_invitations · crm_legal
Business reporting and policy rules
crm_reporting · crm_policies
Server-rendered components, no separate front-end app to maintain
htmx · crm_components
AI · Pure Creative AI
the pure_ai suite
Runner loop, tool registry, approval gating, run log
pure_ai
Governed actions over content and records
pure_cms_ai · pure_crm_ai
Swap the AI model, keep everything else
pure_ai_anthropic · pure_ai_openai
Deny-by-default, tokenised, audited egress to agents
agent_access · token_vault
Background tasks, MCP server, external orchestration client
tasks · mcp_server · n8n
Drafts pages and sections into review, never publishing itself
content-editor · cms tools
Identity & foundation
one user, beneath every layer
A single Django user: the website visitor is the CRM contact
users · Contact.user
Access down to the individual record
guardian
Role depends on context, not fixed group membership
django_proximity_roles
Status models, the agent-access contract
pure_django
Records which licensed components are installed, for your admin and ours
pure_django.licensing
Content, business data and identity in one store you control, with no SaaS silos and no cross-system sync to reconcile.
One database is what lets an AI assistant see the whole business at once, and what makes a data handover a single export rather than six reconciliations.
Why it stays maintainable across many clients.
Content is structured, never HTML
Every page is typed, addressable blocks. That's what makes content reusable across channels, queryable alongside business data, and legible to an AI assistant.
Business models are abstract with working defaults
Every CRM model ships as an abstract base with a concrete default you can swap. One core serves very different businesses without a fork per client.
Client projects never edit library source
Customisation happens through model swaps and settings. If something can't be expressed that way, the library needs a new extension point.
What's yours and what's licensed
The boxes divide cleanly. Everything under Pure CMS, Pure CRM and the pure_ai suite is Pure Stack library code, licensed to your deployment and maintained by us. Your concrete models, your custom apps, your theme and your settings are generated into your project and belong to you, as does everything in the database.
The licence inventory row is worth reading closely, because it's the one people expect to be a trap. It registers which licensed components are installed so both your admin and ours can see them. It has no ability to disable anything, and a deployment runs normally with the record missing, stale or lapsed. Enforcement lives in the agreement, deliberately, so that an operational problem can never become an outage.
The practical limit sits at build time, not run time. Installing or reinstalling the libraries needs a current entitlement, so an application whose licence has lapsed keeps serving traffic but can't be patched, rebuilt or moved to new infrastructure until the licence is renewed or bought out.
Want to see it running?
We'll walk you through the real admin, the real data model and the audit log, including the parts still in progress.