The POPE model — bRRAIn Docs

People, Organizations, Places, Events — the universal entity layer underlying every bRRAIn graph.

The POPE model

POPE stands for People, Organizations, Places, Events. It's the universal entity layer that every bRRAIn graph is built on — four simple categories that cover most of what matters in institutional memory.

Why only four?

POPE is deliberately small. The test for adding a new POPE-level entity type: does every organization, across every industry, have this? People, Organizations, Places, and Events pass that test. Contracts, Patients, and Transactions don't — they're industry-specific and live in custom ontology extensions.

Core entity types

Person

A human participant in the system.

| Property | Type | Example | | --- | --- | --- | | id | string | person:alice-uuid | | name | string | Alice Chen | | email | string | alice@firm.io | | role | string | Engineer | | org_id | ref | org:acme-corp |

Organization

Institutions, teams, departments, customers, vendors.

| Property | Type | Example | | --- | --- | --- | | id | string | org:acme-corp | | name | string | Acme Corporation | | type | string | customer / partner / internal-team | | parent_org | ref | org:acme-holdings |

Place

Projects, workspaces, physical locations, deployment regions.

| Property | Type | Example | | --- | --- | --- | | id | string | place:project-portfolio-2026 | | name | string | Project Portfolio 2026 | | type | string | project / workspace / region | | owner_id | ref | person:alice-uuid |

Event

Sessions, meetings, milestones, consolidation cycles, deployments, incidents.

| Property | Type | Example | | --- | --- | --- | | id | string | event:q2-planning-meeting | | name | string | Q2 Planning Meeting | | type | string | session / meeting / milestone | | timestamp | datetime | 2026-04-10T15:00:00Z | | participants | array | [person:alice, person:bob] |

Standard relationships

POPE ships with a canonical set of edges. You can add more in custom ontology extensions, but these always exist:

| Edge | Source | Target | Meaning | | --- | --- | --- | --- | | authored | Person | anything | Created the target | | participated_in | Person | Event | Was a participant | | belongs_to | Person | Organization | Employment/membership | | owns | Person / Organization | Place | Ownership or primary control | | member_of | Organization | Place (project) | Team working on a project | | informs | Decision | Decision | One decision informed another | | validated | Decision | Learning | A decision produced a learning | | mitigates | Decision | Risk | A decision reduced a risk | | exacerbates | Decision | Risk | A decision increased a risk | | created_in | * | Event | The target was created during this event | | discovered_in | Learning | Session | Context for how a learning surfaced |

Supplementary layers

POPE is extended with three always-available supplementary layers:

Provenance layer

| Entity | Purpose | | --- | --- | | Decision | Why was a choice made? Who decided? What alternatives were considered? | | Learning | What was understood? What validated an assumption? What contradicted prior thinking? |

Reliability layer

| Entity | Purpose | | --- | --- | | Risk | What could affect validity? Owner? Mitigation status? Severity? |

Temporal layer

| Entity | Purpose | | --- | --- | | Session | When did creation occur? Under what context? Which participants? |

These layers are also "first-class" — you can query across POPE + provenance + reliability + temporal in a single retrieval.

POPE in practice

Example: a legal engagement

  • People: the partner, associates, client contacts
  • Organizations: the client firm, opposing counsel
  • Places: the matter, the court, the document repository
  • Events: intake call, depositions, filings
  • Decisions: forum selection, settlement posture
  • Risks: statute of limitations, discovery sanctions
  • Sessions: every attorney's work session on the matter

A single query — "what forum-selection decisions did Alice make on cases where the opposing counsel was Widget LLP and the statute-of-limitations risk was medium or above?" — uses every POPE and supplementary layer at once.

Example: a manufacturing operation

  • People: operators, supervisors, quality engineers
  • Organizations: suppliers, certification bodies, customers
  • Places: production lines, receiving docks, regional distribution centers
  • Events: shift starts, maintenance windows, shipment departures
  • Decisions: supplier selections, quality gate overrides
  • Risks: tariff exposure, component shortages
  • Sessions: every shift on every line

Extending POPE

POPE is the base layer; your domain model extends it. For example, a Contract entity type in a legal ontology extension relates to POPE via:

  • authored — a Person authored the Contract
  • involves (custom) — the Contract involves one or more Organizations (the parties)
  • governed_by (custom) — the Contract is governed by a Place (jurisdiction)

See Extending the ontology for the full workflow.

What POPE is not

  • POPE is not an industry vertical — don't try to fit everything into these four categories.
  • POPE is not immutable in every property — property schemas can be extended. Only the entity types themselves are immutable.
  • POPE is not a complete world model — it's a minimal, portable spine. Your custom ontology adds the domain-specific flesh.