The layers
Layer 0 — Murmurations (portable profiles)
Layer 0 — Murmurations (portable profiles)
Businesses publish a portable, federated profile to the
Murmurations network. ECN is both a node and an
aggregator, so a profile is not locked into ECN.
Layer 1 — Control plane (system of record)
Layer 1 — Control plane (system of record)
A Django control plane owns the canonical records: Business (the directory
listing), Organization (the tenant boundary for a workspace), and
Membership (which users belong to which org, with roles). Ownership flows
through claims and invites. See the data model.
Layer 2 — Context
Layer 2 — Context
Each business compiles into a ContextPack — a structured, versioned,
embeddings-backed surface that agents read. AI-authored content enters as
seeded and is never auto-marked verified. Provenance is tracked per claim.Layer 3 — CRM & Automation
Layer 3 — CRM & Automation
The workspace: Contacts, Accounts, Deals, Tasks, Conversations, Forms, and a
graph-based automation engine. The Unified Prospecting Engine
lives here and powers Sales, Recruiting, and Fundraising.
The AI Gateway is sacred
Every LLM call, embedding, agent run, and paid external lookup goes through one gateway (backend/ai/gateway.py). It:
- Resolves credentials — managed ECN provider keys for the hosted product.
- Preflights cost against the rate card and the org’s budget caps.
- Executes the provider call.
- Meters a
UsageEventand records aCreditTransactionspend.