[supermemory](https://supermemory.ai/) · Guides

# How do I build user profiles for LLM personalization?

Reviewed November 10, 2026 [Docs for this setup](https://supermemory.ai/docs/concepts/user-profiles) 

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?

| Part    | What it holds                                                  | Example                                                     |
| ------- | -------------------------------------------------------------- | ----------------------------------------------------------- |
| static  | Long-lived facts about the user                                | Goes by Dhravya; Python developer; prefers dark mode        |
| dynamic | Recent context, each entry dated                               | \[2026-11-08\] Debugging auth issues in the API integration |
| buckets | Facts grouped by topic you define; preferences is always there | goals: 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](https://supermemory.ai/guides/vercel-ai-sdk-persistent-memory/) 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?

| Option                 | What you get                                                                                                      | Maintained for you                      | One call per turn              | Where it runs                                               |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------- | --------------------------------------- | ------------------------------ | ----------------------------------------------------------- |
| supermemory profiles   | Static facts, dated dynamic context and topical buckets per namespace                                             | Yes, updated on ingest, with forgetting | Yes                            | Hosted, local binary, or your cloud on Scale and Enterprise |
| Mem0                   | Memories per user you search or list                                                                              | Yes, extracted from conversations       | A search or a list             | Open source, self-hosted, or Mem0 platform                  |
| Zep                    | Facts about the user from a temporal graph                                                                        | Yes                                     | A context block from the graph | Graphiti is open source; Zep Cloud hosted                   |
| Honcho                 | A representation of each user reasoned from their messages, queried in natural language through its chat endpoint | Yes                                     | A chat query                   | Open source (AGPL 3.0), or Honcho Cloud                     |
| A summary you maintain | Whatever your summariser writes                                                                                   | No, you re-run it                       | Yes, if you store it           | Your 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](https://supermemory.ai/docs/concepts/user-profiles); when the two differ, the docs are current.

[All guides](https://supermemory.ai/guides/)
