Entities are the universal data objects in Synap. Every piece of information you capture — a note, a task, a contact, a bookmark — becomes an entity with a typed profile. AI classifies incoming data automatically, so you never have to organize anything yourself.
An entity is a single, structured data object in your pod. Think of it as a row in a database, but far more flexible. Each entity has a title, an optional description, a creation date, and a set of properties stored as JSONB. Properties can hold anything: strings, numbers, dates, arrays, nested objects. There is no fixed schema — properties are defined by the entity's profile.
Profiles are the typing system. When an entity has the profile task, it gets properties like status, priority, and dueDate. When it has the profile person, it gets email and phone. The profile defines what properties are available, their types, and their defaults.
Synap ships with 14 system profiles that cover the most common data types. You can use them as-is or extend them with custom properties.
When you capture something — paste a URL, type a quick thought, forward an email — Synap's AI pipeline analyzes the content and assigns the appropriate profile automatically. Paste a link to a news article? It becomes an article entity with the author, title, and read time extracted. Type "Call Sarah about the Q3 budget"? It becomes a task with a reference to the person entity "Sarah" if one exists.
This classification happens through the unified capture pipeline. The AI examines the raw input, determines the best profile match, extracts structured properties, and creates the entity — all in a single pass. You can always reclassify an entity later by changing its profile.
Entity properties are stored as JSONB in PostgreSQL. This gives you the flexibility of a document database with the querying power of a relational one. Properties are validated against the profile schema: a task profile enforces thatstatus must be one of four values, that priorityis a number, and that dueDate is a valid ISO date string.
You can add custom properties to any profile. Custom properties appear alongside system properties in views, filters, and the entity detail panel. They are fully indexed for search and can be used in view grouping and sorting.
Profiles support parent-child inheritance. The contact profile extends person, inheriting its email and phone properties while adding role. Similarly, website and article both extend bookmark, inheriting url, domain, and source.
This inheritance means you can create views that show all "person" entities and see both raw people and contacts in the same view. Queries against a parent profile automatically include child profiles.
When the 14 built-in types are not enough, you create custom profiles. A custom profile defines a name, an icon, a color, and a set of property definitions. Each property has a name, a type (text, number, date, select, multi-select, relation, etc.), and optional validation rules.
Use a custom profile when your data has a distinct shape that does not fit existing types. For example, a "Recipe" profile with ingredients, prep time, and servings. Or a "Meeting Note" profile that extends the note profile with attendees and action items. If your data is conceptually a task, a note, or a bookmark, use the built-in profile and add custom properties instead of creating a new profile from scratch.
For architecture details and implementation specifics, see the Entities concept deep dive and Knowledge Graph in the technical docs.