Skip to content
Memory & Knowledge

Memory Storage and Search

5 min read

Store knowledge, search memories, and manage what Armbrain knows about your clients.


Memory Types

Every memory has a type that describes what kind of knowledge it captures:

TypeWhat It CapturesExample
decisionA choice made by or for the client"Pausing LinkedIn ads through Q2"
preferenceA stated or observed preference"Prefers casual, direct brand voice"
campaign_outcomeResults and learnings from a campaign"Email open rate 34%, curiosity gap subject lines won"
commitmentAn action item someone committed to"Ben will send revised messaging by Friday"
stakeholderInformation about a key person"Sarah Chen, VP Marketing, owns rebrand brief"
factA general fact about the client"Series B, 45 employees, developer-first API platform"
questionAn open question to investigate or revisit"Do we need FTC compliance review for the testimonial ads?"

Storing Memories

Structured storage (store_memory)

Use "remember" for important context where you want to specify the type:

"Remember: Sarah prefers async updates via Slack, never call her unscheduled"

Armbrain stores the note and automatically classifies it (here, as a preference). You can be explicit about the type when you want to:

"Store as a decision: We're pausing LinkedIn ads through Q2"

You can guide how it's stored:

  • Type -- say "store as a decision / commitment / stakeholder note," or let Armbrain classify it for you.
  • Tags -- add labels to make it easier to find later: "tag this as budget."
  • Sensitivity -- to keep something out of client handoffs and client-facing briefs, mark it with words like "confidential," "eyes only," or "do not share." Armbrain also flags sensitive details, such as personal contact information. There is no separate "private" switch -- the wording does the work.

Quick capture

For speed between meetings, use a quick note:

"Quick note: Board meeting moved to April 15"

Quick notes skip classification. They’re searchable as soon as you capture them.

When to use which:

  • "Remember:" -- when you want Armbrain to classify and structure it well.
  • "Quick note:" -- when you're mid-something and just need it captured fast.

Searching Memories

"What did we decide about the rebrand?"

Armbrain searches by meaning, not keywords -- so "marketing spend" also finds notes about "ad budget." It finds relevant memories for the active client. Recent ones rank a little higher when relevance is close. It leaves out poor matches.

Narrow it down:

"Show me all campaign outcomes"
"Search for stakeholder information about Sarah"

Want more:

"Show me more results"

Sensitive memories: What shows up depends on the viewer's role. You (owner) and editors see sensitive context. VAs and viewers see only open client context. When you produce a client handoff, sensitive notes are stripped from the deliverable automatically.


Marking Commitments as Done

When an action item is complete:

"Mark the media plan as done"

Armbrain finds the matching open commitment by meaning. If more than one could match, it asks you to pick the right one.

Completed commitments don't disappear. They show as checked off (- [x]) in future meeting briefs so you can see progress.


Hiding Bad Memories

If an extraction was wrong or a memory is outdated:

"Hide that memory about LinkedIn ads"

This sets is_current = false on the memory. It no longer appears in search, meeting prep, or campaign history. The data remains in the database and can be restored via direct DB access.

To correct a memory: Hide the wrong one, then store the correct version.


How Deduplication Works

Armbrain prevents duplicate memories at two levels:

  1. Content hash dedup -- during ingestion, the same chunk of text is never processed twice (SHA-256 hash check)
  2. Smart dedup -- when you store something similar to an existing memory, Armbrain updates it instead of creating a duplicate

You can paste the same transcript twice without creating duplicates.


Content Safety (Guardrails)

Guardrails check all memory content before saving.

What gets blocked (you'll see a clear error):

  • A note over ~10,000 characters, an uploaded document over ~50,000, or a transcript over ~150,000 characters. Split large pastes into pieces.
  • Corrupted or garbled text
  • Content too large for the processing budget

If something is blocked, Armbrain tells you why. See the Error Handling guide for details.

What gets flagged (stored normally, with a note):

  • Personal data detected (Social Security numbers, credit card numbers, phone numbers): stored and automatically marked sensitive. This is expected -- you may intentionally store a client contact. It's not blocked, just hidden from VAs/viewers and kept out of client-safe handoffs.
  • Prompt injection patterns (e.g., injected instructions in pasted content): Logged for monitoring. Content is always accepted. If you're pasting meeting notes or email threads that happen to contain phrases like "ignore previous instructions," don't worry — it's flagged but never rejected.

Flagged content is tagged automatically. No action is needed.


Key Details

  • Maximum content length: about 10,000 characters per memory, 50,000 for uploaded documents, and 150,000 for meeting transcripts
  • Search fallback: In the rare case the search engine is briefly unavailable, your notes are still saved -- they just may not surface in search until it recovers. They still show up in meeting prep.
  • Confidence values: 1.0 for user-provided memories, 0.8 for quick notes and type-defaulted stores, 0.0-1.0 for extraction pipeline results.
  • Time decay: Search results are adjusted for recency. A memory from last week with 0.85 similarity will rank higher than a 6-month-old memory with 0.87 similarity.
  • Sensitivity tagging: Memories containing PII or confidential details are auto-tagged sensitive or cmo-only. Sensitive and internal CMO memories remain available to owner/editor roles, but they are excluded from VA/viewer reads and client-safe handoff packages.