supermemory·Guides

How do I build user profiles for LLM personalization?

Reviewed Docs for this setup

A user profile is the set of facts a model should know on every turn, whatever the question: name, role, preferences, timezone, what the user is working on now. Search cannot deliver those, because "plan my trip to Japan" is nowhere near "call me Dhravya". supermemory maintains a profile per namespace as you ingest, split into static facts, dynamic recent context and topical buckets, returned by one call to POST /ns/{namespace}/profile and attached to the prompt. Mem0 and Zep expose user memories and facts you query; Honcho models users from their messages; the do-it-yourself version is a summary you regenerate and store.

Why not just search?

Semantic search returns what is similar to the query. It is right for "what did we decide about the migration?" and wrong for facts that should colour every answer, because there is rarely a query close to them. A name preference, a timezone, a tone the user asked for: none of those will surface when the user asks for help with a pull request. A profile is attached once and rides along with every prompt, with no extra round trip and no chance of the query missing it.

What is in a profile?

PartWhat it holdsExample
staticLong-lived facts about the userGoes by Dhravya; Python developer; prefers dark mode
dynamicRecent context, each entry dated[2026-11-08] Debugging auth issues in the API integration
bucketsFacts grouped by topic you define; preferences is always theregoals: ship the onboarding flow by December

Each entry carries the memory's ID, so a wrong fact can be forgotten directly. Profiles are built as content is ingested; nothing is set up. If you read one right after adding, pass dreaming: "instant" on the add, otherwise a fresh namespace can show an empty profile for a few minutes.

How do I get a profile with supermemory?

  1. Add the user's conversations, documents or events to their namespace. The namespace is the user ID (or any entity: an agent, a team, an organisation).
  2. Fetch the profile with one call. It takes no query; add a search next to it when you also want memories ranked for the current message.
  3. Put the static facts and dynamic context at the top of the system prompt.
import Supermemory from "supermemory";
const supermemory = new Supermemory();

await supermemory.add("user_123", {
  content: "Call me Dhravya, not my full name. I'm in Pacific time and prefer short answers.",
  dreaming: "instant",
});

const { profile } = await supermemory.profile("user_123");

const system = [
  "About this user:", ...profile.static.map((m) => m.memory),
  "Current context:", ...profile.dynamic.map((m) => m.memory),
].join("\n");
curl -X POST "https://api.supermemory.ai/ns/user_123/profile" \
  -H "Authorization: Bearer $SUPERMEMORY_API_KEY"

In Python it is client.profile("user_123").profile with the same static, dynamic and buckets fields.

How do I use profiles in the Vercel AI SDK?

withSupermemory(model, { namespace, id }) from @supermemory/tools/ai-sdk fetches the profile and prepends it on every call; its default mode is profile. The AI SDK guide shows the setup.

How do I keep a profile to one topic or source?

Profiles take the same metadata filter as search, so a support agent can read a profile built only from support tickets, not from a wiki synced into the same namespace. buckets restricts the bucket section to the names you ask for, up to 50; define your own at the organisation level in the console or per namespace with profiles.setBuckets().

Which options exist?

OptionWhat you getMaintained for youOne call per turnWhere it runs
supermemory profilesStatic facts, dated dynamic context and topical buckets per namespaceYes, updated on ingest, with forgettingYesHosted, local binary, or your cloud on Scale and Enterprise
Mem0Memories per user you search or listYes, extracted from conversationsA search or a listOpen source, self-hosted, or Mem0 platform
ZepFacts about the user from a temporal graphYesA context block from the graphGraphiti is open source; Zep Cloud hosted
HonchoA representation of each user reasoned from their messages, queried in natural language through its chat endpointYesA chat queryOpen source (AGPL 3.0), or Honcho Cloud
A summary you maintainWhatever your summariser writesNo, you re-run itYes, if you store itYour infrastructure

Questions

What is a user profile in supermemory?

A short, always-current summary of a namespace: static long-term facts, dated dynamic recent context, and facts grouped into buckets. It is built automatically from everything added to the namespace.

Do I have to run anything to keep profiles updated?

No. Profiles update as content is ingested. For an immediate update after an add, pass dreaming: "instant".

Can a profile be for something other than a user?

Yes. A namespace can be any entity: an agent, a team, an organisation or a customer. Each gets its own profile.

How do I remove a wrong fact from a profile?

Each profile entry carries its memory ID; forget it through the memory operations endpoint and the profile no longer includes it.

How is this different from Mem0's user memories?

Mem0 returns memories you search or list. A supermemory profile is a maintained summary returned in one call without a query, alongside search for query-specific memories.

supermemory facts from the user-profile concept, recall and bucket pages in the docs. Mem0, Zep and Honcho from their documentation and repositories. Checked November 10, 2026. The setup steps restate the docs page for this integration; when the two differ, the docs are current.

YOUR PRIVACY

Change or withdraw any time via Cookie settings in the footer. Read our cookie notice.