Entities & the Data Model

How Ordinary Animator organises your production data — accounts, projects, the entity hierarchy, and properties.

Everything in Ordinary Animator is an entity. Entities have a type, an ID, and a set of properties. Understanding the entity model makes the navigation, the AI agent, and the data structure coherent.

Accounts and projects

You sign in with a Google account. Your account identifies you, but it doesn't hold content directly — all content lives inside projects.

A project is the top-level container for a series. Every episode, character, location, recipe, and idea belongs to a project. Projects have an owner — the account that created them. Ownership cannot be transferred.

Projects can be shared with other users. A shared user gets either read-only (Reviewer) or read-write (Contributor) access. The owner retains full control. See Sharing for how the invite flow works.

When you open Ordinary Animator, you see your own projects plus any projects shared with you.

The entity hierarchy

Project is the root entity. All other entities are descendants:

project
├── episode
│   └── scene
│       └── shot
├── character
├── location
├── prop
├── agent
├── recipe
│   └── step
├── idea
├── swimlane
│   └── arc

Narrative hierarchy — the story structure flows through project → episode → scene → shot. Each level is contained by the one above.

Asset entities — character, location, and prop attach directly to the project and are reused across any number of episodes.

Planning entities — idea, swimlane, and arc support story planning. Arcs live within swimlanes.

Configuration entities — agent and recipe are project-level. Steps belong to a recipe.

All entity types and their paths

The AI agent and entity API address every entity by a hierarchical path. project (bare) lists all your projects; all other paths start with /:

Entity Path
All projects project
Project /project/{projectId}
Episode /project/{projectId}/episode/{episodeId}
Scene /project/{projectId}/episode/{episodeId}/scene/{sceneId}
Shot /project/{projectId}/episode/{episodeId}/scene/{sceneId}/shot/{shotId}
Character /project/{projectId}/character/{characterId}
Location /project/{projectId}/location/{locationId}
Prop /project/{projectId}/prop/{propId}
Agent /project/{projectId}/agent/{agentId}
Recipe /project/{projectId}/recipe/{recipeId}
Step /project/{projectId}/recipe/{recipeId}/step/{stepId}
Idea /project/{projectId}/idea/{ideaId}
Swimlane /project/{projectId}/swimlane/{swimlaneId}
Arc /project/{projectId}/swimlane/{swimlaneId}/arc/{arcId}

The AI agent uses these paths to navigate ("go to character kira"), fetch data, and create entities.

Entity properties

Every entity has core properties and metadata properties. Both are flat — all values are simple types: strings, integers, or booleans. There are no nested objects within a property value.

Core properties are the primary identity fields present on every entity of that type:

  • name — display name (string)
  • description — short summary (string)
  • notes — freeform notes (string)

Metadata properties are additional fields specific to the entity's role in production. They are organised into sections by production phase:

Section What it holds
Story Narrative details — objective, background, relationships, world-building context
Visual / Cinematic Appearance and framing — physical description, style, lighting, composition notes
Performance Acting and audio notes — tone, pacing, delivery
Editorial Post-production notes

All of these fields are strings. The platform doesn't interpret them structurally — they provide context to you and to the AI agent.

Variants

Characters, locations, and props support variants — alternate versions of a base entity. A variant inherits all Story properties from its base (read-only) and can independently override Visual or Cinematic properties.

Use variants for costume changes, time-of-day lighting conditions, or story-state differences (before vs after an event).

Entity IDs

Entity IDs use only lowercase letters, digits, and hyphens (1–50 characters). You supply the ID when creating an entity. IDs cannot be changed after creation and appear in the entity's path, so choose something meaningful and stable.