> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getcore.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Entity Types

> The 11 entity types CORE extracts, how they are deduplicated, and how they flow through search.

## What entities are

Entities are nodes in the memory graph. Statements link entities together to form facts like "Sarah works at Red Planet". When the same entity is mentioned across multiple episodes, CORE deduplicates it by name normalization plus vector similarity in the `ENTITY` namespace, so all references resolve to a single node.

## The 11 entity types

CORE defines 11 entity types in `EntityTypes` (`packages/types/src/graph/graph.entity.ts`). Only named, searchable entities are extracted, no generic vocabulary.

| Type           | Captures           | Examples                                     |
| -------------- | ------------------ | -------------------------------------------- |
| `Person`       | People             | Sarah, John, Dr. Chen, Mike                  |
| `Organization` | Companies, teams   | Google, Red Planet, Design Team              |
| `Place`        | Locations          | Bangalore, San Francisco, Office HQ          |
| `Event`        | Occurrences        | React Conference, Q2 Planning, Sprint Review |
| `Project`      | Work initiatives   | CORE, MVP, Website Redesign                  |
| `Task`         | Tracked items      | CORE-123, Issue #456, TODO-789               |
| `Technology`   | Tools, frameworks  | TypeScript, PostgreSQL, React, Neo4j         |
| `Product`      | Products, services | iPhone, Slack, ChatGPT, Figma                |
| `Standard`     | Methodologies      | OAuth 2.0, REST API, Agile, SOLID            |
| `Concept`      | Abstract topics    | Fat Loss, Code Review, Search Pipeline       |
| `Predicate`    | Relationships      | "works at", "lives in", "manages"            |

## Predicate is special

`Predicate` represents relationship edges, not standalone nodes. It is used when a statement asserts a connection between two other entities, such as `works_at`, `lives_in`, or `manages`. A `Predicate` does not appear as a node you would search for directly; it labels an edge in the graph.

## How entities are extracted and resolved

During ingestion CORE extracts entities from episode text and classifies each one into one of the 11 types. New mentions are deduplicated against existing entities by name normalization plus vector similarity in the `ENTITY` namespace (`packages/providers/src/vector/constants.ts`). When the same entity appears in multiple episodes, the new mention is linked to the existing node automatically, so the graph grows without producing duplicate nodes for "Sarah", "Sarah Chen", and "@sarah".

## How entities flow through search

When a search query mentions an entity by name, the router populates `entityHints`. Search handlers such as `entity_lookup`, `relationship`, `aspect_query`, and `temporal` embed each hint and search the `ENTITY` vector namespace to resolve the hint to one or more entity UUIDs. The handler then graph-fetches connected episodes and statements from those nodes, so a query for "Sarah" returns everything attached to the resolved `Person` entity, not just literal name matches.

## Integration-sourced entities

Entities from connected apps are classified into one of the 11 types above, not separate types. A GitHub repository becomes a `Project`. A GitHub issue or Linear issue becomes a `Task`. A Slack channel becomes a `Place` or `Organization` depending on context. A Gmail contact becomes a `Person`. Integrations are sources of episodes, the entity schema is the same regardless of source.
