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
| Type | Description | Example |
|---|---|---|
| decision | A choice the team made | "We decided to use PostgreSQL over MongoDB for the main database." |
| fact | A known truth about the project | "The API uses snake_case for all response fields." |
| procedure | A step-by-step process | "To deploy to production: merge to main, wait for CI, then approve the Railway deploy." |
| insight | A lesson learned or observation | "Query performance degrades significantly above 10k rows without an index on created_at." |
| context | Background information | "The billing module was built by the previous team and uses Stripe Connect." |
| log | A 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.