Objects & schema model

Primicornis stores CRM data in three cooperating layers:

Object definitions

An object definition is a first-class type inside a workspace (for example startup, company, person, fund, opportunity, or your custom type). Each object has:

  • A stable API key (slug-like identifier).
  • Display metadata (name, description, icon).
  • Property definitions attached to that object.

Property definitions

Properties map to strongly typed fields (text, number, currency, date, email, relation, …). Relations reference other object definitions and power graph-like navigation inside the UI.

Core portfolio vocabulary

ObjectTypical use
StartupPortfolio company or accelerator cohort company
CompanyStrategic partner, LP entity, or vendor
PersonFounder, investor, operator
FundVehicle capturing commitments and DPI metrics (your schema may vary)
OpportunityDeal flow stage, round, or partnership pipeline

Your exact keys may differ — always read definitions from GET /workspaces/{id}/object-definitions.

Records & versions

Records hold JSON properties payloads keyed by property keys. Writes should be idempotent where possible: upsert flows will arrive with external CRM IDs in dedicated text fields until native external-ID columns graduate from the roadmap.

Relationships & linked records

Relation properties store target record IDs. Import order matters: create people before linking them as founders on startups, and create startups before attaching opportunities.

Imports & mappings

CSV/XLSX ingestion runs through the import analyzer endpoints: map columns → property keys → apply in a transaction with run history. Prefer dry-runs (analyze) before destructive apply operations.

List endpoints return bounded pages; always honor limit and cursors where provided. Global search is workspace-scoped and suitable for operator workflows, not bulk extraction — enforce reasonable poll intervals.