OutOfMemory Docs

Memory Types

Reference for the 6 memory categories in Shot.

Every memory in Shot is classified into one of six types. You can specify the type when adding a memory, or let the system auto-classify it based on the content.

Types at a glance

TypeDescriptionExample
decisionA choice the team made"We decided to use PostgreSQL over MongoDB for the main database."
factA known truth about the project"The API uses snake_case for all response fields."
procedureA step-by-step process"To deploy to production: merge to main, wait for CI, then approve the Railway deploy."
insightA lesson learned or observation"Query performance degrades significantly above 10k rows without an index on created_at."
contextBackground information"The billing module was built by the previous team and uses Stripe Connect."
logA timestamped event or status update"2024-03-15: Migrated from Redis to Upstash for session storage."

When to use each type

Decision

Use for choices that affect how the team works. Decisions are especially valuable because they prevent re-debating resolved topics.

  • Architecture choices (framework, database, hosting)
  • Process decisions (branching strategy, review policy)
  • Product decisions (feature scope, design direction)

Fact

Use for objective truths about the project that team members need to reference frequently.

  • Technical constraints (API formats, naming conventions)
  • Environment details (URLs, credentials locations, config)
  • Team structure (who owns what)

Procedure

Use for repeatable processes. These are most useful when a new team member or AI assistant needs to perform a task correctly.

  • Deployment steps
  • Setup instructions
  • Review checklists

Insight

Use for non-obvious learnings that could save time in the future.

  • Performance observations
  • Debugging discoveries
  • User behavior patterns

Context

Use for background information that helps understand why things are the way they are.

  • Historical context (who built what, when, and why)
  • External dependencies and their quirks
  • Business constraints

Log

Use for time-stamped events that create a timeline of changes.

  • Migration records
  • Incident notes
  • Release summaries

Auto-classification

When you add a memory without specifying a type, Shot uses an LLM to classify it automatically. The classification uses the content and context to pick the best-fit type.

You can always override the type manually via the type parameter in add_memory or edit it from the dashboard.

Deduplication and contradictions

Shot automatically detects when a new memory duplicates or contradicts an existing one:

  • Duplicate — If you add "We use PostgreSQL" twice, the second one is skipped.
  • Update — If you add "We use PostgreSQL with pgvector for embeddings" after "We use PostgreSQL", the memories are merged.
  • Supersede — If you add "We migrated to MongoDB" after "We use PostgreSQL", the old fact is marked as superseded.

This keeps your memory store clean without any manual maintenance.

Memory Types