Skip to content
indraft
Start free

Documentation

The CRM model

The object set is fixed. That is the constraint the whole product rests on: an agent writing into a fixed, well-named model produces something another agent can read, and a human can inspect. A schema an agent can invent produces a database only that agent understands.

The objects

Company An organization. Matched on a normalized domain, never on name similarity.
Contact A person. Matched on a normalized email, never on name similarity.
Opportunity A deal in a pipeline stage. Status is derived from the stage.
Interaction A summary of something that happened, with its actor and assertion kind.
Task A follow-up, optionally due and linked to records.
Pipeline and stage Ordered stages with a kind: open, won, or lost.
Source Where an assertion came from, when there is one.
Actor Who or what made a change. One per credential.
Mutation and field change The append-only record of every write and its diff.

What you can configure

  • Custom object types, with typed fields and declared relationships
  • Pipeline names and their ordered stages
  • Stage labels, kind, and optional probability
  • Custom fields on company, contact, opportunity, and task
  • Tags
  • Relationship roles on known associations
  • Lifecycle labels mapped to a canonical category
  • Workspace display timezone and default currency

What you cannot

These are deliberate limits, not missing features. Naming them saves you looking.

  • The canonical object set: a company is a company in every workspace
  • Pipeline semantics on your own types, so forecasting stays comparable
  • Identity resolution on your own types, which rests on email and domain
  • Replacing core identifiers or timestamps
  • Computed or code fields
  • A workflow engine
  • Arbitrary graph edges between unknown objects
  • Custom storage schemas or raw SQL

Standard fields are real columns

Not an attribute table, not a JSON blob. A company's name is a column called name, which is why search, sorting, and constraints behave the way you expect rather than the way a generic schema forces.