Core Concepts
Kanvas is built around six core primitives. Understanding these is the foundation for building on the platform.
Entities
Entities represent real-world objects inside the system. They are your system of record.
| Field | Type | Description |
|---|---|---|
| User | Ecosystem | People who access the system — team members, agents, admins |
| Company | Ecosystem | Organizations / tenants — all data is scoped to a company |
| People | CRM | Contacts, customers, leads — external individuals |
| Organization | CRM | External companies your business interacts with |
| Lead | CRM | Sales opportunities tracked through pipeline stages |
| Product | Inventory | Items in your catalog with variants, attributes, and stock |
| Variant | Inventory | Specific SKU of a product (size, color, config) |
| Warehouse | Inventory | Physical or virtual locations that hold stock |
| Order | Commerce | Purchase transactions with items, payments, fulfillment |
| Message | Social | Content entries — posts, notifications, communications |
| Channel | Social | Groupings for messages and communication threads |
Relationships
Entities are connected through relationships, allowing agents to navigate the operational graph of the business:
Company → Users (team members)
Company → People (customers / contacts)
People → Organizations (works at)
People → Leads (sales opportunities)
Lead → Pipeline → Stages (sales process)
Product → Variants → Warehouses (inventory)
Product → Categories (catalog structure)
Order → People (customer)
Order → OrderItems → Variants (what was purchased)
Message → Channel (communication context)Events
Events represent things that happen in the system. Agents subscribe to events to trigger workflows or make decisions.
| Field | Type | Description |
|---|---|---|
| lead.created | CRM | A new lead was received |
| lead.updated | CRM | A lead changed stage, status, or data |
| order.created | Commerce | A new order was placed |
| inventory.updated | Inventory | Stock levels changed |
| message.created | Social | A new message was posted |
| people.created | CRM | A new contact was added |
| webhook.received | Workflow | External data arrived via receiver |
Events are consumed via GraphQL subscriptions (WebSocket) or webhook receivers that push data to your systems.
Actions
Actions are operations that change system state. They are the interface between agents and operations. In GraphQL terms, actions are mutations:
# Agent decides to create a lead
createLead(input: { title: "Enterprise deal", people_id: 1, pipeline_stage_id: 1 })
# Agent decides to update inventory
updateVariant(id: 1, input: { warehouse: [{ warehouse_id: 1, quantity: 50 }] })
# Agent decides to process an order
createOrderFromCart(input: { cart_id: 1, shipping_address: { ... } })
# Agent decides to send a message
createMessage(input: { message: "Status update", message_types_id: 1 })Workflows
Workflows define automated operational processes. They can be triggered by events or initiated by agents.
Lead Received (event)
↓
Create Contact (action)
↓
Assign to Sales Agent (action)
↓
Send Follow-up Email (integration)
↓
Schedule Appointment (action)
↓
Update Pipeline Stage (action)Kanvas workflows are configured through webhook receivers and rules that define trigger conditions and resulting actions.
Memory
Kanvas stores operational context that agents can query to make decisions:
- Entity data — current state of all business objects
- Custom fields — domain-specific data on any entity
- Files & documents — attached to any entity
- Activity history — who did what, when
- Workflow state — where processes stand
- Relationship graph — how entities connect
This context is what allows agents to make informed decisions without rebuilding business knowledge from scratch.